C程序作业提问(程序填空)

C程序作业提问(程序填空),第1张

#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,这样就会导致数组下标不是整数,所以会出错:

>> x

x =

    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简单程序提问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9485482.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存