zhanjunlihai 2023-10-28 10:56 采纳率: 24.7%
浏览 52

scanf 输入逗号,系统默认会怎么处理呢


#include <stdio.h>
int main()
{int i,k,sum=0     ,n     ;
  i=1;
 scanf("%d",&n);  
while(        i<=n      )
 {  scanf("%d",&k);
     sum=sum+k;
              i++;}
 printf("sum=%d\n",sum);
 return 0;}

如果输入格式 没有逗号,我们输入的时候输入了逗号,会不会自动读取逗号的acscii码 进行计算呢?还是会怎么样?
比如 输入两数据,进行相加
我输入了 3,4 计算结果 是6
4,5 计算结果 8
他是不是吧逗号座位第二个整形数据了?还是?相当于 两个数据都是 我们输入的第一个数?

  • 写回答

2条回答 默认 最新

  • 酷爱码 优质创作者: Java技术领域 2023-10-28 11:59
    关注

    根据你提供的代码,如果输入格式没有逗号,程序将无法正确读取数据并进行计算。在C语言中,scanf函数按照给定的格式字符串解析输入,并将解析后的值存储到指定的变量中。

    在你的代码中,scanf("%d", &n)用于读取一个整数值,并将其存储到变量n中。如果输入是"3,4",scanf函数会尝试将整数3存储到n中。由于逗号不符合%d的格式,scanf函数会在遇到逗号时停止解析输入,并且逗号及其后面的字符将保留在输入缓冲区中。

    接下来,循环中的第一次scanf("%d", &k)将尝试读取下一个整数值,即4。由于输入缓冲区中的下一个字符是逗号,scanf函数会失败并返回0,变量k的值将保持不变。

    因此,程序输出的结果将是初始的sum值,即0。

    如果你想让程序能够正确读取逗号分隔的两个整数值,你可以修改代码如下:

    #include <stdio.h>
    
    int main() {
        int i, k, sum = 0, n;
        i = 1;
        scanf("%d,%d", &n, &k);
        sum = n + k;
        printf("sum=%d\n", sum);
        return 0;
    }
    
    

    在修改后的代码中,scanf函数的格式字符串为"%d,%d",表示要读取两个整数值,它们之间用逗号分隔。因此,输入"3,4"将被正确解析,并计算出结果为7。

    总结起来,如果你希望程序能够正确读取逗号分隔的输入数据,你需要相应地调整scanf函数的格式字符串,使其与输入数据的格式匹配。否则,程序将无法正确解析输入数据。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月28日