中國大學MOOC-翁愷-C語言程序設計習題集-解答彙總

中國大學MOOC-翁愷-C語言程序設計習題集

PAT 習題集c++

02-0. 整數四則運算(10)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
喬林(清華大學)

本題要求編寫程序,計算2個正整數的和、差、積、商並輸出。題目保證輸入和輸出所有在整型範圍內。git

輸入格式:oop

輸入在一行中給出2個正整數A和B。測試

輸出格式:ui

在4行中按照格式「A 運算符 B = 結果」順序輸出和、差、積、商。spa

輸入樣例:
3 2
輸出樣例:
3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
#include <stdio.h>

int main()
{
	int A;
	int B;
	int X, Y, Z, W;
	scanf("%d %d", &A, &B);
	X = A + B;
	Y = A - B;
	Z = A * B;
	W = A / B;
	printf("%d + %d = %d\n" ,A, B, X);
	printf("%d - %d = %d\n", A, B, Y);
	printf("%d * %d = %d\n", A, B, Z);
	printf("%d / %d = %d\n", A, B, W);
	
    return 0;
}

 

02-1. 釐米換算英尺英寸(15)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
翁愷(浙江大學)

若是已知英制長度的英尺foot和英寸inch的值,那麼對應的米是(foot+inch/12)*0.3048。如今,若是用戶輸入的是釐米數,那麼對應英制長度的英尺和英寸是多少呢?別忘了1英尺等於12英寸。.net

輸入格式:設計

輸入在一行中給出1個正整數,單位是釐米。code

輸出格式:blog

在一行中輸出這個釐米數對應英制長度的英尺和英寸的整數值,中間用空格分開。

輸入樣例:
170
輸出樣例:
5 6
#include <stdio.h>

int main()
{
	int cm;
	scanf("%d", &cm);
	int foot = cm / 30.48;
	int inch = (cm/30.48 - foot) * 12;
	printf("%d %d", foot, inch);
    return 0;
 }

 

02-2. 而後是幾點(15)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
翁愷(浙江大學)

有時候人們用四位數字表示一個時間,好比1106表示11點零6分。如今,你的程序要根據起始時間和流逝的時間計算出終止時間。讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鐘數,計算當前時間通過那麼多分鐘後是幾點,結果也表示爲四位數字。當小時爲個位數時,沒有前導的零,即5點30分表示爲530。注意,第二個數字表示的分鐘數可能超過60,也多是負數。

輸入格式:

輸入在一行中給出2個整數,分別是四位數字表示的起始時間、以及流逝的分鐘數,其間以空格分隔。注意:在起始時間中,當小時爲個位數時,沒有前導的零,即5點30分表示爲530;流逝的分鐘數可能超過60,也多是負數。

輸出格式:

輸出四位數字表示的終止時間。題目保證起始時間和終止時間在同一天內。

輸入樣例:
1120 110
輸出樣例:
1310
#include <stdio.h>
int main()
{
	int i, j, x = 0, y, z;
	scanf("%d%d", &i, &j);
	if(i >= 1000)
	{
	       x = i / 1000;
	       y = (i % 1000) / 100;
	       z = (i %1000) %100;
	}
	else
	{
	       y = i / 100;
	       z = i % 100; 
	}
	int s = (10*x + y) * 60 + z;
	int n = s + j;
	i = n / 60 *100 + (n - ((n / 60 )* 60));
	printf("%d", i); 
	return 0;
}

 

02-3. 逆序的三位數(10)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
翁愷(浙江大學)

程序每次讀入一個正3位數,而後輸出按位逆序的數字。注意:當輸入的數字含有結尾的0時,輸出不該帶有前導的0。好比輸入700,輸出應該是7。

輸入格式:

每一個測試是一個3位的正整數。

輸出格式:

輸出按位逆序的數。

輸入樣例:
123
輸出樣例:
321

#include <stdio.h>
 
int main()
 {
 	int i;
 	scanf("%d", &i);
 	int a = i % 100 %10;
 	int b = i / 100;
 	int c = i %100 / 10;
 	i = a*100 + b + c*10;
 	printf("%d", i);
 	return  0;
 }

 

02-4. BCD解密(10)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
翁愷(浙江大學)

BCD數是用一個字節來表達兩位十進制的數,每四個比特表示一位。因此若是一個BCD數的十六進制是0x12,它表達的就是十進制的12。可是小明沒學過BCD,把全部的BCD數都看成二進制數轉換成十進制輸出了。因而BCD的0x12被輸出成了十進制的18了!

如今,你的程序要讀入這個錯誤的十進制數,而後輸出正確的十進制數。提示:你能夠把18轉換回0x12,而後再轉換回12。

輸入格式:

輸入在一行中給出一個[0, 153]範圍內的正整數,保證能轉換回有效的BCD數,也就是說這個整數轉換成十六進制時不會出現A-F的數字。

輸出格式:

輸出對應的十進制數。

輸入樣例:
18
輸出樣例:
12
 #include <stdio.h>
 
int main()
 {
 	int i;
 	scanf("%d", &i);
 	int t = i % 16 + i / 16 * 10;
 	printf("%d", t);
 	return 0;
 }

 

03-0. 超速判斷(10)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
楊起帆(浙江大學城市學院)

模擬交通警察的雷達測速儀。輸入汽車速度,若是速度超出60 mph,則顯示「Speeding」,不然顯示「OK」。

輸入格式:

輸入在一行中給出1個不超過500的非負整數,即雷達測到的車速。

輸出格式:

在一行中輸出測速儀顯示結果,格式爲:「Speed: V - S」,其中V是車速,S或者是Speeding、或者是OK。

輸入樣例1:
40
輸出樣例1:
Speed: 40 - OK
輸入樣例2:
75
輸出樣例2:
Speed: 75 - Speeding
#include <stdio.h>

int main()
{
  int i;
  scanf("%d", &i);
  if(i <= 60)
    printf("Speed: %d - OK", i);
  else
    printf("Speed: %d - Speeding", i);
  return 0;
}

 

