#include <stdio.h>
#include <stdlib.h>
void main()
{
int i;
int sum = 0;
char ch;
printf("请输入一串整数和任意数目的空格: ");
while( scanf("%d", &i) == 1 )
{
sum += i;
while( (ch=getchar()) == ' ' )//这里两个单引号之间是一个空格
;
if( ch == '\n' )
{
break;
}
ungetc( ch, stdin );
}
printf("结果是: %d", sum);
printf("\n");
system("pause");
}
//编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行的任何位置。
//当用户按下键盘的Enter键时,数据输入结束。程序自动对所有的整数进行求和并打印结果
//
-1::判断输入的是不是整数,如果是整数,那么则加到总数中来
-2:判断输入的是不是空格,如果是空格,那么则不进行任何操作
-3:判断输入的空格是不是换行,如果这个空格是换行,那么则跳出这个判断
//
ungetc(ch, stdin);将你读到的字符回退到输入流中
比如上面的程序你先输入数字25,scanf读到i中,加到sum中,然后你再输入,调用ch=getchar(),发现ch不是' '也不是'\n',而是一个数,比如’7‘,显然这是你要继续加到sum中的数,要用scanf读到i中,但是你已经将这个'7'用getchar读出来了,只好用ungetc再把这个'7'给退回去
//
scanf()函数返回的值的意义为:正确按指定格式输入变量的个数;也即能正确接收到值的变量个数。
就是说正确接收值的个数。此时scanf("%d",&i)要求输入一个int数。因此只要按格式输入一个int数,结果都是1.
假如scanf("%d%d%d",&i,&j,&k)。你输入时10 20 d则scanf返回为2
//
if( ch == '\n' )
{
break;
}
当判断是换行时,则跳出。
//
system就是调用从程序中调用系统命令(和shell命令)。
system("pause")就是从程序里调用“pause”命令;
而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回。