#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
long num;
long sum=0;
int status;
printf("请输入你想要求和的数字(输入q退出):");
status=scanf("%ld",&num);
while(status==1)
{sum=sum+num;
printf("请输入你想要求和的数字(输入q退出):");
status=scanf("%ld",&num);
}
printf("和为%ld",sum);
return 0;
}
scanf()函数返回成功读取项的数量。如果scanf()成功读取到一个整数,就把该数存入num并返回1,随后返回值将被赋给status。这样做同时更新了num和status的值,如果用户输入的不是数字,scanf()会读取失败并返回0。
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
long num;
long sum=0;
int status;
printf("请输入你想要求和的数字(输入q退出):");
status=scanf("%ld",&num);
while(status=1)
{sum=sum+num;
printf("请输入你想要求和的数字(输入q退出):");
status=scanf("%ld",&num);
}
printf("和为%ld",sum);
return 0;
}
while(status==1) 变成 while(status=1)程序的循环一直循环,如果scanf()读取指定类型的输入形式的输入失败,就把无法读取的输入留在输入列表中 ,供下次读取。当scanf()把q作为整数读取失败时失败了,他把q留下。在下次循环时,scanf()从上次读取失败的地方(q)开始读取,scanf()把q作为整数读取,又失败了。