03-1. 三天打魚兩天曬網(15)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard

中國有句俗語叫「三天打魚兩天曬網」。假設某人從某天起,開始「三天打魚兩天曬網」,問這我的在之後的第N天中是「打魚」仍是「曬網」?

輸入格式:

輸入在一行中給出1個不超過1000的正整數N。

輸出格式:

在一行中輸出此人在第N天中是「Fishing」(即「打魚」)仍是「Drying」(即「曬網」),而且輸出「in day N」。

輸入樣例1:
103
輸出樣例1:
Fishing in day 103
輸入樣例2:
34
輸出樣例2:
Drying in day 34
#include <stdio.h>

int main()
{
	int i;
	scanf("%d", &i);	
	if(i%5 <= 3 && i%5 != 0)
	     printf("Fishing in day %d", i);
	else 
	     printf("Drying in day %d", i);
	return 0;
} 

 

03-2. 用天平找小球(10)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard

三個球A、B、C,大小形狀相同且其中有一個球與其餘球重量不一樣。要求找出這個不同的球。

輸入格式:

輸入在一行中給出3個正整數,順序對應球A、B、C的重量。

輸出格式:

在一行中輸出惟一的那個不同的球。

輸入樣例:
1 1 2
輸出樣例:
C

# include <stdio.h>

int main()
{
     int A, B, C;
     scanf("%d%d%d",&A, &B, &C);
     if(A != B && B ==C)
           printf("A");
     else if(B != A && A == C)
           printf("B");
     else if(C != A && A == B)
           printf("C");
    return 0;
}

 

03-3. 12-24小時制(15)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
翁愷(浙江大學)

編寫一個程序,要求用戶輸入24小時制的時間,而後顯示12小時制的時間。

輸入格式:

輸入在一行中給出帶有中間的「:」符號(半角的冒號)的24小時制的時間,如12:34表示12點34分。當小時或分鐘數小於10時,均沒有前導的零,如5:6表示5點零6分。

提示:在scanf的格式字符串中加入「:」,讓scanf來處理這個冒號。

輸出格式:

在一行中輸出這個時間對應的12小時制的時間,數字部分格式與輸入的相同,而後跟上空格,再跟上表示上午的字符串「AM」或表示下午的字符串「PM」。如「5:6 PM」表示下午5點零6分。注意,在英文的習慣中,中午12點被認爲是下午,因此24小時制的12:00就是12小時制的12:0 PM;而0點被認爲是次日的時間,因此是0:0 AM

輸入樣例:
21:11
輸出樣例:
9:11 PM

#include <stdio.h>

int main()
{
	int i, j;
	scanf("%d:%d", &i, &j);
	if(i >= 0 && i < 12)
		printf("%d:%d AM", i, j);
	else if(i == 12)
		printf("%d:%d PM", i, j);
	else if(i == 24)
		printf("%d:%d AM", i-24, j);
	else
		printf("%d:%d PM", i-12, j);
		
	return 0;
}

 

03-4. 成績轉換(15)

時間限制
400 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
做者
沈睿(浙江大學)

