C 语言题库
第一章:选择结构: ............................................................ 2
1、开学第一考(1355) ..................................................... 2
2、小明的考题 1——分段函数)(1356) ......................................3
3、小明的考题 2——数与单词(1357) ........................................4
4、小明的考题 3——必杀技(1358) ..........................................5
5、四则运算器(1359) ..................................................... 6
6、算日期(1360) ......................................................... 6
第二章:循环 .................................................................. 9
1、分数约简(1361) ....................................................... 9
2、再做分段函数(1362) .................................................. 10
3、简单的数列求和(1363) ................................................ 11
4、找闰年(1364) ........................................................ 12
5、小明的自娱自乐(1365) ................................................ 13
6、Simple a + b(1366) .................................................. 14
7、几何级数的计算机验证法(1367) ........................................ 16
8、解铃还须系铃人 1(1368) ...............................................17
9、解铃还须系铃人 2(1369) ...............................................18
10、谁是下一个十佳歌手(1370) ........................................... 20
11、九九乘法表(1371) ................................................... 21
12、奇偶求和计算(1372) ................................................. 22
第三章:数组 ................................................................. 23
1、志愿者的工作(1373) .................................................. 23
2、进制转换(1374) ...................................................... 24
3、第 K 高的人(1375) .................................................... 25
4、矩阵乘法(1376) ...................................................... 26
5、寻书之旅 1(1377) .....................................................27
6、寻书之旅 2(1378) .....................................................28
7、合并队伍(1379) ...................................................... 30
8、变态杨辉三角(1380) .................................................. 31
9、不重叠子串数(1381) .................................................. 33
10、小明的生词本(1382) ................................................. 34
11、回文号码(1383) ..................................................... 35
12、卡片游戏(1384) ..................................................... 36
第四章:函数 ................................................................. 38
1、石子消耗游戏(1385) .................................................. 38
2、颠倒的数字(1386) .................................................... 40
3、进制转换进阶版(1387) ................................................ 41
4、高精度乘法(1388) .................................................... 42
5、简单的统计(1389) .................................................... 44
6、伪 ackermann 函数(1390) .............................................. 45
7、简单的几何问题(1391) ................................................ 46
8、数组的平衡(1392) .................................................... 47
9、哥德巴赫猜想的验证(1393) ............................................ 48
10、抛硬币(1394) ....................................................... 50
11、组合(1395) ......................................................... 51
1 / 96
12、子矩阵求和(1396) ................................................... 53
第五章:指针 ................................................................. 54
1、查找(1411) .......................................................... 54
2、qsort(1412) ......................................................... 55
3、模式匹配(1413) ...................................................... 57
4、矩阵旋转(1414) ...................................................... 58
5、链表插入排序(1415) .................................................. 59
6、轻松一刻(1416) ...................................................... 63
第六章:自建结构 ............................................................. 64
1、数据排序(1397) ...................................................... 64
2、数列的移动(1398) .................................................... 65
3、整数分类(1399) ...................................................... 68
4、出队统计(1400) ...................................................... 69
5、寻找最大内角(1401) .................................................. 71
6、第 K 早之日(1402) .................................................... 73
第七章: 文件输入输出 ........................................................ 75
1、简单编辑 .............................................................. 75
2、copy.exe .............................................................. 76
3、fc.exe ................................................................ 77
4、归并排序 .............................................................. 79
5、整理成绩 .............................................................. 81
6、借贷记账法 ............................................................ 83
补充题目 ..................................................................... 87
第二章 循环 .................................................................. 87
1、输出菱形(1403) ...................................................... 87
2、分解质因数(1404) .................................................... 88
第三章 数组 .................................................................. 89
1、矩阵链乘的前奏(1405) ................................................ 89
2、字母统计(1406) ...................................................... 90
4、数组搬运(1407) ...................................................... 91
第四章 函数 .................................................................. 92
1、数字黑洞(1408) ...................................................... 92
2、Fibonacci 中的素数(1409) .............................................94
3、亲密对数(1410) ...................................................... 95
凤凰花,开两季,一季送走了老一批的 programmer,另一季迎接来新一批的 programmer。
第一章:选择结构:
1、开学第一考(1355)
Description:
开学的第一个周末,像往届一样,新生都会参加英语分级考试。所谓英语分级考试就是
2 / 96
为了测试一下新生的英语水平,并将他们分成 1~4,4 个等级。分级规则如下:95 分(含
95 分)以上为 level4,只需修一个学期的大学英语;85 分(含 85 分)至 95 分为 level3,
需修大学英语两个学期;75 分(含 75 分)至 85 分为 level2,需修 3 个学期的大学英语;剩
下的为 level1,对不起,就只能修 4 个学期的大学英语了。小明是刚 12 级计算机系的新
生,他不小心知道了自己的分级考试成绩,于是乎他就迫切的想知道自己会被分在哪一个
level,这不,就麻烦一下新生中大神小强,写一个小程序来判定一下小明会被分在哪一个
level 吧!
Input:
输入一个整数 x 代表小明的分数
Output:
输出小明被分在哪一个英语等级,level1、level2、level3、level4,如果分数不在
[0,100]区间内,输出“Error!”(注意:不输出引号)
Sample Input:
60
101
Sample Output:
level1
Error!
#include
int main()
{
int score;
scanf("%d",&score);
if(score>100)
printf("Error!\n");
else if(95<=score)
printf("level4\n");
else if(score>=85)
printf("level3\n");
else if(score>=75)
printf("level2\n");
else if(score>=0)
printf("level1\n");
else
printf("Error!\n");
return 0;
}
Description:
2、小明的考题 1——分段函数
小明是一个数学狂,自吹自擂说自己的数学是如何如何的好,但是他的风头却被大神小
3 / 96
强抢光了,小明就很郁闷,自言自语了一句:不就是编程牛逼点嘛,有本事编几个程序出来
解解数学题啊。运气挺背的是,小强就在他后面,不小心就听到了……小强倒是很大方的
说:要不你就出几个题考考我?小明这下就得瑟了,呵,小样,看我不整死你!因为小明不
知大神的底,于是乎第一题就出了一个简单的分段函数题:
Input:
变量 x
Output:
函数值 f(x)
Sample Input:
-10
Sample Output:
-440
#include
int main()
{
int x,fx,gx;
scanf("%d",&x);
gx=x*x-550;
if(xSample Output:
eight
#include
int main()
{
int x;
scanf("%d",&x);
switch(x)
{
case 0:printf("zero\n");break;
case 1:printf("one\n");break;
case 2:printf("two\n");break;
case 3:printf("three\n");break;
case 4:printf("four\n");break;
case 5:printf("five\n");break;
case 6:printf("six\n");break;
case 7:printf("seven\n");break;
case 8:printf("eight\n");break;
case 9:printf("nine\n");break;
}
return 0;
}
Description:
4、小明的考题 3——必杀技
小明为了这最后一题煞费苦心,不过他还是没有什么头绪。这天,他去宿舍楼下的邮局
给高中的那群哥们姐妹寄几张咱厦大魅力风光的明信片。抬头的时候瞥了一眼墙上挂着的信
函资费说明,详情如下:
平信分本埠和外埠,按首重和续重计收资费,首重 100 克以内,每重 20 克(不足 20 克
按 20 克计算)本埠 0.80 元,外埠 1.20 元。续重 101~2000 克,每重 100 克(不足 100 克
按 100 克计算)本埠 1.20 元,外埠 2.00 元。
这下,小明可就有主意了。他就用这个信函的资费考考小强。
Input:
输入两个正整数 k,w,k=1 or k=2,k=1 代表本埠,k=2 代表外埠。w 代表信函重量,
单位 g
0
5 / 96
int main()
{
int k,w,num;
double cost,extra_cost,ans;
scanf("%d%d",&k,&w);
if(k==1)
{
cost=0.80;
extra_cost=1.20;
}
else
{
cost=1.20;
extra_cost=2.00;
}
if(w<=100)
{
if(w%20==0)
num=w/20;
else
num=w/20+1;
ans=num*cost;
}
else
{
w-=100;
ans=5*cost;
if(w%100==0)
num=w/100;
else
num=w/100+1;
ans+=num*extra_cost;
}
printf("%.2f\n",ans);
return 0;
}
5、四则运算器
Description:
三题下来,小明败得彻彻底底的,看着小强写的那些代码,自己瞬间压力山大了。不
过,小明就是小明,灵光忽地乍现:自己何不拜小强为师,这样以后的编程不就有师傅做靠
6 / 96
山,那不就变得 easy 啦?小明说到做到,当即就拜小强为师。小强秉着助人为乐的原则,
也就收下了小明这个徒弟。不过呢,拜师得有考验才行了,这不,就换小强考考小明啦!不
过,小强也不打算怎么为难小强!既然小明数学不错,那就让他去做做简单的数学方面的题
吧。给出一个计算式,求结果。
ps:计算式只包含“+”、“-”、“*”、“/”其中一种运算
Input:
输入一个计算式,格式为:a # b = 。#为运算符。注意,运算符与数之间有空格!
Output:
输出计算式的结果,保留 4 位小数。当#为/,即计算除法时,要判断除数是否为 0,若
除数为 0,输出“Error!”(输出无引号)
Sample Input:
15 + 23 =
Sample Output:
38.0000
#include
int main()
{
double a,b;
char c;
scanf("%lf %c %lf =",&a,&c,&b);
switch(c)
{
case '+':printf("%.4f\n",a+b);break;
case '-':printf("%.4f\n",a-b);break;
case '*':printf("%.4f\n",a*b);break;
case '/':
if(b==0)
else
break;
printf("Error!\n");
printf("%.4f",a/b);
}
return 0;
}
Description:
6、算日期
自从收了小明这个徒弟之后,小强的生活就没平静过,小明发扬勤奋好问的精神,总是
缠着小强问这问那的。这天,小强在去食堂的路上不小心看见小明迎面走来,正打算避开他
的时候,不过小明也正好看见小强像他走去,就喊着“师傅师傅”,小强这下没得躲了。小
明问了小强非常意外的问题:师傅,今天几号啊。小强随口答道:XX 号。不过就在这时,
小强却想到了一个可以打发小明的方法,他对小明说:小明啊,你不是想让我给你出出题做
嘛,我正好想到一个,今天是 XXXX 年 XX 月 XX 日,你给我算算今天是今年的第多少天吧!
7 / 96
小明还想问问怎么做来着,只见小强已经开溜了…… (XOJ 1181)
Input:
输入一个日期,格式为 yyyy/mm/dd
Output:
输出一个整数,表示该日期在当年中为第几天
Sample Input:
2000/03/01
Sample Output:
61
#include
int main()
{
int day,year,month,sum,leap;
scanf("%d/%d/%d",&year,&month,&day);
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
}
sum=sum+day;
if((year%400==0)||(year%4==0&&year%100!=0))
leap=1;
else
leap=0;
if(leap==1&&month>2)
sum++;
printf("%d\n",sum);
return 0;
}
8 / 96