两道C语言程序题求解?

2024-11-17 12:41:42
推荐回答(3个)
回答1:

第二题按照2楼的方法就可以了。上俩楼的第一个我实验了下好像是不对的,题目是每门10炮,而不是10S内的炮。

第一个我是这么编的

#include 

#include 

void main()

{unsigned char i,j,k;

i=k=j=0;

while(i++!=27)

{if(((i/3)&&(i%3==0))|((i/5)&&(i%5==0))|((i/7)&&(i%7==0)))

j++;

}

while(i++!=45)

{if(((i/5)&&(i%5==0))|((i/7)&&(i%7==0)))

j++;

}

 while(i++!=63)

{if((i/7)&&(i%7==0))

j++;

}

j++;

printf("the sum of salvo is %d",j);

getchar();

}

回答2:

2)不采用函数就原始暴力地从头开始逐个遍历字符串。对原始数组个数从0索引到最后一个字符使用循环:当字符在'A'-'Z'或者在'a'-'z'中时将该字符存到另一个定义了空间大小的字符数组中并使该字符数组索引+1,直到最后给该新得到的数组添加结束符'\0'并输出即可
3)一样从头开始遍历数组,当当前字符处于'a'-'z'时,将该字符值-32(大写字母比小写字母ASC值小32)即可,最后输出

回答3:

(2)
const char *str = "12Bou*nd678le";
char new_str[20];
int i, j;
for(i=0, j=0; str[i]; i++) {
if(str[i]>='a'&&str[i]<='z' || str[i]>='A'&&str[i]<='Z') {
new_str[j++] = str[i];
}
}
new_str[j] = '\0';
printf(new_str);

(3)
char str[80];
int i;
gets(str);
for(i=0; str[i]; i++)
if(str[i]>='a' && str[i] <= 'z')
str[i] -= 32;
printf(str);