本題要求編寫程序將一個百分制成績轉換爲五分製成績。轉換規則:

  • 大於等於90分爲A;
  • 小於90且大於等於80爲B;
  • 小於80且大於等於70爲C;
  • 小於70且大於等於60爲D;
  • 小於60爲E。

    輸入格式:

    輸入在一行中給出1個整數的百分制成績。

    輸出格式:

    在一行中輸出對應的五分製成績。

    輸入樣例:
    90
    
    輸出樣例:
    A
  • #include <stdio.h>
    
    int main()
    {
      int i;
      scanf("%d", &i);
      if(i >= 90)
        printf("A");
      else if(i < 90 && i >= 80)
        printf("B");
      else if(i < 80 && i >= 70)
        printf("C");
      else if(i < 70 && i >= 60)
        printf("D");
      else if(i < 60)
        printf("E");
        
      return 0;
    }

     
  • 04-0. 求符合給定條件的整數集(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    徐鏡春(浙江大學)

    給定不超過6的正整數A,考慮從A開始的連續4個數字。請輸出全部由它們組成的無重複數字的3位數。

    輸入格式:

    輸入在一行中給出A。

    輸出格式:

    輸出知足條件的的3位數,要求從小到大,每行6個整數。整數間以空格分隔,但行末不能有多餘空格。

    輸入樣例:
    2
    
    輸出樣例:
    234 235 243 245 253 254
    324 325 342 345 352 354
    423 425 432 435 452 453
    523 524 532 534 542 543
    
    #include <stdio.h>
    
    int main()
    {
    	int A, i, j, k, p = 0;
    	scanf("%d", &A);
    	for(i=A; i<A+4; ++i)
    		for(j=A; j<A+4; ++j)
    			for(k=A; k<A+4; ++k)
    			{
    				if(i != j && i != k && j != k)
    				{
    	
    					printf("%d", i*100+10*j+k);
    					p++;
    					if(p%6 == 0)
    						printf("\n");
    					else 
    						printf(" ");
    				}
    			}
    	
    	return 0; 
    }

     

    04-1. 水仙花數(20)

    時間限制
    2000 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    徐鏡春(浙江大學)

    水仙花數是指一個N位正整數(N>=3),它的每一個位上的數字的N次冪之和等於它自己。例如:153 = 13 + 53+ 33。本題要求編寫程序,計算全部N位水仙花數。

    輸入格式:

    輸入在一行中給出一個正整數N(3<=N<=7)。

    輸出格式:

    按遞增順序輸出全部N位水仙花數,每一個數字佔一行。

    輸入樣例:
    3
    
    輸出樣例:
    153
    370
    371
    407
    
    #include <stdio.h>
    
    int main()
    {
    	int n = 0, m = 0, l = 0, k = 0, roll = 0;
    	int min = 1, t = 0, sum = 0, sum1 = 0;
    	scanf("%d", &n);
    	m=n;
    	while(m > 1)   //built the minimum for n digit
    	{
    		min*=10;
    		m--;
    	}
    	t=min;
    	while(t < 10*min)  //all the number for n digit
    	{
    		roll = t;		
    		m = n;
    		sum = 1;
    		while(m > 0)
    		{
    			sum = sum*(roll%10);		
    			m--;
    		}
    		l = n;
    		while(l > 0)
    		{
    			roll = roll / 10;
    			k = roll % 10;
    			m = n;
    			sum1 = 1;
    			while(m > 0)
    			{
    				sum1 = sum1 * k;
    				m--;
    			}
    			sum = sum + sum1;
    			l--;
    		}	
    		if(t == sum)
    		{
    			printf("%d\n", t);
    		}
    		t++;
    	}
    	return 0;
    }

     

    04-2. 打印九九口訣表(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    徐鏡春(浙江大學)

    下面是一個完整的下三角九九口訣表:

    1*1=1   
    1*2=2   2*2=4   
    1*3=3   2*3=6   3*3=9   
    1*4=4   2*4=8   3*4=12  4*4=16  
    1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
    1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
    

    本題要求對任意給定的1位正整數N,輸出從1*1到N*N的部分口訣表。

    輸入格式:

    輸入在一行中給出一個正整數N(1<=N<=9)。

    輸出格式:

    輸出下三角N*N部分口訣表,其中等號右邊數字佔4位、左對齊。

    輸入樣例:
    4
    
    輸出樣例:
    1*1=1   
    1*2=2   2*2=4   
    1*3=3   2*3=6   3*3=9   
    1*4=4   2*4=8   3*4=12  4*4=16 
    
    #include <stdio.h> 
    
    int main(void) 
    { 
        int n; 
        scanf("%d", &n); 
        int i, j; 
        for (i=1; i<=n; i++) 
        { 
            for (j=1; j<=i; j++) 
                printf("%d*%d=%-4d", j, i, i*j); 
            puts(""); 
        } 
    
        return 0;
    }

    04-3. 統計素數並求和(20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    張彤彧(浙江大學)

    本題要求統計給定整數M和N區間內素數的個數並對它們求和。

    輸入格式:

    輸入在一行中給出2個正整數M和N(1<=M<=N<=500)。

    輸出格式:

    在一行中順序輸出M和N區間內素數的個數以及它們的和,數字間以空格分隔。

    輸入樣例:
    10 31
    
    輸出樣例:
    7 143
    
    
    #include <stdio.h>
    #include <stdbool.h> 
    int nums(int x)
    {
    	int i;
    	if(x ==1 ){
    		return 0;
    	}
    	for(i=2; i*i<=x; i++){
    		if(x%i == 0){
    	    	return 0;
            }
    	}
    	return 1;
    }
    int main()
    {
    	int m,n;
    	int j;
    	scanf("%d %d", &m, &n);
    	int count = 0;
    	int sum = 0;
    	for(j=m; j<=n; j++)
    	{
    		if(nums(j) == 1)
    		{
    			count++;
    			sum += j;
    		}
    	}
    	printf("%d %d", count, sum);
    	
    	return 0;
    }
    

     

    04-4. 猜數字遊戲(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard

    猜數字遊戲是令系統隨機產生一個100之內的正整數,用戶輸入一個數對其進行猜想,須要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(「Too big」),仍是小了(「Too small」),相等表示猜到了。若是猜到,則結束程序。程序還要求統計猜的次數,若是1次猜出該數,提示「Bingo!」;若是3次之內猜到該數,則提示「Lucky You!」;若是超過3次可是在N(>3)次之內(包括第N次)猜到該數,則提示「Good Guess!」;若是超過N次都沒有猜到,則提示「Game Over」,並結束程序。若是在到達N次以前,用戶輸入了一個負數,也輸出「Game Over」,並結束程序。

    輸入格式:

    輸入第一行中給出2個不超過100的正整數,分別是系統產生的隨機數、以及猜想的最大次數N。隨後每行給出一個用戶的輸入,直到出現負數爲止。

    輸出格式:

    在一行中輸出每次猜想相應的結果,直到輸出猜對的結果或「Game Over」則結束。

    輸入樣例:
    58 4
    70
    50
    56
    58
    60
    -2
    
    輸出樣例:
    Too big
    Too small
    Too small
    Good Guess!
    
    
     #include <stdio.h>
     
     int main()
     {
     	int n, times;
     	int i, t = 0;
     	scanf("%d %d", &n, ×);
     	while(1)
     	{
     		scanf("%d", &i);	
     	    ++t;
     		if(i == n && t == 1)
     		{
     			printf("Bingo!\n");
     			break;
    		}
    		else if(i < 0 || t > times )
    		{
    			printf("Game Over");
    			break;
    		}
    		else if(i == n && t > 1 && t <= 3 && t <= times)
    		{
    			printf("Lucky You!\n");
    			break;
    		}
    		else if(i > n)
    		{
    			printf("Too big\n");
    		}
    		else if(i < n && i > 0)
    		{
    			printf("Too small\n");
    		}
    		else if(i == n && t > 3 && t <= times)
    		{
    			printf("Good Guess!\n");
    			break;		
    		}
    	}
     	
     	return 0;
    }
    

     

    05-0. 求序列前N項和(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    張彤彧(浙江大學)

    本題要求編寫程序,計算序列 2/1+3/2+5/3+8/5+... 的前N項之和。注意該序列從第2項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子。

    輸入格式:

    輸入在一行中給出一個正整數N。

    輸出格式:

    在一行中輸出部分和的值,精確到小數點後2位。題目保證計算結果不超過雙精度範圍。

    輸入樣例:
    20
    
    輸出樣例:
    32.66
    
    #include <stdio.h>
    
    int main()
    {
    	int n = 1, i;
    	double a = 2, b = 1, t, s = 0;
    	scanf("%d", &n);
    	for(i=1; i<=n; ++i)
    	{
    		t = a;
    		s += a/b;
    		a += b;
    		b = t;
    	}
    	printf("%.2lf", s);
    
    	return 0;
    }

     

    05-1. 約分最簡分式(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    翁愷(浙江大學)

    分數能夠表示爲「分子/分母」的形式。編寫一個程序,要求用戶輸入一個分數,而後將其約分爲最簡分式。最簡分式是指分子和分母不具備能夠約分的成分了。如6/12能夠被約分爲1/2。當分子大於分母時,不須要表達爲整數又分數的形式,即11/8仍是11/8;而當分子分母相等時,仍然表達爲1/1的分數形式。

    輸入格式:

    輸入在一行中給出一個分數,分子和分母中間以斜槓「/」分隔,如:12/34表示34分之12。分子和分母都是正整數(不包含0,若是不清楚正整數的定義的話)。

    提示:在scanf的格式字符串中加入「/」,讓scanf來處理這個斜槓。

    輸出格式:

    在一行中輸出這個分數對應的最簡分式,格式與輸入的相同,即採用「分子/分母」的形式表示分數。如5/6表示6分之5。

    輸入樣例:
    60/120
    
    輸出樣例:
    1/2
    
    #include <stdio.h>
     
    int main()
    {
    	int i, j, n, k;
    	scanf("%d/%d", &i, &j);
    	loop:
    		if(i >= j)
    			n = j;
    		else
    			n = i;
    		for(k=2; k<=n; ++k)
    		{
    			if(j % k == 0 && i % k == 0)
    			{
    				j /= k;
    				i /= k;
    			    goto loop;
    			}
    		}
    	printf("%d/%d", i, j);
    	
    	return 0;
    }

     

    05-2. 念數字(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    翁愷(浙江大學)

    輸入一個整數,輸出每一個數字對應的拼音。當整數爲負數時,先輸出「fu」字。十個數字對應的拼音以下:

    0: ling
    1: yi
    2: er
    3: san
    4: si
    5: wu
    6: liu
    7: qi
    8: ba
    9: jiu
    

    輸入格式:

    輸入在一行中給出一個整數,如:1234

    提示:整數包括負數、零和正數。

    輸出格式:

    在一行中輸出這個整數對應的拼音,每一個數字的拼音之間用空格分開,行末沒有最後的空格。如yi er san si

    輸入樣例:
    -600
    
    輸出樣例:
    fu liu ling ling
    
    
    #include <stdio.h>
    #include <string.h>
    char str[20];
    const char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    
    int main()
    {
    	int i, k;
    	scanf("%s", str);
    	k = strlen(str);
    	if ( str[0] == '-') printf("fu");
    	else 
    		printf("%s", num[str[0]-'0']);
    	for ( i=1; i<k; i++ )
    	{
    		printf(" %s", num[str[i]-'0']);
    	}
    	printf("\n");
    
    	return 0;
    }

     

    05-3. 求a的連續和(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    翁愷(浙江大學)

    輸入兩個整數a和n,a的範圍是[0,9],n的範圍是[1,8],求數列之和S = a+aa+aaa+...+aaa...a(n個a)。如a爲二、n爲8時輸出的是2+22+222+...+22222222的和。

    輸入格式:

    輸入在一行中給出兩個整數,前後表示a和n。

    輸出格式:

    在一行中輸出要求的數列之和。

    輸入樣例:
    2 4
    
    輸出樣例:
    2468
    
    
    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
    	int a, n, i, s = 0;
    	scanf("%d%d", &a, &n);
    	for(i=1; i<=n; ++i)
    	{
    		s += (pow(10.0,i)-1) * a / 9;
    	}
    	printf("%d", s);
    	
    	return 0;
    }

     

    06-0. 混合類型數據格式化輸入(5)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    喬林(清華大學)

    本題要求編寫程序,順序讀入浮點數一、整數、字符、浮點數2,再按照字符、整數、浮點數一、浮點數2的順序輸出。

    輸入格式:

    輸入在一行中順序給出浮點數一、整數、字符、浮點數2,其間以1個空格分隔。

    輸出格式:

    在一行中按照字符、整數、浮點數一、浮點數2的順序輸出,其中浮點數保留小數點後2位。

    輸入樣例:
    2.12 88 c 4.7
    
    輸出樣例:
    c 88 2.12 4.70
    
    
    #include <stdio.h>
    
    int main()
    {
      float f1, f2;
      char ch;
      int i;
      scanf("%f %d %c %f", &f1, &i, &ch, &f2);
      printf("%c %d %.2f %.2f", ch, i, f1, f2);
      
      return 0;
    }

     

    06-1. 簡單計算器(20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    張彤彧(浙江大學)

    模擬簡單運算器的工做。假設計算器只能進行加減乘除運算,運算數和結果都是整數,4種運算符的優先級相同,按從左到右的順序計算。

    輸入格式:

    輸入在一行中給出一個四則運算算式,沒有空格,且至少有一個操做數。遇等號」=」說明輸入結束。

    輸出格式:

    在一行中輸出算式的運算結果,或者若是除法分母爲0或有非法運算符,則輸出錯誤信息「ERROR」。

    輸入樣例:
    1+2*10-10/2=
    
    輸出樣例:
    10
    
    #include <stdio.h>
    
    int main()
    {
    	char ch = '0';
    	int result, i, flag = 0;
    	scanf("%d", &result);
    	while( ch != '=' )
    	{
    		scanf("%c", &ch);
    		if(ch == '=')
    			break;
    		scanf("%d", &i);
    		if( ch == '+' )
    			result += i;
    		else if( ch == '-' )
    			result -= i;
    		else if( ch == '*' )
    			result *= i;
    		else if( ch == '/' )
    		{
    			if( i != 0 )
    				result /= i;
    			else
    				flag = 1;
    		}
    		else
    			flag = 1;
    	}
    	if(flag)
    		printf("ERROR\n");
    	else
    		printf("%d", result);
    		
    	return 0;
    }

     

    06-2. 字符串字母大小寫轉換(10)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    張彤彧(浙江大學)

    輸入一個以#結束的字符串,本題要求將小寫字母所有轉換成大寫字母,把大寫字母所有轉換成小寫字母,其它字符不變。

    輸入格式:

    輸入在一行中給出一個長度不超過40的、以#結束的非空字符串。

    輸出格式:

    在一行中按照要求輸出轉換後的字符串。

    輸入樣例:
    Hello World! 123#
    
    輸出樣例:
    hELLO wORLD! 123
    
    #include <stdio.h>
    
    int main()
    {
    	char c;
    	c = getchar();
    	while(c != '#') 
    	{
            if(c >= 'a' && c <= 'z')
    		{
                c -= 32;  
            }
    		else if(c >= 'A' && c <= 'Z')
    		{
                c += 32;  
            }
            printf("%c", c);
            c = getchar();
    	}
    	
    	return 0;
    }

     

    06-3. 單詞長度(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    翁愷(浙江大學)

    你的程序要讀入一行文本,其中以空格分隔爲若干個單詞,以‘.’結束。你要輸出每一個單詞的長度。這裏的單詞與語言無關,能夠包括各類符號,好比「it's」算一個單詞,長度爲4。注意,行中可能出現連續的空格;最後的‘.’不計算在內。

    輸入格式:

    輸入在一行中給出一行文本,以‘.’結束。

    提示:用scanf("%c",...);來讀入一個字符,直到讀到‘.’爲止。

    輸出格式:

    在一行中輸出這行文本對應的單詞的長度,每一個長度之間以空格隔開,行末沒有最後的空格。

    輸入樣例:

    It's great to see you here.
    

    輸出樣例:

    4 5 2 3 3 4
    
    #include <stdio.h>
    
    int main()
    {
        char s[100];
        int i = 0;
        do 
    	{
            scanf("%c", &s[i]);
            i++;
        } while(s[i-1] != '.');
        int j;
        int cnt = 0;
        int k = 0;
        for(j=0; j<i; j++) 
    	{
            if(s[j] != ' ') 
    		{
                cnt++;
                if(k != 0 && s[j] != '.') 
    			{
                    printf(" ");
                    k = 0;
                }
                if(s[j] == '.' && s[j - 1] != ' ' && cnt != 1) 
    			{
                    printf("%d", cnt-1);
                }
            }
            else if(cnt != 0) 
    		{
                printf("%d", cnt);
                cnt = 0;
                k = 1;
            }
        }
        
        return 0;
    }

     

    07-0. 寫出這個數 (20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    CHEN, Yue

    讀入一個天然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

    輸入格式:每一個測試輸入包含1個測試用例,即給出天然數n的值。這裏保證n小於10100

    輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1空格,但一行中最後一個拼音數字後沒有空格。

    輸入樣例:
    1234567890987654321123456789
    
    輸出樣例:
    yi san wu
    
    #include <stdio.h>
    #include <string.h>
    
    const char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    
    int main()
    {
    	char ch, number[10];
    	int s = 0, i;
    	while( (ch = getchar()) != '\n' )
    	{
    		s += ch-'0';
    	}
    	sprintf(number, "%d", s);
    	printf("%s", num[number[0]-'0']);
    	for ( i=1; i<strlen(number); i++ )
    	{
    		printf(" %s", num[number[i]-'0']);
    	}
    	printf("\n");
    
    	return 0;
    }


     

    07-1. 換個格式輸出整數 (15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    CHEN, Yue

    讓咱們用字母B來表示「百」、字母S表示「十」,用「12...n」來表示個位數字n(<10),換個格式來輸出任一個不超過3位的正整數。例如234應該被輸出爲BBSSS1234,由於它有2個「百」、3個「十」、以及個位的4。

    輸入格式:每一個測試輸入包含1個測試用例,給出正整數n(<1000)。

    輸出格式:每一個測試用例的輸出佔一行,用規定的格式輸出n。

    輸入樣例1:
    234
    
    輸出樣例1:
    BBSSS1234
    
    輸入樣例2:
    23
    
    輸出樣例2:
    SS123
    
    
    #include <stdio.h>
    
    int main()
    {
    	int i, j, B, S;
    	scanf("%d", &i);
    	if(i >= 1 && i < 1000) 
    	{
    		if(i >= 1 && i < 10) 
    		{
    			for(j=1; j<=i; ++j) 
    			{
    				printf("%d", j);
    			}
    		}
    		if(i >= 10 && i < 100) 
    		{
    			S = i / 10;
    			for(j=1; j<=S; ++j) 
    			{
    				printf("S");
    			}
    			i = i % 10;
    			for(j=1; j<=i; ++j) 
    			{
    				printf("%d", j);
    			}
    		}
    		if(i >= 100 && i < 1000) 
    		{
    			B = i / 100;
    			for(j=1; j<=B; ++j) 
    			{
    				printf("B");
    		    }
    			S = i /10 % 10;
    			for(j=1; j<=S; ++j) 
    			{
    				printf("S");
    			}
    			i = i % 10;
    			for(j=1; j<=i; ++j) 
    			{
    				printf("%d", j);	
    		    }
    		}
    	}
    	
    	return 0;
    }

     

    07-2. A+B和C (15)

    時間限制
    50 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    HOU, Qiming

    給定區間[-231, 231]內的3個整數A、B和C,請判斷A+B是否大於C。

    輸入格式:

    輸入第1行給出正整數T(<=10),是測試用例的個數。隨後給出T組測試用例,每組佔一行,順序給出A、B和C。整數間以空格分隔。

    輸出格式:

    對每組測試用例,在一行中輸出「Case #X: true」若是A+B>C,不然輸出「Case #X: false」,其中X是測試用例的編號(從1開始)。

    輸入樣例:
    4
    1 2 3
    2 3 4
    2147483647 0 2147483646
    0 -2147483648 -2147483647
    
    輸出樣例:
    Case #1: false
    Case #2: true
    Case #3: true
    Case #4: false
    
    
    #include <stdio.h>
    
    int main()
    {
    	int t, i;
    	long a, j, k;
    	scanf("%d", &t);
    	if(t >= 1 && t <= 10) 
    	{
    		for(i=1; i<=t; ++i) 
    		{
    			scanf("%ld%ld%ld", &a, &j, &k);
    			if(a + j > k)
    			{
    				printf("Case #%d: true\n", i);
    			}
    			else 
    			{
    				printf("Case #%d: false\n", i);
    			}
    		}
    	}
    	
    	return 0;
    }

     

    07-3. 數素數 (20)

    時間限制
    100 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    CHEN, Yue

    令Pi表示第i個素數。現任給兩個正整數M <= N <= 104,請輸出PM到PN的全部素數。

    輸入格式:

    輸入在一行中給出M和N,其間以空格分隔。

    輸出格式:

    輸出從PM到PN的全部素數,每10個數字佔1行,其間以空格分隔,但行末不得有多餘空格。

    輸入樣例:
    5 27
    
    輸出樣例:
    11 13 17 19 23 29 31 37 41 43
    47 53 59 61 67 71 73 79 83 89
    97 101 103
    
    
    #include <stdio.h>
    
    int a[10001];
    
    int main()
    {
    	int i, c = 0, j, p, m, n;
    	a[0] = 2;
    	for ( i=3; ;i+=2 )
    	{
    		p = 1;
    		for ( j=2; j*j<=i; j++ )
    		{
    			if ( i % j == 0 ) 
    			{
    				p = 0;
    				break;
    			}
    		}
    		if ( p )
    		{
    			a[++c] = i;
    		}
    		if ( c == 10000 ) break;
    	}
    	c = 0;
    	scanf("%d %d", &m, &n);
    	for ( i=m; i<=n; i++ )
    	{
    		c++;
    		printf("%d", a[i-1]);
    		if ( c % 10 == 0 )
    			printf("\n");
    		else if ( i < n )
    			printf(" ");
    	}
    	if ( c % 5 != 0 )
    		printf("\n");
    	
    	return 0;
    }

     

    08-0. 查找整數(10)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    楊起帆(浙江大學城市學院)

    本題要求從輸入的N個整數中查找給定的X。若是找到,輸出X的位置(從0開始數);若是沒有找到,輸出「Not Found」。

    輸入格式:

    輸入在第1行中給出2個正整數N(<=20)和X,第2行給出N個整數。數字均不超過長整型,其間以空格分隔。

    輸出格式:

    在一行中輸出X的位置,或者「Not Found」。

    輸入樣例1:
    5 7
    3 5 7 1 9
    
    輸出樣例1:
    2
    
    輸入樣例2:
    5 7
    3 5 8 1 9
    
    輸出樣例2:
    Not Found
    
    
    #include <stdio.h>
    #define N 1000
    
    int a[N];
    
    int main()
    {
    	int n, key, i;
    	scanf("%d%d", &n, &key);
    	for ( i=0; i<n; i++ ) 
    	{
    		scanf("%d", &a[i]);
    	}
    	for ( i=0; i<n; i++ )
    	{
    		if ( a[i] == key )
    		{
    			printf("%d\n", i);
    			break;
    		}
    	}
    	if ( i == n )
    	{
    		printf("Not Found\n");
    	}
    	
    	return 0;
    }

     

    08-1. 求一批整數中出現最多的個位數字(20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    徐鏡春(浙江大學)

    給定一批整數,分析每一個整數的每一位數字,求出現次數最多的個位數字。例如給定3個整數123四、234五、3456,其中出現最屢次數的數字是3和4,均出現了3次。

    輸入格式:

    輸入在第1行中給出正整數N(<=1000),在第2行中給出N個不超過整型範圍的正整數,數字間以空格分隔。

    輸出格式:

    在一行中按格式「M: n1 n2 ...」輸出,其中M是最大次數,n一、n二、……爲出現次數最多的個位數字,按從小到大的順序排列。數字間以空格分隔,但末尾不得有多餘空格。

    輸入樣例:
    3
    1234 2345 3456
    
    輸出樣例:
    3: 3 4
    
    
    #include <stdio.h>
    #include <string.h>
    
    int a[1002];
    
    int main()
    {
    	int t, i, max = 0;
    	int count[10];
    	scanf("%d", &t);
    	for ( i=0; i<10; i++ )
    	{
    		count[i] = 0;
    	}
    	for ( i=0; i<t; i++ )
    	{
    		scanf("%d", &a[i]);
    	}
    	for ( i=0; i<t; i++ )
    	{
    		while (a[i])
    		{
    			count[a[i]%10]++;
    			a[i] /= 10;
    		}
    	}
    	for ( i=0; i<10; i++ )
    	{
    		if ( max < count[i] )
    		{
    			max = count[i];
    		}
    	}
    	printf("%d:", max);
    	for ( i=0; i<10; i++ )
    	{
    		if ( count[i] == max )
    		{
    			printf(" %d", i);
    		}
    	}
    	printf("\n");
    	
    	return 0;
    }

     

    08-2. 求矩陣的局部極大值(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    徐鏡春(浙江大學)

    給定M行N列的整數矩陣A,若是A的非邊界元素A[i][j]大於相鄰的上下左右4個元素,那麼就稱元素A[i][j]是矩陣的局部極大值。本題要求給定矩陣的所有局部極大值及其所在的位置。

    輸入格式:

    輸入在第1行中給出矩陣A的行數M和列數N(3<=M,N<=20);最後M行,每行給出A在該行的N個元素的值。數字間以空格分隔。

    輸出格式:

    每行按照「元素值 行號 列號」的格式輸出一個局部極大值,其中行、列編號從1開始。要求按照行號遞增輸出;若同行有超過1個局部極大值,則該行按列號遞增輸出。若沒有局部極大值,則輸出「None 總行數 總列數」。

    輸入樣例1:
    4 5
    1 1 1 1 1
    1 3 9 3 1
    1 5 3 5 1
    1 1 1 1 1
    
    輸出樣例1:
    9 2 3
    5 3 2
    5 3 4
    
    輸入樣例2:
    3 5
    1 1 1 1 1
    9 3 9 9 1
    1 5 3 5 1
    
    輸出樣例2:
    None 3 5
    
    
    #include <stdio.h>
    
    int a[21][21];
    
    int main()
    {
    	int m, n, i, j, p = 0;
    	scanf("%d %d", &m, &n);
    	for ( i=0; i<m; i++ )
    	{
    		for ( j=0; j<n; j++ )
    		{
    			scanf("%d", &a[i][j]);
    		}
    	}
    	for ( i=1; i<m-1; i++ )
    	{
    		for ( j=1; j<n-1; j++ )
    		{
    			if ( a[i][j] > a[i][j+1] && a[i][j] > a[i][j-1] && 
    			    a[i][j] > a[i+1][j] && a[i][j] > a[i-1][j] ) 
    			{
    		    	printf("%d %d %d\n", a[i][j], i+1, j+1);
    		    	p = 1;
    			}
    		}
    	}
    	if ( !p )
    	{
    		printf("None %d %d\n", m, n);
    	}
    	
    	return 0;
    }

     

    08-3. 組個最小數 (20)

    時間限制
    100 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    CAO, Peng

    給定數字0-9各若干個。你能夠以任意順序排列這些數字,但必須所有使用。目標是使得最後獲得的數儘量小(注意0不能作首位)。例如:給定兩個0,兩個1,三個5,一個8,咱們獲得的最小的數就是10015558。

    現給定數字,請編寫程序輸出可以組成的最小的數。

    輸入格式:

    每一個輸入包含1個測試用例。每一個測試用例在一行中給出10個非負整數,順序表示咱們擁有數字0、數字一、……數字9的個數。整數間用一個空格分隔。10個數字的總個數不超過50,且至少擁有1個非0的數字。

    輸出格式:

    在一行中輸出可以組成的最小的數。

    輸入樣例:
    2 2 0 0 0 3 0 0 1 0
    
    輸出樣例:
    10015558
    
    
    #include <stdio.h>
    
    int b[10];
    
    int main()
    {
    	int i, j;
    	for ( i=0; i<10; i++ )
    	{
    		b[i] = 0;
    	}
    	for ( i=0; i<10; i++ )
    	{
    		scanf("%d", &b[i]);
    	}
    	for ( i=1; i<10; i++ )
    	{
    		if (b[i])
    		{
    			printf("%d", i);
    			b[i]--;
    			break;
    		}
    	}
    	for ( i=0; i<10; i++ )
    	{
    		for ( j=0; j<b[i]; j++ )
    		{
    			printf("%d", i);
    		}
    	}
    	printf("\n");
    	
    	return 0;
    }

     

    10-0. 說反話 (20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    CHEN, Yue

    給定一句英語,要求你編寫程序,將句中全部單詞的順序顛倒輸出。

    輸入格式:測試輸入包含一個測試用例,在一行內給出總長度不超過80的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用1個空格分開,輸入保證句子末尾沒有多餘的空格。

    輸出格式:每一個測試用例的輸出佔一行,輸出倒序後的句子。

    輸入樣例:
    Hello World Here I Come
    
    輸出樣例:
    Come I Here World Hello
    
    
    #include <stdio.h>
    #include <string.h>
    
    char str[81];
    
    int main()
    {
    	int i, k;
    	char *p;
    	gets(str);
    	k = strlen(str);
    	p = str + k;
    	while (1)
    	{
    		if ( p == str )
    		{
    			printf("%s\n", p);
    			break;
    		}
    		if (*p == ' ' && *(p+1) != ' ')
    		{
    			*p = '\0';
    			printf("%s ", p+1);
    		}
    		p--;
    	}
    	return 0;
    }

     

    10-1. 在字符串中查找指定字符(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    白洪歡(浙江大學)

    輸入一個字符串S,再輸入一個字符c,要求在字符串S中查找字符c。若是找不到則輸出「Not found」;若找到則輸出字符串S中從c開始的全部字符。

    輸入格式:

    輸入在第1行中給出一個不超過80個字符長度的、以回車結束的非空字符串;在第2行中給出一個字符。

    輸出格式:

    在一行中按照題目要求輸出結果。

    輸入樣例1:
    It is a black box
    b
    
    輸出樣例1:
    black box
    
    輸入樣例2:
    It is a black box
    B
    
    輸出樣例2:
    Not found
    
    
    #include <string.h>
    #include <stdio.h>
    
    char str[180];
    
    int main()
    {
    	char ch;
    	int i, k, p = 0;
    	gets(str);
    	k = strlen(str);
    	scanf("%c", &ch);
    	for ( i=0; i<k; i++ )
    	{
    		if ( str[i] == ch )
    		{
    			p = 1;
    		}
    		if ( p )
    		{
    			printf("%c", str[i]);
    		}
    	}
    	if ( !p )
    	{
    		printf("Not found\n");
    	}
    	else
    	{
    		printf("\n");
    	}
    	
    	return 0;
    }

     

    10-2. 刪除字符串中的子串(20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    白洪歡(浙江大學)

    輸入2個字符串S1和S2,要求刪除字符串S1中出現的全部子串S2,即結果字符串中不能包含S2。

    輸入格式:

    輸入在2行中分別給出不超過80個字符長度的、以回車結束的2個非空字符串,對應S1和S2。

    輸出格式:

    在一行中輸出刪除字符串S1中出現的全部子串S2後的結果字符串。

    輸入樣例:
    Tomcat is a male ccatat
    cat
    
    輸出樣例:
    Tom is a male 
    
    #include <stdio.h>
    #include <string.h>
    
    char s1[81], s2[81];
    
    int main()
    {
    	int i, k;
    	gets(s1);
    	gets(s2);
    	char *p = strstr(s1, s2);
    	while(1)
    	{
    		char *p = strstr(s1, s2);
    		if ( p )
    		{
    			for ( i=0; i<strlen(p) - strlen(s2); i++ )
    			{
    				p[i] = p[strlen(s2) + i];
    			}
    			p[i] = '\0';
    	    }
    	    else
    		{
    	    	puts(s1);
    	    	break;
    		}
    	}
    	
    	return 0;
    }

    10-3. 字符串逆序(15)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    白洪歡(浙江大學)

    輸入一個字符串,對該字符串進行逆序,輸出逆序後的字符串。

    輸入格式:

    輸入在一行中給出一個不超過80個字符長度的、以回車結束的非空字符串。

    輸出格式:

    在一行中輸出逆序後的字符串。

    輸入樣例:
    Hello World!
    
    輸出樣例:
    !dlroW olleH
    
    
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char str[81];
    	int k;
    	gets(str);
    	k = strlen(str);
    	k -= 1;
    	for ( k; k>=0; k-- )
    	{
    		printf("%c", str[k]);
    	}
    	printf("\n");
    
    	return 0;
    }

     

    10-4. 字符串循環左移(20)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    白洪歡(浙江大學)

    輸入一個字符串和一個非負整數N,要求將字符串循環左移N次。

    輸入格式:

    輸入在第1行中給出一個不超過100個字符長度的、以回車結束的非空字符串;第2行給出非負整數N。

    輸出格式:

    在一行中輸出循環左移N次後的字符串。

    輸入樣例:
    Hello World!
    2
    
    輸出樣例:
    llo World!He
    
    
    #include <stdio.h>
    #include <string.h>
    
    char str[103];
    
    int main()
    {
    	int i, k, n;
    	gets(str);
    	k = strlen(str);
    	scanf("%d", &n);
    	if ( n % k == 0 )
    		puts(str);
    	else
    	{
    		for ( i=n%k; i<k; i++ )
    		{
    			printf("%c", str[i]);
    		}
    		for ( i=0; i<n%k; i++ )
    		{
    			printf("%c", str[i]);
    		}
    		printf("\n");
    	}
    	
    	return 0;
    }

     

    11-0. 平面向量加法(10)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    喬林(清華大學)

    本題要求編寫程序,計算兩個二維平面向量的和向量。

    輸入格式:

    輸入在一行中按照「x1 y1 x2 y2」的格式給出兩個二維平面向量V1=(x1, y1)和V2=(x2, y2)的份量。

    輸出格式:

    在一行中按照「(x, y)」的格式輸出和向量,座標輸出小數點後1位(注意不能輸出-0.0)。

    輸入樣例:
    3.5 -2.7 -13.9 8.7
    
    輸出樣例:
    (-10.4, 6.0)
    
    
    #include <stdio.h>
    #include <math.h>
    #define EPSILON 0.05 
    
    struct Vector {
    	double x;
    	double y;
    };
    
    int main(void)
    {
    	struct Vector v1, v2, v3;
    	scanf("%lf%lf%lf%lf", &v1.x, &v1.y, &v2.x, &v2.y);
    	v3.x = v1.x + v2.x;
    	v3.y = v1.y + v2.y;
    	if(fabs(v3.x) < EPSILON)
    		v3.x = fabs(v3.x);
    	if(fabs(v3.y) < EPSILON)
    		v3.y = fabs(v3.y);
    	printf("(%.1f, %.1f)\n", v3.x, v3.y);
    	return 0;
    }

     

    11-1. 通信錄的錄入與顯示(10)

    時間限制
    400 ms
    內存限制
    65536 kB
    代碼長度限制
    8000 B
    判題程序
    Standard
    做者
    喬林(清華大學)

    通信錄中的一條記錄包含下述基本信息:朋友的姓名、出生日期、性別、固定電話號碼、移動電話號碼。本題要求編寫程序,錄入N條記錄,而且根據要求顯示任意某條記錄。

    輸入格式:

    輸入在第1行給出正整數N(<=10);隨後N行,每行按照格式「姓名 生日 性別 固話 手機」給出一條記錄。其中「姓名」是不超過10個字符、不包含空格的非空字符串;生日按「yyyy/mm/dd」的格式給出年月日;性別用「M」表示「男」、「F」表示「女」;「固話」和「手機」均爲不超過15位的連續數字,前面有可能出現「+」。

    在通信錄記錄輸入完成後,最後一行給出正整數K,而且隨後給出K個整數,表示要查詢的記錄編號(從0到N-1順序編號)。數字間以空格分隔。

    輸出格式:

    對每一條要查詢的記錄編號,在一行中按照「姓名 固話 手機 性別 生日」的格式輸出該記錄。若要查詢的記錄不存在,則輸出「Not Found」。

    輸入樣例:
    3
    Chris 1984/03/10 F +86181779452 13707010007
    LaoLao 1967/11/30 F 057187951100 +8618618623333
    QiaoLin 1980/01/01 M 84172333 10086
    2 1 7
    
    輸出樣例:
    LaoLao 057187951100 +8618618623333 F 1967/11/30
    Not Found
    
    #include <stdio.h>
    #define N 10
    
    struct Person {
    	char name[11];
    	char birthday[11];
    	char sex;           
    	char fixed[17];     
    	char mobile[17];     
    };
    
    int main(void)
    {
    	struct Person p[N];
    	int num[N];
    	int i, n, k;
    	scanf("%d", &n);
    	for(i = 0; i < n; ++i)
    		scanf("%s %s %c %s %s", p[i].name, p[i].birthday, 
    		      &p[i].sex, p[i].fixed, p[i].mobile);
    	scanf("%d", &k);
    	for(i = 0; i < k; ++i)
    		scanf("%d", &num[i]);
    	for(i = 0; i < k; ++i) {
    		if(num[i] >= 0 && num[i] < n)
    			printf("%s %s %s %c %s\n", p[num[i]].name, 
    			       p[num[i]].fixed, p[num[i]].mobile, p[num[i]].sex, p[num[i]].birthday);
    		else
    			printf("Not Found\n");
    	}
    	return 0;
    }

     

    此彙總由http://blog.csdn.net/fjinhao編輯整理,轉載請註明來源,代碼書寫有不規範或有錯誤之處,歡迎批評指教,有任何問題請聯繫fjinhao@qq.com。

    相關文章
    相關標籤/搜索