中国大学MOOC-翁恺-C语言程序设计习题集

PAT 习题集

02-0. 整数四则运算(10)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
乔林(清华大学)

本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

输入格式:

输入在一行中给出2个正整数A和B。

输出格式:

在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

输入样例:

  1. 3 2

输出样例:

  1. 3 + 2 = 5
  2. 3 - 2 = 1
  3. 3 * 2 = 6
  4. 3 / 2 = 1
  5. #include <stdio.h>
  6. int main()
  7. {
  8. 	int A;
  9. 	int B;
  10. 	int X, Y, Z, W;
  11. 	scanf("%d %d", &A, &B);
  12. 	X = A + B;
  13. 	Y = A - B;
  14. 	Z = A * B;
  15. 	W = A / B;
  16. 	printf("%d + %d = %d\n" ,A, B, X);
  17. 	printf("%d - %d = %d\n", A, B, Y);
  18. 	printf("%d * %d = %d\n", A, B, Z);
  19. 	printf("%d / %d = %d\n", A, B, W);
  20.     return 0;
  21. }

02-1. 厘米换算英尺英寸(15)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
翁恺(浙江大学)

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)*0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

  1. 170

输出样例:

  1. 5 6
  2. #include <stdio.h>
  3. int main()
  4. {
  5. 	int cm;
  6. 	scanf("%d", &cm);
  7. 	int foot = cm / 30.48;
  8. 	int inch = (cm/30.48 - foot) * 12;
  9. 	printf("%d %d", foot, inch);
  10.     return 0;
  11.  }

02-2. 然后是几点(15)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
翁恺(浙江大学)

有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。

输入格式:

输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。

输出格式:

输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。

输入样例:

  1. 1120 110

输出样例:

  1. 1310
  2. #include <stdio.h>
  3. int main()
  4. {
  5. 	int i, j, x = 0, y, z;
  6. 	scanf("%d%d", &i, &j);
  7. 	if(i >= 1000)
  8. 	{
  9. 	       x = i / 1000;
  10. 	       y = (i % 1000) / 100;
  11. 	       z = (i %1000) %100;
  12. 	}
  13. 	else
  14. 	{
  15. 	       y = i / 100;
  16. 	       z = i % 100;
  17. 	}
  18. 	int s = (10*x + y) * 60 + z;
  19. 	int n = s + j;
  20. 	i = n / 60 *100 + (n - ((n / 60 )* 60));
  21. 	printf("%d", i);
  22. 	return 0;
  23. }

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

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
翁恺(浙江大学)

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出按位逆序的数。

输入样例:

  1. 123

输出样例:

  1. 321
  2. #include <stdio.h>
  3. int main()
  4.  {
  5.  	int i;
  6.  	scanf("%d", &i);
  7.  	int a = i % 100 %10;
  8.  	int b = i / 100;
  9.  	int c = i %100 / 10;
  10.  	i = a*100 + b + c*10;
  11.  	printf("%d", i);
  12.  	return  0;
  13.  }

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的数字。

输出格式:

输出对应的十进制数。

输入样例:

  1. 18

输出样例:

  1. 12
  2.  #include <stdio.h>
  3. int main()
  4.  {
  5.  	int i;
  6.  	scanf("%d", &i);
  7.  	int t = i % 16 + i / 16 * 10;
  8.  	printf("%d", t);
  9.  	return 0;
  10.  }

03-0. 超速判断(10)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
杨起帆(浙江大学城市学院)

模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:

输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。

输出格式:

在一行中输出测速仪显示结果,格式为:“Speed: V - S”,其中V是车速,S或者是Speeding、或者是OK。

输入样例1:

  1. 40

输出样例1:

  1. Speed: 40 - OK

输入样例2:

  1. 75

输出样例2:

  1. Speed: 75 - Speeding
  2. #include <stdio.h>
  3. int main()
  4. {
  5.   int i;
  6.   scanf("%d", &i);
  7.   if(i <= 60)
  8.     printf("Speed: %d - OK", i);
  9.   else
  10.     printf("Speed: %d - Speeding", i);
  11.   return 0;
  12. }

03-1. 三天打鱼两天晒网(15)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入格式:

输入在一行中给出1个不超过1000的正整数N。

输出格式:

在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。

输入样例1:

  1. 103

输出样例1:

  1. Fishing in day 103

输入样例2:

  1. 34

输出样例2:

  1. Drying in day 34
  2. #include <stdio.h>
  3. int main()
  4. {
  5. 	int i;
  6. 	scanf("%d", &i);
  7. 	if(i%5 <= 3 && i%5 != 0)
  8. 	     printf("Fishing in day %d", i);
  9. 	else
  10. 	     printf("Drying in day %d", i);
  11. 	return 0;
  12. } 

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

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。

输入格式:

输入在一行中给出3个正整数,顺序对应球A、B、C的重量。

输出格式:

在一行中输出唯一的那个不一样的球。

输入样例:

  1. 1 1 2

输出样例:

  1. C
  2. # include <stdio.h>
  3. int main()
  4. {
  5.      int A, B, C;
  6.      scanf("%d%d%d",&A, &B, &C);
  7.      if(A != B && B ==C)
  8.            printf("A");
  9.      else if(B != A && A == C)
  10.            printf("B");
  11.      else if(C != A && A == B)
  12.            printf("C");
  13.     return 0;
  14. }

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

输入样例:

  1. 21:11

