天天看點

ACM輸入輸出格式總結

輸入問題:

一,輸入不說明有多少個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");
 }