
#include <stdioh>
int main(void)
{
int x, sum(0);
int repeat, loop=0;
scanf("%d", &repeat);
while(loop++<=repeat){
sum = 0;
scanf("%d", &x);
while(x>0){
if(x%2){ // 奇数
sum += x;
}
scanf("%d", &x);
}
printf("The sum of the odd number is %d\n", sum);
}
}
程序的作用是不断读取字符,直到读取到字符?号结束程序,并把该字符的前一个ASCII 码值打印出来
首先本身程序有个错误
while((c=getchar())!=''putchar(--c); 里面少了一个刮号应改为
while((c=getchar())!='')putchar(--c);
while((c=getchar())!='')我来解释下这句话的意思吧,楼主仔细看
每一次新的循环都会getchar()一个字符进来,而循环的条件却是C!=‘?’
当它读进来的不是?号,条件 C!=‘?’才成立,才会继续getchar()。
当读进一个?号,就导致C!=‘?’不成立,就不会再getchar()。明白了吧
所以楼主输入YN时,在读取到第一个?号时,循环就结束了,程序根本就没
理会后面的N
如果你问 ?号哪里去了 其实还是存储在变量C里面,只不过因为条件不成立,不允许打印出来
可以在程序末尾添加一句putchar(c);就可以看到了
例子:
#include<stdioh>
main()
{ char c;
while((c=getchar())!='')putchar(--c);
//
putchar(c);
}
实验数据I:
输入 YN 回车 输出X?
不就把存储在字符变量c里面的?号打印出来了
出错原因:
浮点数计算误差导致。经过几步循环之后,x并不精确等于06,而x/step+1也不是整数7,这样就会导致数组下标不是整数,所以会出错:
>> xx =
06000
>> num2str(x,'%16g')
ans =
06000000000000001
>> num2str(06,'%16g')
ans =
06
>> num2str(x/step+1,'%16g')
ans =
7000000000000001
MATLAB中的函数计算直接用数组运算就可以了,例如
x=0:01:2;y=2x;
如果涉及到向量的乘、除、乘方运算,相应的运算符应使用点运算。
以上就是关于C程序作业提问(程序填空)全部的内容,包括:C程序作业提问(程序填空)、C程序提问.、MATLAB简单程序提问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)