1. 程式人生 > >no.1

no.1

n) 操作 判斷 += getchar shel tdi 兩個 單引號

#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”的字,等待用戶按一個鍵,然後返回。

  

no.1