为什么输入数字求和无法输入字符结束?
file:///C:/Users/86155/Pictures/Saved%20Pictures/%E6%8D%95%E8%8E%B7.PNGfile:///C:/Users/86155/Pictures/Saved%20Pictures/%E6%8D%95%E8%8E%B71.PNG 你这个是本地链接,除了你我们都看不到 要上传图片选第三个标志 新鱼油发图片的方法->https://fishc.com.cn/thread-168190-1-1.html 临时号 发表于 2022-8-2 20:05
新鱼油发图片的方法->https://fishc.com.cn/thread-168190-1-1.html
那个上传图片的网站没了 #include<stdio.h>
int main()
{
int i;
int sum=0L;
int status;
do
{
printf("请输入合法的数字:");
status==scanf("%d",&i);
sum=sum+i;
}while(status == 1);
printf("the sum is:%d\n",sum);
return 0;
} zyxmm 发表于 2022-8-2 21:01
那个上传图片的网站没了
还有啊https://imgtu.com/ https://imgtu.com/i/vVAtIA
代码在上面,这是运行结果
https://imgtu.com/i/vVAtIA
运行结果 zyxmm 发表于 2022-8-2 21:02
第10行,是=不是==
#include<stdio.h>
int main()
{
int i=0;
int sum=0;
int status;
do
{
sum=sum+i;
printf("请输入合法的数字:");
status=scanf("%d",&i);
}while(status == 1);
printf("the sum is:%d\n",sum);
return 0;
} 临时号 发表于 2022-8-2 21:17
第10行,是=不是==
赋值给sum,应该没错
zyxmm 发表于 2022-8-3 16:24
赋值给sum,应该没错
一个=是赋值,两个==是判断是否相等 临时号 发表于 2022-8-3 16:27
一个=是赋值,两个==是判断是否相等
第9行是一个=,第十行没有== zyxmm 发表于 2022-8-3 17:09
第9行是一个=,第十行没有==
status==scanf("%d",&i); zyxmm 发表于 2022-8-2 21:02
第十行,你写成了比较,status就永远是原来的随机值
第12行,你定义的是
如果输入的数是合法的,就重输入
do
{
ok=scanf("%d",&n);
}while(!ok)
等价于while(! scanf("%d",&n)) 临时号 发表于 2022-8-3 18:02
status==scanf("%d",&i);
还要把10行和11行换一下才能正常运行,为什么?
#include<stdio.h>
int main()
{
int i;
int sum=0;
int status;
do
{
printf("请输入合法的数字:");
sum=sum+i;
status=scanf("%d",&i);
}while(status == 1);
printf("the sum is:%d\n",sum);
return 0;
} 上面是已经换了的 本帖最后由 临时号 于 2022-8-4 19:44 编辑
zyxmm 发表于 2022-8-4 19:09
还要把10行和11行换一下才能正常运行,为什么?
难道你输入非整数后,scanf就就读不到一个整数了吗,不它会给你一个整数,然后就累加到sum里面了,导致结果不准确
所以,我把第10行和第11行换了一个位置,让累加先进行,反正只要把i=0,sum=0,第一次sum=sum+i结果就是0,不会对最终结果造成影响,这样用户输入非整数后会先进行循环判断,因为status=0,所以就跳出了循环,sum=sum+i没有被执行 zyxmm 发表于 2022-8-4 19:09
还要把10行和11行换一下才能正常运行,为什么?
还要把i的初值设为0 临时号 发表于 2022-8-4 19:35
难道你输入非整数后,scanf就就读不到一个整数了吗,不它会给你一个整数,然后就累加到sum里面了,导致结果 ...
懂了,谢谢
页:
[1]