zyxmm 发表于 2022-8-2 19:40:40

为什么输入数字求和无法输入字符结束?

file:///C:/Users/86155/Pictures/Saved%20Pictures/%E6%8D%95%E8%8E%B7.PNG
file:///C:/Users/86155/Pictures/Saved%20Pictures/%E6%8D%95%E8%8E%B71.PNG

临时号 发表于 2022-8-2 19:53:45

你这个是本地链接,除了你我们都看不到

aaron0919 发表于 2022-8-2 19:59:33

要上传图片选第三个标志

临时号 发表于 2022-8-2 20:05:43

新鱼油发图片的方法->https://fishc.com.cn/thread-168190-1-1.html

zyxmm 发表于 2022-8-2 21:01:50

临时号 发表于 2022-8-2 20:05
新鱼油发图片的方法->https://fishc.com.cn/thread-168190-1-1.html

那个上传图片的网站没了

zyxmm 发表于 2022-8-2 21:02:26

#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;
}

临时号 发表于 2022-8-2 21:07:17

zyxmm 发表于 2022-8-2 21:01
那个上传图片的网站没了

还有啊https://imgtu.com/

zyxmm 发表于 2022-8-2 21:10:12

https://imgtu.com/i/vVAtIA
代码在上面,这是运行结果

zyxmm 发表于 2022-8-2 21:11:14

https://imgtu.com/i/vVAtIA
运行结果

临时号 发表于 2022-8-2 21:17:56

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;
}

zyxmm 发表于 2022-8-3 16:24:37

临时号 发表于 2022-8-2 21:17
第10行,是=不是==

赋值给sum,应该没错

临时号 发表于 2022-8-3 16:27:34

zyxmm 发表于 2022-8-3 16:24
赋值给sum,应该没错

一个=是赋值,两个==是判断是否相等

zyxmm 发表于 2022-8-3 17:09:56

临时号 发表于 2022-8-3 16:27
一个=是赋值,两个==是判断是否相等

第9行是一个=,第十行没有==

临时号 发表于 2022-8-3 18:02:55

zyxmm 发表于 2022-8-3 17:09
第9行是一个=,第十行没有==

status==scanf("%d",&i);

aaron0919 发表于 2022-8-3 21:07:11

zyxmm 发表于 2022-8-2 21:02


第十行,你写成了比较,status就永远是原来的随机值

第12行,你定义的是
如果输入的数是合法的,就重输入
do
{
ok=scanf("%d",&n);
}while(!ok)

等价于while(! scanf("%d",&n))

zyxmm 发表于 2022-8-4 19:09:56

临时号 发表于 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;
}

zyxmm 发表于 2022-8-4 19:10:30

上面是已经换了的

临时号 发表于 2022-8-4 19:35:32

本帖最后由 临时号 于 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没有被执行

临时号 发表于 2022-8-4 19:37:56

zyxmm 发表于 2022-8-4 19:09
还要把10行和11行换一下才能正常运行,为什么?

还要把i的初值设为0

zyxmm 发表于 2022-8-5 10:04:55

临时号 发表于 2022-8-4 19:35
难道你输入非整数后,scanf就就读不到一个整数了吗,不它会给你一个整数,然后就累加到sum里面了,导致结果 ...

懂了,谢谢
页: [1]
查看完整版本: 为什么输入数字求和无法输入字符结束?