no.1

#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”的字,等待用户按一个键,然后返回。

  

转载于:https://www.cnblogs.com/ZZiz/p/7576866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值