|
10鱼币
int main()
{
int num = 0;
long sum = 0L; // 0L表示类型为long的0
int status;
do
{
printf("请输入合法的数字:");
sum = sum + num;
status = scanf("%d", &num);
} while(status == 1);
printf("结果是:%ld\n", sum);
return 0;
}
上面这一段是课后作业答案,我试了一下,程序运行以后可以输入一个数字按一下回车之后接着输入数字
但是我自己写的无法做到输入一个数字按下回车可以再输入,直到输入字符再结束运行,如下
#include<stdio.h>
int main()
{
int i,j,sum=0;
printf("请输入合法的数字:");
scanf("%c",&i);
j=i-48;
while(j<=9&&j>=0)
{
printf("请输入合法的数字:");
sum=sum+j;
scanf("%c",&i);
j=i-48;
}
printf("%d",sum);
}
有哪些不同?另外扩展知识的scanf没看懂,没搞明白scanf的返回值,希望大佬可以解答
最后再问一下下面的代码格式怎么搞出来的,不想再复制黏贴了
本帖最后由 jhq999 于 2021-9-9 23:07 编辑
网上摘抄的:
scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时,返回值为n-1
%c,只给变量i第一个字节赋值,把i=0;就可以了,养成尽量给变量赋个初值的习惯,一般都为0
- int main()
- {
- int i=0,j,sum=0;
- printf("请输入合法的数字:");
- scanf("%c",&i);
- getchar();我这个是VS2012所以必须用getchar();接收上面scanf()遗留下的'\n'.要不然下面的scanf()直接接受一个'\n'向下运行。
- j=i-48;
- while(j<=9&&j>=0)
- {
- printf("请输入合法的数字:");
- sum=sum+j;
- i=0;
- scanf("%c",&i);
- getchar();//我这个是VS2012所以必须用getchar();接收上面scanf()遗留下的'\n'.
- j=i-48;
- }
- printf("%d",sum);
- }
复制代码
|
-
最佳答案
查看完整内容
网上摘抄的:
scanf()函数返回的值为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
当scanf函数的第一个变量格式不正确时返回值为0,即,当scanf函数的第n个变量格式不正确时,返回值为n-1
%c,只给变量i第一个字节赋值,把i=0;就可以了,养成尽量给变量赋个初值的习惯,一般都为0
|