輸入問題:
一,輸入不說明有多少個Input Block,以EOF為結束标志。
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a, &b) != EOF)
printf("%d\n",a+b);
}
說明 1.Scanf函數傳回值就是讀出的變量個數,如:scanf(“%d %d”, &a, &b );
如果a和b都被成功讀入整數,那麼scanf的傳回值就是2;
如果隻有a被成功讀入整數,傳回值為1;
如果a和b都未被成功讀入整數,傳回值為0;
如果遇到錯誤或遇到end of file,傳回值為EOF 2.EOF是一個預定義的常量,等于-1。
二,輸入一開始就會說有N個Input Block,下面接着是N個Input Block。
#include <stdio.h>
int main()
{
int n,i,a,b;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&a, &b);
printf("%d\n",a+b);
} }
三, 輸入不說明有多少個Input Block,但以某個特殊輸入為結束标志。
while( cin >> n && n != 0 )
{
....
}
四,輸入是一整行的字元串的
C文法 char buf[20];gets(buf);
C++ 用string buf儲存,getline(cin,buf);
用char buf[255]儲存,cin.getline(buf,255);
scanf(“%s%s”,str1,str2),在多個字元串之間用一個或多個空格分隔; 若使用gets函數,應為gets(str1); gets(str2); 字元串之間用回車符作分隔。 通常情況下,接受短字元用scanf函數,接受長字元用gets函數。 而getchar函數每次隻接受一個字元,經常c=getchar()這樣來使用。
getline是一個函數,它可以接受使用者的輸入的字元,直到已達指定個數,或者使用者輸入了特定的字元。它的函數聲明形式(函數原型)如下:
istream&getline(charline[], intsize, char endchar= '\n');
不用管它的傳回類型,來關心它的三個參數: char line[]:就是一個字元數組,使用者輸入的内容将存入在該數組内。 int size : 最多接受幾個字元?使用者超過size的輸入都将不被接受。 char endchar :當使用者輸入endchar指定的字元時,自動結束。預設是回車符。
輸出問題: 一,一個Input Block對應一個Output Block,Output Block之間空行。
#include <stdio.h>
int main()
{
int icase,n,i,j,a,sum;
scanf("%d",&icase);
for(i=0;i<icase;i++)
{
sum=0;
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&a);
sum+=a;
}
if(i<icase-1)
printf("%d\n\n",sum);
else
printf("%d\n",sum);
}
}
for (k=0;k<count;k++)
{
while (…)
{
printf(" %d\n",result);
}
if (k!=count-1)
printf("\n");
}