输出样例:

  1. 9:11 PM
  2. #include <stdio.h>
  3. int main()
  4. {
  5. 	int i, j;
  6. 	scanf("%d:%d", &i, &j);
  7. 	if(i >= 0 && i < 12)
  8. 		printf("%d:%d AM", i, j);
  9. 	else if(i == 12)
  10. 		printf("%d:%d PM", i, j);
  11. 	else if(i == 24)
  12. 		printf("%d:%d AM", i-24, j);
  13. 	else
  14. 		printf("%d:%d PM", i-12, j);
  15. 	return 0;
  16. }

03-4. 成绩转换(15)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
沈睿(浙江大学)

本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:

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

    输入格式:

    输入在一行中给出1个整数的百分制成绩。

    输出格式:

    在一行中输出对应的五分制成绩。

    输入样例:

    1. 90

    输出样例:

    1. A
    1. #include <stdio.h>
    2. int main()
    3. {
    4.   int i;
    5.   scanf("%d", &i);
    6.   if(i >= 90)
    7.     printf("A");
    8.   else if(i < 90 && i >= 80)
    9.     printf("B");
    10.   else if(i < 80 && i >= 70)
    11.     printf("C");
    12.   else if(i < 70 && i >= 60)
    13.     printf("D");
    14.   else if(i < 60)
    15.     printf("E");
    16.   return 0;
    17. }
  • 04-0. 求符合给定条件的整数集(15)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    徐镜春(浙江大学)

    给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。

    输入格式:

    输入在一行中给出A。

    输出格式:

    输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。

    输入样例:

    1. 2

    输出样例:

    1. 234 235 243 245 253 254
    2. 324 325 342 345 352 354
    3. 423 425 432 435 452 453
    4. 523 524 532 534 542 543
    5. #include <stdio.h>
    6. int main()
    7. {
    8. 	int A, i, j, k, p = 0;
    9. 	scanf("%d", &A);
    10. 	for(i=A; i<A+4; ++i)
    11. 		for(j=A; j<A+4; ++j)
    12. 			for(k=A; k<A+4; ++k)
    13. 			{
    14. 				if(i != j && i != k && j != k)
    15. 				{
    16. 					printf("%d", i*100+10*j+k);
    17. 					p++;
    18. 					if(p%6 == 0)
    19. 						printf("\n");
    20. 					else
    21. 						printf(" ");
    22. 				}
    23. 			}
    24. 	return 0;
    25. }

    04-1. 水仙花数(20)

    时间限制
    2000 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    徐镜春(浙江大学)

    水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身。例如:153 = 13 + 53+ 33。本题要求编写程序,计算所有N位水仙花数。

    输入格式:

    输入在一行中给出一个正整数N(3<=N<=7)。

    输出格式:

    按递增顺序输出所有N位水仙花数,每个数字占一行。

    输入样例:

    1. 3

    输出样例:

    1. 153
    2. 370
    3. 371
    4. 407
    5. #include <stdio.h>
    6. int main()
    7. {
    8. 	int n = 0, m = 0, l = 0, k = 0, roll = 0;
    9. 	int min = 1, t = 0, sum = 0, sum1 = 0;
    10. 	scanf("%d", &n);
    11. 	m=n;
    12. 	while(m > 1)   //built the minimum for n digit
    13. 	{
    14. 		min*=10;
    15. 		m--;
    16. 	}
    17. 	t=min;
    18. 	while(t < 10*min)  //all the number for n digit
    19. 	{
    20. 		roll = t;
    21. 		m = n;
    22. 		sum = 1;
    23. 		while(m > 0)
    24. 		{
    25. 			sum = sum*(roll%10);
    26. 			m--;
    27. 		}
    28. 		l = n;
    29. 		while(l > 0)
    30. 		{
    31. 			roll = roll / 10;
    32. 			k = roll % 10;
    33. 			m = n;
    34. 			sum1 = 1;
    35. 			while(m > 0)
    36. 			{
    37. 				sum1 = sum1 * k;
    38. 				m--;
    39. 			}
    40. 			sum = sum + sum1;
    41. 			l--;
    42. 		}
    43. 		if(t == sum)
    44. 		{
    45. 			printf("%d\n", t);
    46. 		}
    47. 		t++;
    48. 	}
    49. 	return 0;
    50. }

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

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    徐镜春(浙江大学)

    下面是一个完整的下三角九九口诀表:

    1. 1*1=1
    2. 1*2=2 2*2=4
    3. 1*3=3 2*3=6 3*3=9
    4. 1*4=4 2*4=8 3*4=12 4*4=16
    5. 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
    6. 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
    7. 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
    8. 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
    9. 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位、左对齐。

    输入样例:

    1. 4

    输出样例:

    1. 1*1=1
    2. 1*2=2 2*2=4
    3. 1*3=3 2*3=6 3*3=9
    4. 1*4=4 2*4=8 3*4=12 4*4=16
    5. #include <stdio.h> 
    6. int main(void)
    7. {
    8.     int n;
    9.     scanf("%d", &n);
    10.     int i, j;
    11.     for (i=1; i<=n; i++)
    12.     {
    13.         for (j=1; j<=i; j++)
    14.             printf("%d*%d=%-4d", j, i, i*j);
    15.         puts("");
    16.     } 
    17.     return 0;
    18. }

    04-3. 统计素数并求和(20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    张彤彧(浙江大学)

    本题要求统计给定整数M和N区间内素数的个数并对它们求和。

    输入格式:

    输入在一行中给出2个正整数M和N(1<=M<=N<=500)。

    输出格式:

    在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

    输入样例:

    1. 10 31

    输出样例:

    1. 7 143
    2. #include <stdio.h>
    3. #include <stdbool.h>
    4. int nums(int x)
    5. {
    6. 	int i;
    7. 	if(x ==1 ){
    8. 		return 0;
    9. 	}
    10. 	for(i=2; i*i<=x; i++){
    11. 		if(x%i == 0){
    12. 	    	return 0;
    13.         }
    14. 	}
    15. 	return 1;
    16. }
    17. int main()
    18. {
    19. 	int m,n;
    20. 	int j;
    21. 	scanf("%d %d", &m, &n);
    22. 	int count = 0;
    23. 	int sum = 0;
    24. 	for(j=m; j<=n; j++)
    25. 	{
    26. 		if(nums(j) == 1)
    27. 		{
    28. 			count++;
    29. 			sum += j;
    30. 		}
    31. 	}
    32. 	printf("%d %d", count, sum);
    33. 	return 0;
    34. }
    35.  

    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”则结束。

    输入样例:

    1. 58 4
    2. 70
    3. 50
    4. 56
    5. 58
    6. 60
    7. -2

    输出样例:

    1. Too big
    2. Too small
    3. Too small
    4. Good Guess!
    5.  #include <stdio.h>
    6.  int main()
    7.  {
    8.  	int n, times;
    9.  	int i, t = 0;
    10.  	scanf("%d %d", &n, ×);
    11.  	while(1)
    12.  	{
    13.  		scanf("%d", &i);
    14.  	    ++t;
    15.  		if(i == n && t == 1)
    16.  		{
    17.  			printf("Bingo!\n");
    18.  			break;
    19. 		}
    20. 		else if(i < 0 || t > times )
    21. 		{
    22. 			printf("Game Over");
    23. 			break;
    24. 		}
    25. 		else if(i == n && t > 1 && t <= 3 && t <= times)
    26. 		{
    27. 			printf("Lucky You!\n");
    28. 			break;
    29. 		}
    30. 		else if(i > n)
    31. 		{
    32. 			printf("Too big\n");
    33. 		}
    34. 		else if(i < n && i > 0)
    35. 		{
    36. 			printf("Too small\n");
    37. 		}
    38. 		else if(i == n && t > 3 && t <= times)
    39. 		{
    40. 			printf("Good Guess!\n");
    41. 			break;
    42. 		}
    43. 	}
    44.  	return 0;
    45. }
    46.  

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

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    张彤彧(浙江大学)

    本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

    输入格式:

    输入在一行中给出一个正整数N。

    输出格式:

    在一行中输出部分和的值,精确到小数点后2位。题目保证计算结果不超过双精度范围。

    输入样例:

    1. 20

    输出样例:

    1. 32.66
    2. #include <stdio.h>
    3. int main()
    4. {
    5. 	int n = 1, i;
    6. 	double a = 2, b = 1, t, s = 0;
    7. 	scanf("%d", &n);
    8. 	for(i=1; i<=n; ++i)
    9. 	{
    10. 		t = a;
    11. 		s += a/b;
    12. 		a += b;
    13. 		b = t;
    14. 	}
    15. 	printf("%.2lf", s);
    16. 	return 0;
    17. }

    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。

    输入样例:

    1. 60/120

    输出样例:

    1. 1/2
    2. #include <stdio.h>
    3. int main()
    4. {
    5. 	int i, j, n, k;
    6. 	scanf("%d/%d", &i, &j);
    7. 	loop:
    8. 		if(i >= j)
    9. 			n = j;
    10. 		else
    11. 			n = i;
    12. 		for(k=2; k<=n; ++k)
    13. 		{
    14. 			if(j % k == 0 && i % k == 0)
    15. 			{
    16. 				j /= k;
    17. 				i /= k;
    18. 			    goto loop;
    19. 			}
    20. 		}
    21. 	printf("%d/%d", i, j);
    22. 	return 0;
    23. }

    05-2. 念数字(15)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    翁恺(浙江大学)

    输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出“fu”字。十个数字对应的拼音如下:

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

    输入格式:

    输入在一行中给出一个整数,如:1234

    提示:整数包括负数、零和正数。

    输出格式:

    在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如yi er san si

    输入样例:

    1. -600

    输出样例:

    1. fu liu ling ling
    2. #include <stdio.h>
    3. #include <string.h>
    4. char str[20];
    5. const char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    6. int main()
    7. {
    8. 	int i, k;
    9. 	scanf("%s", str);
    10. 	k = strlen(str);
    11. 	if ( str[0] == '-') printf("fu");
    12. 	else
    13. 		printf("%s", num[str[0]-'0']);
    14. 	for ( i=1; i<k; i++ )
    15. 	{
    16. 		printf(" %s", num[str[i]-'0']);
    17. 	}
    18. 	printf("\n");
    19. 	return 0;
    20. }

    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为2、n为8时输出的是2+22+222+...+22222222的和。

    输入格式:

    输入在一行中给出两个整数,先后表示a和n。

    输出格式:

    在一行中输出要求的数列之和。

    输入样例:

    1. 2 4

    输出样例:

    1. 2468
    2. #include <stdio.h>
    3. #include <math.h>
    4. int main()
    5. {
    6. 	int a, n, i, s = 0;
    7. 	scanf("%d%d", &a, &n);
    8. 	for(i=1; i<=n; ++i)
    9. 	{
    10. 		s += (pow(10.0,i)-1) * a / 9;
    11. 	}
    12. 	printf("%d", s);
    13. 	return 0;
    14. }

    06-0. 混合类型数据格式化输入(5)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    乔林(清华大学)

    本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

    输入格式:

    输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

    输出格式:

    在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

    输入样例:

    1. 2.12 88 c 4.7

    输出样例:

    1. c 88 2.12 4.70
    2. #include <stdio.h>
    3. int main()
    4. {
    5.   float f1, f2;
    6.   char ch;
    7.   int i;
    8.   scanf("%f %d %c %f", &f1, &i, &ch, &f2);
    9.   printf("%c %d %.2f %.2f", ch, i, f1, f2);
    10.   return 0;
    11. }

    06-1. 简单计算器(20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    张彤彧(浙江大学)

    模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。

    输入格式:

    输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

    输出格式:

    在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

    输入样例:

    1. 1+2*10-10/2=

    输出样例:

    1. 10
    2. #include <stdio.h>
    3. int main()
    4. {
    5. 	char ch = '0';
    6. 	int result, i, flag = 0;
    7. 	scanf("%d", &result);
    8. 	while( ch != '=' )
    9. 	{
    10. 		scanf("%c", &ch);
    11. 		if(ch == '=')
    12. 			break;
    13. 		scanf("%d", &i);
    14. 		if( ch == '+' )
    15. 			result += i;
    16. 		else if( ch == '-' )
    17. 			result -= i;
    18. 		else if( ch == '*' )
    19. 			result *= i;
    20. 		else if( ch == '/' )
    21. 		{
    22. 			if( i != 0 )
    23. 				result /= i;
    24. 			else
    25. 				flag = 1;
    26. 		}
    27. 		else
    28. 			flag = 1;
    29. 	}
    30. 	if(flag)
    31. 		printf("ERROR\n");
    32. 	else
    33. 		printf("%d", result);
    34. 	return 0;
    35. }

    06-2. 字符串字母大小写转换(10)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    张彤彧(浙江大学)

    输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变。

    输入格式:

    输入在一行中给出一个长度不超过40的、以#结束的非空字符串。

    输出格式:

    在一行中按照要求输出转换后的字符串。

    输入样例:

    1. Hello World! 123#

    输出样例:

    1. hELLO wORLD! 123
    2. #include <stdio.h>
    3. int main()
    4. {
    5. 	char c;
    6. 	c = getchar();
    7. 	while(c != '#')
    8. 	{
    9.         if(c >= 'a' && c <= 'z')
    10. 		{
    11.             c -= 32;
    12.         }
    13. 		else if(c >= 'A' && c <= 'Z')
    14. 		{
    15.             c += 32;
    16.         }
    17.         printf("%c", c);
    18.         c = getchar();
    19. 	}
    20. 	return 0;
    21. }

    06-3. 单词长度(15)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    翁恺(浙江大学)

    你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格;最后的‘.’不计算在内。

    输入格式:

    输入在一行中给出一行文本,以‘.’结束。

    提示:用scanf("%c",...);来读入一个字符,直到读到‘.’为止。

    输出格式:

    在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

    输入样例:

    1. It's great to see you here.

    输出样例:

    1. 4 5 2 3 3 4
    2. #include <stdio.h>
    3. int main()
    4. {
    5.     char s[100];
    6.     int i = 0;
    7.     do
    8. 	{
    9.         scanf("%c", &s[i]);
    10.         i++;
    11.     } while(s[i-1] != '.');
    12.     int j;
    13.     int cnt = 0;
    14.     int k = 0;
    15.     for(j=0; j<i; j++)
    16. 	{
    17.         if(s[j] != ' ')
    18. 		{
    19.             cnt++;
    20.             if(k != 0 && s[j] != '.')
    21. 			{
    22.                 printf(" ");
    23.                 k = 0;
    24.             }
    25.             if(s[j] == '.' && s[j - 1] != ' ' && cnt != 1)
    26. 			{
    27.                 printf("%d", cnt-1);
    28.             }
    29.         }
    30.         else if(cnt != 0)
    31. 		{
    32.             printf("%d", cnt);
    33.             cnt = 0;
    34.             k = 1;
    35.         }
    36.     }
    37.     return 0;
    38. }

    07-0. 写出这个数 (20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100

    输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。

    输入样例:

    1. 1234567890987654321123456789

    输出样例:

    1. yi san wu
    2. #include <stdio.h>
    3. #include <string.h>
    4. const char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    5. int main()
    6. {
    7. 	char ch, number[10];
    8. 	int s = 0, i;
    9. 	while( (ch = getchar()) != '\n' )
    10. 	{
    11. 		s += ch-'0';
    12. 	}
    13. 	sprintf(number, "%d", s);
    14. 	printf("%s", num[number[0]-'0']);
    15. 	for ( i=1; i<strlen(number); i++ )
    16. 	{
    17. 		printf(" %s", num[number[i]-'0']);
    18. 	}
    19. 	printf("\n");
    20. 	return 0;
    21. }

    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:

    1. 234

    输出样例1:

    1. BBSSS1234

    输入样例2:

    1. 23

    输出样例2:

    1. SS123
    2. #include <stdio.h>
    3. int main()
    4. {
    5. 	int i, j, B, S;
    6. 	scanf("%d", &i);
    7. 	if(i >= 1 && i < 1000)
    8. 	{
    9. 		if(i >= 1 && i < 10)
    10. 		{
    11. 			for(j=1; j<=i; ++j)
    12. 			{
    13. 				printf("%d", j);
    14. 			}
    15. 		}
    16. 		if(i >= 10 && i < 100)
    17. 		{
    18. 			S = i / 10;
    19. 			for(j=1; j<=S; ++j)
    20. 			{
    21. 				printf("S");
    22. 			}
    23. 			i = i % 10;
    24. 			for(j=1; j<=i; ++j)
    25. 			{
    26. 				printf("%d", j);
    27. 			}
    28. 		}
    29. 		if(i >= 100 && i < 1000)
    30. 		{
    31. 			B = i / 100;
    32. 			for(j=1; j<=B; ++j)
    33. 			{
    34. 				printf("B");
    35. 		    }
    36. 			S = i /10 % 10;
    37. 			for(j=1; j<=S; ++j)
    38. 			{
    39. 				printf("S");
    40. 			}
    41. 			i = i % 10;
    42. 			for(j=1; j<=i; ++j)
    43. 			{
    44. 				printf("%d", j);
    45. 		    }
    46. 		}
    47. 	}
    48. 	return 0;
    49. }

    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开始)。

    输入样例:

    1. 4
    2. 1 2 3
    3. 2 3 4
    4. 2147483647 0 2147483646
    5. 0 -2147483648 -2147483647

    输出样例:

    1. Case #1: false
    2. Case #2: true
    3. Case #3: true
    4. Case #4: false
    5. #include <stdio.h>
    6. int main()
    7. {
    8. 	int t, i;
    9. 	long a, j, k;
    10. 	scanf("%d", &t);
    11. 	if(t >= 1 && t <= 10)
    12. 	{
    13. 		for(i=1; i<=t; ++i)
    14. 		{
    15. 			scanf("%ld%ld%ld", &a, &j, &k);
    16. 			if(a + j > k)
    17. 			{
    18. 				printf("Case #%d: true\n", i);
    19. 			}
    20. 			else
    21. 			{
    22. 				printf("Case #%d: false\n", i);
    23. 			}
    24. 		}
    25. 	}
    26. 	return 0;
    27. }

    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行,其间以空格分隔,但行末不得有多余空格。

    输入样例:

    1. 5 27

    输出样例:

    1. 11 13 17 19 23 29 31 37 41 43
    2. 47 53 59 61 67 71 73 79 83 89
    3. 97 101 103
    4. #include <stdio.h>
    5. int a[10001];
    6. int main()
    7. {
    8. 	int i, c = 0, j, p, m, n;
    9. 	a[0] = 2;
    10. 	for ( i=3; ;i+=2 )
    11. 	{
    12. 		p = 1;
    13. 		for ( j=2; j*j<=i; j++ )
    14. 		{
    15. 			if ( i % j == 0 )
    16. 			{
    17. 				p = 0;
    18. 				break;
    19. 			}
    20. 		}
    21. 		if ( p )
    22. 		{
    23. 			a[++c] = i;
    24. 		}
    25. 		if ( c == 10000 ) break;
    26. 	}
    27. 	c = 0;
    28. 	scanf("%d %d", &m, &n);
    29. 	for ( i=m; i<=n; i++ )
    30. 	{
    31. 		c++;
    32. 		printf("%d", a[i-1]);
    33. 		if ( c % 10 == 0 )
    34. 			printf("\n");
    35. 		else if ( i < n )
    36. 			printf(" ");
    37. 	}
    38. 	if ( c % 5 != 0 )
    39. 		printf("\n");
    40. 	return 0;
    41. }

    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:

    1. 5 7
    2. 3 5 7 1 9

    输出样例1:

    1. 2

    输入样例2:

    1. 5 7
    2. 3 5 8 1 9

    输出样例2:

    1. Not Found
    2. #include <stdio.h>
    3. #define N 1000
    4. int a[N];
    5. int main()
    6. {
    7. 	int n, key, i;
    8. 	scanf("%d%d", &n, &key);
    9. 	for ( i=0; i<n; i++ )
    10. 	{
    11. 		scanf("%d", &a[i]);
    12. 	}
    13. 	for ( i=0; i<n; i++ )
    14. 	{
    15. 		if ( a[i] == key )
    16. 		{
    17. 			printf("%d\n", i);
    18. 			break;
    19. 		}
    20. 	}
    21. 	if ( i == n )
    22. 	{
    23. 		printf("Not Found\n");
    24. 	}
    25. 	return 0;
    26. }

    08-1. 求一批整数中出现最多的个位数字(20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    徐镜春(浙江大学)

    给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

    输入格式:

    输入在第1行中给出正整数N(<=1000),在第2行中给出N个不超过整型范围的正整数,数字间以空格分隔。

    输出格式:

    在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

    输入样例:

    1. 3
    2. 1234 2345 3456

    输出样例:

    1. 3: 3 4
    2. #include <stdio.h>
    3. #include <string.h>
    4. int a[1002];
    5. int main()
    6. {
    7. 	int t, i, max = 0;
    8. 	int count[10];
    9. 	scanf("%d", &t);
    10. 	for ( i=0; i<10; i++ )
    11. 	{
    12. 		count[i] = 0;
    13. 	}
    14. 	for ( i=0; i<t; i++ )
    15. 	{
    16. 		scanf("%d", &a[i]);
    17. 	}
    18. 	for ( i=0; i<t; i++ )
    19. 	{
    20. 		while (a[i])
    21. 		{
    22. 			count[a[i]%10]++;
    23. 			a[i] /= 10;
    24. 		}
    25. 	}
    26. 	for ( i=0; i<10; i++ )
    27. 	{
    28. 		if ( max < count[i] )
    29. 		{
    30. 			max = count[i];
    31. 		}
    32. 	}
    33. 	printf("%d:", max);
    34. 	for ( i=0; i<10; i++ )
    35. 	{
    36. 		if ( count[i] == max )
    37. 		{
    38. 			printf(" %d", i);
    39. 		}
    40. 	}
    41. 	printf("\n");
    42. 	return 0;
    43. }

    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:

    1. 4 5
    2. 1 1 1 1 1
    3. 1 3 9 3 1
    4. 1 5 3 5 1
    5. 1 1 1 1 1

    输出样例1:

    1. 9 2 3
    2. 5 3 2
    3. 5 3 4

    输入样例2:

    1. 3 5
    2. 1 1 1 1 1
    3. 9 3 9 9 1
    4. 1 5 3 5 1

    输出样例2:

    1. None 3 5
    2. #include <stdio.h>
    3. int a[21][21];
    4. int main()
    5. {
    6. 	int m, n, i, j, p = 0;
    7. 	scanf("%d %d", &m, &n);
    8. 	for ( i=0; i<m; i++ )
    9. 	{
    10. 		for ( j=0; j<n; j++ )
    11. 		{
    12. 			scanf("%d", &a[i][j]);
    13. 		}
    14. 	}
    15. 	for ( i=1; i<m-1; i++ )
    16. 	{
    17. 		for ( j=1; j<n-1; j++ )
    18. 		{
    19. 			if ( a[i][j] > a[i][j+1] && a[i][j] > a[i][j-1] &&
    20. 			    a[i][j] > a[i+1][j] && a[i][j] > a[i-1][j] )
    21. 			{
    22. 		    	printf("%d %d %d\n", a[i][j], i+1, j+1);
    23. 		    	p = 1;
    24. 			}
    25. 		}
    26. 	}
    27. 	if ( !p )
    28. 	{
    29. 		printf("None %d %d\n", m, n);
    30. 	}
    31. 	return 0;
    32. }

    08-3. 组个最小数 (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CAO, Peng

    给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

    现给定数字,请编写程序输出能够组成的最小的数。

    输入格式:

    每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

    输出格式:

    在一行中输出能够组成的最小的数。

    输入样例:

    1. 2 2 0 0 0 3 0 0 1 0

    输出样例:

    1. 10015558
    2. #include <stdio.h>
    3. int b[10];
    4. int main()
    5. {
    6. 	int i, j;
    7. 	for ( i=0; i<10; i++ )
    8. 	{
    9. 		b[i] = 0;
    10. 	}
    11. 	for ( i=0; i<10; i++ )
    12. 	{
    13. 		scanf("%d", &b[i]);
    14. 	}
    15. 	for ( i=1; i<10; i++ )
    16. 	{
    17. 		if (b[i])
    18. 		{
    19. 			printf("%d", i);
    20. 			b[i]--;
    21. 			break;
    22. 		}
    23. 	}
    24. 	for ( i=0; i<10; i++ )
    25. 	{
    26. 		for ( j=0; j<b[i]; j++ )
    27. 		{
    28. 			printf("%d", i);
    29. 		}
    30. 	}
    31. 	printf("\n");
    32. 	return 0;
    33. }

    10-0. 说反话 (20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

    输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

    输出格式:每个测试用例的输出占一行,输出倒序后的句子。

    输入样例:

    1. Hello World Here I Come

    输出样例:

    1. Come I Here World Hello
    2. #include <stdio.h>
    3. #include <string.h>
    4. char str[81];
    5. int main()
    6. {
    7. 	int i, k;
    8. 	char *p;
    9. 	gets(str);
    10. 	k = strlen(str);
    11. 	p = str + k;
    12. 	while (1)
    13. 	{
    14. 		if ( p == str )
    15. 		{
    16. 			printf("%s\n", p);
    17. 			break;
    18. 		}
    19. 		if (*p == ' ' && *(p+1) != ' ')
    20. 		{
    21. 			*p = '\0';
    22. 			printf("%s ", p+1);
    23. 		}
    24. 		p--;
    25. 	}
    26. 	return 0;
    27. }

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

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    白洪欢(浙江大学)

    输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。

    输入格式:

    输入在第1行中给出一个不超过80个字符长度的、以回车结束的非空字符串;在第2行中给出一个字符。

    输出格式:

    在一行中按照题目要求输出结果。

    输入样例1:

    1. It is a black box
    2. b

    输出样例1:

    1. black box

    输入样例2:

    1. It is a black box
    2. B

    输出样例2:

    1. Not found
    2. #include <string.h>
    3. #include <stdio.h>
    4. char str[180];
    5. int main()
    6. {
    7. 	char ch;
    8. 	int i, k, p = 0;
    9. 	gets(str);
    10. 	k = strlen(str);
    11. 	scanf("%c", &ch);
    12. 	for ( i=0; i<k; i++ )
    13. 	{
    14. 		if ( str[i] == ch )
    15. 		{
    16. 			p = 1;
    17. 		}
    18. 		if ( p )
    19. 		{
    20. 			printf("%c", str[i]);
    21. 		}
    22. 	}
    23. 	if ( !p )
    24. 	{
    25. 		printf("Not found\n");
    26. 	}
    27. 	else
    28. 	{
    29. 		printf("\n");
    30. 	}
    31. 	return 0;
    32. }

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

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    白洪欢(浙江大学)

    输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。

    输入格式:

    输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。

    输出格式:

    在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。

    输入样例:

    1. Tomcat is a male ccatat
    2. cat

    输出样例:

    1. Tom is a male
    2. #include <stdio.h>
    3. #include <string.h>
    4. char s1[81], s2[81];
    5. int main()
    6. {
    7. 	int i, k;
    8. 	gets(s1);
    9. 	gets(s2);
    10. 	char *p = strstr(s1, s2);
    11. 	while(1)
    12. 	{
    13. 		char *p = strstr(s1, s2);
    14. 		if ( p )
    15. 		{
    16. 			for ( i=0; i<strlen(p) - strlen(s2); i++ )
    17. 			{
    18. 				p[i] = p[strlen(s2) + i];
    19. 			}
    20. 			p[i] = '\0';
    21. 	    }
    22. 	    else
    23. 		{
    24. 	    	puts(s1);
    25. 	    	break;
    26. 		}
    27. 	}
    28. 	return 0;
    29. }

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

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    白洪欢(浙江大学)

    输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

    输入格式:

    输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

    输出格式:

    在一行中输出逆序后的字符串。

    输入样例:

    1. Hello World!

    输出样例:

    1. !dlroW olleH
    2. #include <stdio.h>
    3. #include <string.h>
    4. int main()
    5. {
    6. 	char str[81];
    7. 	int k;
    8. 	gets(str);
    9. 	k = strlen(str);
    10. 	k -= 1;
    11. 	for ( k; k>=0; k-- )
    12. 	{
    13. 		printf("%c", str[k]);
    14. 	}
    15. 	printf("\n");
    16. 	return 0;
    17. }

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

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    白洪欢(浙江大学)

    输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

    输入格式:

    输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。

    输出格式:

    在一行中输出循环左移N次后的字符串。

    输入样例:

    1. Hello World!
    2. 2

    输出样例:

    1. llo World!He
    2. #include <stdio.h>
    3. #include <string.h>
    4. char str[103];
    5. int main()
    6. {
    7. 	int i, k, n;
    8. 	gets(str);
    9. 	k = strlen(str);
    10. 	scanf("%d", &n);
    11. 	if ( n % k == 0 )
    12. 		puts(str);
    13. 	else
    14. 	{
    15. 		for ( i=n%k; i<k; i++ )
    16. 		{
    17. 			printf("%c", str[i]);
    18. 		}
    19. 		for ( i=0; i<n%k; i++ )
    20. 		{
    21. 			printf("%c", str[i]);
    22. 		}
    23. 		printf("\n");
    24. 	}
    25. 	return 0;
    26. }

    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)。

    输入样例:

    1. 3.5 -2.7 -13.9 8.7

    输出样例:

    1. (-10.4, 6.0)
    2. #include <stdio.h>
    3. #include <math.h>
    4. #define EPSILON 0.05 
    5. struct Vector {
    6. 	double x;
    7. 	double y;
    8. };
    9. int main(void)
    10. {
    11. 	struct Vector v1, v2, v3;
    12. 	scanf("%lf%lf%lf%lf", &v1.x, &v1.y, &v2.x, &v2.y);
    13. 	v3.x = v1.x + v2.x;
    14. 	v3.y = v1.y + v2.y;
    15. 	if(fabs(v3.x) < EPSILON)
    16. 		v3.x = fabs(v3.x);
    17. 	if(fabs(v3.y) < EPSILON)
    18. 		v3.y = fabs(v3.y);
    19. 	printf("(%.1f, %.1f)\n", v3.x, v3.y);
    20. 	return 0;
    21. }

    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”。

    输入样例:

    1. 3
    2. Chris 1984/03/10 F +86181779452 13707010007
    3. LaoLao 1967/11/30 F 057187951100 +8618618623333
    4. QiaoLin 1980/01/01 M 84172333 10086
    5. 2 1 7

    输出样例:

    1. LaoLao 057187951100 +8618618623333 F 1967/11/30
    2. Not Found
    3. #include <stdio.h>
    4. #define N 10
    5. struct Person {
    6. 	char name[11];
    7. 	char birthday[11];
    8. 	char sex;
    9. 	char fixed[17];
    10. 	char mobile[17];
    11. };
    12. int main(void)
    13. {
    14. 	struct Person p[N];
    15. 	int num[N];
    16. 	int i, n, k;
    17. 	scanf("%d", &n);
    18. 	for(i = 0; i < n; ++i)
    19. 		scanf("%s %s %c %s %s", p[i].name, p[i].birthday,
    20. 		      &p[i].sex, p[i].fixed, p[i].mobile);
    21. 	scanf("%d", &k);
    22. 	for(i = 0; i < k; ++i)
    23. 		scanf("%d", &num[i]);
    24. 	for(i = 0; i < k; ++i) {
    25. 		if(num[i] >= 0 && num[i] < n)
    26. 			printf("%s %s %s %c %s\n", p[num[i]].name,
    27. 			       p[num[i]].fixed, p[num[i]].mobile, p[num[i]].sex, p[num[i]].birthday);
    28. 		else
    29. 			printf("Not Found\n");
    30. 	}
    31. 	return 0;
    32. }

    此汇总由http://blog.csdn.net/fjinhao编辑整理,转载请注明来源,代码书写有不规范或有错误之处,欢迎批评指教,有任何问题请联系fjinhao@qq.com。

    中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总的更多相关文章

    1. 中国大学MOOC-翁恺-C语言程序设计习题集

      今年网易出了“中国大学MOOC”,于是选了浙大翁恺老师的“C语言程序设计”学习,近期打算把自己在该课程中的PAT习题解答做一个记录,等自己编程能力提高后再来看现在写的代码哪里还有写的不好,可以改进的地 ...

    2. 中国大学MOOC-翁恺-C语言程序设计习题集(二)

      04-0. 求符合给定条件的整数集(15)给定不超过6的正整数A,考虑从A开始的连续4个数字.请输出所有由它们组成的无重复数字的3位数. 输入格式: 输入在一行中给出A. 输出格式: 输出满足条件的的 ...

    3. 中国大学MOOC-翁恺-C语言程序设计习题集(一)

      练习 02-0. 整数四则运算(10) 本题要求编写程序,计算2个正整数的和.差.积.商并输出.题目保证输入和输出全部在整型范围内. 输入格式: 输入在一行中给出2个正整数A和B. 输出格式: 在4行 ...

    4. 中国大学MOOC中的后台文件传输

      早期版本的中国大学MOOC一旦被挂起后,应用在完成当前下载任务后无法继续添加新任务,当然也无法将缓存状态写入数据库.这个问题能否顺利解决直接关系到用户体验. 顺便吐槽下,凡是使用了后台文件传输还提示你 ...

    5. 中国大学mooc直播回放看这里哦http://www.icourse163.org/forum/1001974001/topic-1003372881.htm?sortType=1&pageIndex=1

      中国大学mooc直播回放看这里哦http://www.icourse163.org/forum/1001974001/topic-1003372881.htm?sortType=1&pageI ...

    6. 中国大学MOOC课程信息之数据分析可视化二

      版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82318571 - 写在前面 本篇博客继续对中国大学MOOC ...

    7. 中国大学MOOC课程信息之数据分析可视化一

      版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82263391 9月2日更:中国大学MOOC课程信息之数据分 ...

    8. 中国大学MOOC课程信息爬取与数据存储

      版权声明:本文为博主原创文章,转载 请注明出处: https://blog.csdn.net/sc2079/article/details/82016583 10月18日更:MOOC课程信息D3.js ...

    9. 中国大学MOOC 邮箱验证的问题

      在使用 中国大学 MOOC 过程中,在PC端修改个人资料时,其中有项“常用邮箱”,于是写了QQ邮箱,结果发现一直无法验证,连邮件都无法收到. 经过多番尝试,重新使用邮箱注册的方式注册账号,然后注册成功 ...

    随机推荐

    1. MyEclipse常用操作

      选择你要注释的那一行或多行代码,按Ctrl+/即可,取消注释也是选中之后按Ctrl+/即可. 如果你想使用的快捷键的注释是的话,那么你的快捷键是ctrl+shift+/我以前都是手动注释的,直接打// ...

    2. 怎么利用composer创建laravel项目

      前提:已经安装了composer的电脑 创建laravel项目: 第一步: 找到你要创建文件的地方 然后打开doc,输入:composer create_project laravel/laravel ...

    3. JavaScript学习笔记(散)——addLoadEvent函数

      先贴源码 function addLoadEvent(func) { var oldonload = window.onload; //存入当前onload事件 if(typeof window.on ...

    4. Python系列教程(一):简介

      Python发展历史 起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,尽管他算得上是一位数学家,但他更加享受 ...

    5. usaco training 4.2.2 The Perfect Stall 最佳牛栏 题解

      The Perfect Stall题解 Hal Burch Farmer John completed his new barn just last week, complete with all t ...

    6. Java 异常处理笔记

      Java程序运行过程中所发生的异常事件可分为两类: §错误(Error):JVM系统内部错误.资源耗尽等严重情况 §违例(Exception): 其它因编程错误或偶然的外在因素导致的一般性问题,例如: ...

    7. HDU 2255 奔小康赚大钱(带权二分图最大匹配)

      HDU 2255 奔小康赚大钱(带权二分图最大匹配) Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊 ...

    8. Python爬虫从入门到放弃(十七)之 Scrapy框架中Download Middleware用法

      这篇文章中写了常用的下载中间件的用法和例子.Downloader Middleware处理的过程主要在调度器发送requests请求的时候以及网页将response结果返回给spiders的时候,所以 ...

    9. Spring+SpringMVC+MyBatis深入学习及搭建(十三)——SpringMVC入门程序(二)

      1.非注解的处理器映射器和适配器 1.1非注解的处理器映射器 前面我们配置的org.springframework.web.servlet.handler.BeanNameUrlHandlerMapp ...

    10. Python collections模块总结

      Python collections模块总结 除了我们使用的那些基础的数据结构,还有包括其它的一些模块提供的数据结构,有时甚至比基础的数据结构还要好用. collections ChainMap 这是 ...