为什么在连续输入两个字符的时候程序就结束了

#include <stdio .h>
int main ()
{
float num = 0;
double sum =0;
int status ;
do
{
printf ("请输入合法的数字:");
do
{
sum =sum +num ;
status =scanf ("%f",&num);
}while (getchar () != '\n' && status == 1);
}while (status == 1);
printf ("结果是:%2lf \n",sum );
return 0;
}

不是连续输入两个字母程序会结束,就是输入一个字母程序也会结束。

int main()
{
    float num = 0;
    double sum = 0;
    int status;
    
    // 这个 do 循环用于读取多行数据
    do {
        printf("Input number:");
        
        // 这个 do 循环用于读取一行上的多个数
        do {
            sum = sum + num;
            
            // 这句明确是读取浮点数,当读取到字母时, scanf 返回 0,则status == 0,退出循环。
            status = scanf("%f", &num);            
            
        }while((getchar() != '\n') && (status == 1));
        
    }while(status == 1);
    
    printf("Result: %2lf\n", sum);    // 猜测这里输出是要保留两位小数,则格式应为 %0.2lf
    
    return 0;
}


用字母作为退出循环的条件,这是必要的,否则就成死循环了。
参阅:scanf()函数详解 http://c.biancheng.net/cpp/html/34.html


status =scanf ("%f",&num);
改为
fflush(stdin);  //清空缓存
status =scanf ("%f",&num);

img


可以连续输入多个字符的。

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!