C语言必考100题.docx
《C语言必考100题.docx》由会员分享,可在线阅读,更多相关《C语言必考100题.docx(99页珍藏版)》请在冰豆网上搜索。
C语言必考100题
1.按下述格式,从键盘输入一个整数加法表达式:
操作数1+操作数2,然后计算并输出表达式的计算结果,形式如下:
操作数1+操作数2=计算结果。
2.输入两个整形数并打印,如果用户不慎输入了非法字符,那么程序提示“输入数据类型错误”。
3.已知三角形的三边长a,b,c,要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积(注意不存在的情况)。
4.编程从键盘输入圆的半径r,计算并输出圆的周长和面积。
5.任意从键盘输入一个三位整数,要求正确分离它的个位,十位和百位数,并分别在屏幕上输出。
6.写一个函数实现统计一个输入的整形数的位数。
7.编程计算方程ax*x+bx+c=0的根,a,b,c由键盘输入,只是用主函数来实现。
8.编写三个函数,分别在b*b-4*a*c大于0、小于0、等于0时进行调用,并输出结果,在主函数中读入a、b、c的值。
9.从键盘输入你和你朋友的年龄,变成判断谁的年龄大,并打印最大者的年龄。
10.从键盘输入一个年份,判断该年是否是闰年,并输出结果。
11.判断某人是否属于肥胖体型。
根据身高与体重因素,医务工作者经广泛的调查分析给出了以下按“体指数”对肥胖程度的划分:
体指数t=w/h*h(w为体重,单位为kg,h为身高,单位为m)。
当t<18时,为低体重;当t介于18和25之间时,为正常体重;当t介于25和27之间时,为超重体重;当t≧27时,为肥胖。
编程从键盘输入你的身高h和体重w,根据上式,判断体重类型。
12.利用switch语句将百分制成绩转化为五分制成绩。
13.利用switch语句将五分制成绩转换成对应分数范围并输出。
14.编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1运算符op操作数2计算表达式的值,指定的运算符为加减乘除。
15.利用时间函数编写一个猜数程序。
16.编程实现计算n的阶乘。
17.利用函数递归实现计算n!
。
18.利用π/4=1-1/3+1/5-1/7……计算π的值直到最后一项的绝对值小于0.0001为止,要求统计总共累加了多少项。
19.编程输出正三角格式的九九乘法表。
20.编程输出下三角格式的九九乘法表。
21.从键盘任意输入一个正整数,编程判断它是否是素数,若是素数,输出“YES”,否则输出“NO!
”。
22.编写一个程序实现输出1—100之间所有素数。
23.编写一个程序实现输出任意指定m、n之间的所有素数。
24.读入一个年份和月份,打印出该月有多少天(考虑闰年),用switch语句编程。
25.打印所有的水仙花数。
所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
(例159=1*1*1+3*3*3+5*5*5)
26.鸡兔同笼,共有98个头,386只脚,编程求鸡兔各多少只。
27.用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?
并输出每种方案。
28.三色球问题。
若一个口袋中放有12个球,其中有3个红色的,3个白色的,6个黑色的,从中任取8个球,问共有多少种不同的颜色搭配?
29.打印100以内整数的平方根表。
30.编程打印一下图案:
@
@@@
@@@@@
@@@@@@@
31.设计一个函数,计算两个正整数的最小公倍数。
32.设计一个函数,计算两个正整数的最大公约数。
33.编程使二维数组a[m][n]按如下输入输出例:
input123output14
45625
36
34.从键盘输入某班学生某门课的成绩(每班人数最多不超过40人,具体人数由键盘输入),试编程打印最高分及其学生序号。
35.从键盘输入五个数,利用冒泡法排序,输出排序后的结果。
36.从键盘输入五个数,利用选择法排序,输出排序后的结果。
37.从键盘任意输入五个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名。
38.从键盘任意输入五个学生的姓名,编程找出并输出按字典顺序的五个学生姓名。
39.编程实现从键盘任意输入5个正整数,统计非负数个数,并计算非负数之和。
40.从键盘任意输入5个正整数,用函数编程实现将其中最大数和最小数的位置对换后,再输出调整后的数组。
41.输入5*5的矩阵,编程实现:
求两条对角线上行、列下标均为偶数的各元素之积。
(提示(i==j)||(i+j==4)&&(i%2==0)&&(j%2==0))
42.编程将下列矩阵中的元素向右移动一列,最后一行移至第一列。
193
51021
43.输入一行字符,统计其中的英文字符、数字字符、空格及其他字符的个数。
44.从键盘任意输入两个整数,利用指针变量作为函数参数,编程实现两数互换功能,然后将交换后的数据重新输出。
45.用字符指针编程实现字符串复制函数。
46.用字符指针编程实现求字符串长度函数。
47.编写一个程序,可以实现在一个数组中删除指定的元素。
如:
数组元素为1,2,3,输入3,便删除3,输出1,2;若输入4,则继续输出1,2,3。
48.编程将若干字符串按字母顺序由小到大排序后输出。
(二维数组和指针数组均可)。
49.编程输入一个班的某课程的学生成绩,计算其平均分,然后输出,班级人数由键盘输入。
50.编程实现从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串(要求:
使用头指针和尾指针来实现)。
51.编程判断输入的一串字符是否为“回文”。
所谓回文是指顺读和倒读都一样的字符串,如“ABCCBA”是回文。
52.用指针数组编程实现:
从键盘任意输入一个数字表示月份值n,程序输出该月份的英文表示,若n不在1~12之间,则输出“Illegalmonth”。
("January","February","March","April","May","June","July","Aguest","September","October","November","December")(课本308)
53.从键盘任意输入5个整数,用函数编程实现计算最大值和最小值,并返回它们所在数组中的位置。
54.不使用函数strcat(),编程实现字符串连接函数(使用指针实现)。
55.不使用函数strcat(),编程实现字符串连接函数(使用数组实现)。
56.编程实现将二维数组a[m][n]任意向右平移i各单位,i57.利用公式Cij=Aij+Bij计算m*n阶矩阵A和m*n阶矩阵B之和,并输出。
(提示:
用二维数组实现矩阵相加)
58.编写一个函数,利用数组实现对字符串的逆序排放并在主函数中输出。
59.有如下数列,“1,1,2,3,5,8,13……”,编程实现输出其前20项,每行五个。
60.编程打印如下的杨辉三角
1
11
121
1331
14641
15101051
61.编写一个Insert()函数,实现对一个有序数列a[n]的插入。
62.编写一个Delet()函数,实现对一个有序数列某个特定元素的删除,释放其所占有
的空间,并输出处理后的数组,若没有找到,则只输出notfind!
63.编程实现:
任意输入英文星期几,在查找星期表后输出对应的数字。
若为查找到,则输出Notfind!
0Sunday
1Monday
2Tuesday
3Wednesday
4Thursday
5Friday
6Saturday
64.编写一个计算任意m行n列的二维数组中元素的最大值,并指出其所在的行列的函数FindMax()。
假设利用FindMax()计算3个班每班4个学生的某门成绩的最高分,并指出其所在的行列。
65.利用动态内存分配实现:
编程输入一个班的某门课成绩,计算平均分,然后输出。
班级人数由键盘输入。
66.利用动态内存分配实现:
编程输入m个班(每班n个学生)某门课的成绩,计算最高分,并指出具有最高分的学生是第几个班的第几个学生。
67.利用指针,编程实现对于长度为n的字符串输出n次,每次较上次首字符不再输出。
例如:
”abcde”,依次输出abcdebcdecdedee。
68.结构体数组应用:
模拟洗牌和发牌过程。
一副扑克有52张,分4种花色(Suit),黑桃(Spades),红桃(Hearts),草花(Clubs),方块(Diamonds)。
每种花色有分13张牌面(Face):
A,2,3,4,5,6,7,8,9,10,Jack,Queen,King。
编程完成洗牌和发牌过程。
(难度很大)
69编写一个程序实现给出年月日,计算该日是该年的第几天。
70.给出年份和该年第几天,输出这天是该年的几月几日。
71..编写一个函数,求一个给定数的所有因子。
如72=2*2*2*3*3.
72.编写一个函数,利用循环调用函数依次返回两个整数m,n的所有公约数。
例如100,50返回值依次为50,25,10,5,2.
73.写一个函数,实现计算n!
通过主函数调用,实现计算组合数。
74.有一行文字,要求删去其中某个字符。
此行文字和要删的字符均由键盘输入,要删的字符以字符形式输入(如输入a表示要删去所有的字符a).
75.输入一行字符,统计其中多有少个单词。
假设单词之间以空格分开。
(提示:
判断是否有新单词出现的方法—当前被检字符不是空格,而前一被检字符不是空格,则表示有新单词出现)
76.编写一个函数实现Mystrcmp()用于实现strcmp()的功能,,将两个字符串进行比较,,然后将两个字符串中第一个比相同的字符的ASCII码值之差作为返回值返回。
77.写一个函数,判断自身不存在相同字符的两个字符串是否可以通过重排字符而得到,例如dare和read、dear都有这种关系。
78.输入10个整数,将其中最小的数与第一个数交换,最大的数与最后的一个数对换。
写三个函数:
1)输入10个数2)进行处理3)输出10个数
79.有n个整数,使前面各数向后平移m个位置,最后m个数变成最前的m个数。
例12345前移两位34512,改变数据在计算机内存中的位置,并进行输出。
80.在主函数中输入10个等长的字符串。
用一个函数对它们排序,然后在主函数输出10个已排好序的字符串。
81.在主函数中输入10个任意长度的字符串。
用一个函数对它们排序,然后在主函数输出10个已排好序的字符串。
82.利用一维数组实现替代二维数组来完成对m*n阶数组的转置。
要求:
改变数据在计算机内存中的位置,然后在主函数中输出。
83.写一字符串,包含n个字符,写一函数,将此字符串从第m个字符开始的全部字符复制成另一个字符串,并进行输出。
84..输入一个名词英语单词,按照语法规则将单数转换成复数。
规则如下:
1)以辅音字母y结尾,则加es;
2)以s、x、ch、sh结尾,则加es;
3)以元音o结尾,则加es;
4)其它情况加上s。
85.写一个求三个数平均数的函数,并对其进行调用。
86.通过键盘输入一个字符,判断该字符是数字字符、大写字符、小写字符、空格还是其它字符。
87.编程判断输入整数的正负性
88.编程计算分段函数
89.编程判断输入整数的奇偶性。
90.在屏幕上显示一张如下所示的时间表:
*****Time*****
1.morning
2.afternoon
3.night
Pleaseenteryourchoice:
操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息。
若出现其他,则显示“Selectionerror!
”,用switch语句编程实现。
91.编程实现输出1~100之间的素数。
92.25个人围成一个圈,从第一个人开始顺序报号,凡报号为3和3的倍数的人退出圈子,找出最后留在圈子中的人原来的序号。
(提示:
用链表方式实现)
93.利用指向结构体数组计算学生各科的平均成绩,学生成绩可以在程序源代码中输入,科目数大于等于两科。
94文件操作:
创建一个名为student.bin的文件,向其中输入至少三中类型的数据,关闭文件。
95文件操作:
打开名为student.bin的文件,读出其中的内容。
96.在必然出错的情况下调用open(),输出错误信息。
97.编程实现输出如下图案:
******
*****
*****
*****
*****
*****
*****
98.调用时间函数产生两个随机数,输出两个随机数,人比较两个数的大小,输入答案,计算机判断对错。
99.韩信点兵。
韩信有一队兵,他想知道有多少人,便让士兵排队报数。
按从1至5报数,最后一个士兵报的数为1;按从1至6报数,最后一个士兵报的数为5;按从1至7报数,最后一个士兵报的数是4;按从1至11报数,最后一个士兵报的数为10。
求韩信的兵数。
100.计算球的表面积和体积,用goto实现多次运算。
答案:
1.#include
main()
{
intx1,x2;
charop;
printf("Pleaseenterx1+x2\n");
scanf("%d%c%d",&x1,&op,&x2);
printf("%d%c%d=%d\n",x1,op,x2,x1+x2);
return0;
}
2.#include
main()
{
inta,b,ret;
printf("Pleaseentera,b:
");
ret=scanf("%d%d",&a,&b);
if(ret!
=2)
{
printf("输入类型错误\n");
fflush(stdin);
}
else
{
printf("a=%d,b=%d\n",a,b);
}
}
3.
#include
#include
main()
{
floata,b,c,area,t;
printf("请输入a,b,c:
");
scanf("%f%f%f",&a,&b,&c);
t=1.0/2*(a+b+c);
if(a+b>c&&a+c>b&&b+c>a)
{
area=sqrt(t*(t-a)*(t-b)*(t-c));
printf("area=%f\n",area);
}
else
printf("不构成三角形");
}
4.
#include
#definePI3.14
main()
{
floatr,c,area;
printf("Pleaseenterr:
");
scanf("%f",&r);
c=2*PI*r;
area=PI*r*r;
printf("c=%f,area=%f\n",c,area);
}
5.
#include
main()
{
intk,a,b,c;
printf("Pleaseenterk:
");
scanf("%d",&k);
a=k/100;
b=(k-a*100)/10;
c=k%10;
printf("a=%d,b=%d,c=%d\n",a,b,c);
return0;
}
6.
#include
main()
{
inta,count=1;
printf("请输入一个数字:
");
scanf("%d",&a);
while(a>=10)
{
a=a/10;
count++;
}
printf("这个数是%d位数\n",count);
}
7.
#include
#include
voidmain()
{
floata,b,c,dlt;
printf("请输入a,b,c:
");
scanf("%f%f%f",&a,&b,&c);
dlt=b*b-4*a*c;
if(dlt>=0)
{
printf("x1=%0.2f,x2=%0.2f",(-b+sqrt(dlt))/2*a,(-b-sqrt(dlt))/2*a);
}
else
{
printf("x1=%0.2f+%0.1fi",-b/2*a,sqrt(-dlt)/2*a);
printf("\n");
printf("x2=%0.2f-%0.1fi",-b/2*a,sqrt(-dlt)/2*a);
}
}
8.
#include
#include
voidf1(floata,floatb,floatc)
{
floatx1,x2,dlt;
dlt=b*b-4*a*c;
printf("x1=%0.2f,x2=%0.2f",(-b+sqrt(dlt))/2*a,(-b-sqrt(dlt))/2*a);
}
voidf2(floata,floatb,floatc)
{
floatx;
x=-b/2*a;
}
voidf3(floata,floatb,floatc)
{
floatx1,x2,dlt;
dlt=b*b-4*a*c;
printf("x1=%0.2f+%0.1fi",-b/2*a,sqrt(-dlt)/2*a);
printf("\n");
printf("x2=%0.2f-%0.1fi",-b/2*a,sqrt(-dlt)/2*a);
}
main()
{
floata,b,c,dlt;
printf("请输入a,b,c:
");
scanf("%f%f%f",&a,&b,&c);
dlt=b*b-4*a*c;
if(dlt>0)
{
f1(a,b,c);
}
elseif(dlt=0)
{
f2(a,b,c);
}
else
{
f3(a,b,c);
}
}
9.
#include
main()
{
intyourAge,hisAge;
printf("Pleaseenteryourage:
");
scanf("%d",&yourAge);
printf("Pleaseenteryourfriend'sage:
");
scanf("%d",&hisAge);
if(yourAge>=hisAge)
{
printf("youareolder!
yourageis=%d\n",yourAge);
}
else
{
printf("yourfriendisolder!
hisageis=%d\n",hisAge);
}
}
10.
#include
main()
{
inty;
printf("请输入年份:
");
scanf("%d",&y);
if((y%4==0&&y%100!
=0)||(y%400==0))
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}
11.
#include
main()
{
floath,w,t;
printf("请输入你的身高和体重(身高单位为米,体重单位为kg):
");
scanf("%f%f",&h,&w);
t=w/(h*h);
if(t<18)printf("低体重\n");
elseif((t<25)&&(t>=18))
{
printf("正常体重\n");
}
elseif((t>=25)&&(t<27))
{
printf("超重体重\n");
}
elseprintf("肥胖\n");
}
12.
#include
main()
{
intscore,mark;
printf("请输入分数:
");
scanf("%d",&score);
mark=score/10;
switch(mark)
{
case10:
case9:
printf("%d--A\n",score);break;
case8:
printf("%d--B\n",score);break;
case7:
printf("%d--C\n",score);break;
case6:
printf("%d--D\n",score);break;
case5:
case4:
case3:
case2:
case1:
case0:
printf("%d--E\n",score);break;
default:
printf("error\n");
}
}
13.
#include
main()
{
charscore;
printf("请输入五分制分数:
");
scanf("%c",&score);
switch(score)
{
case'A':
printf("A:
90-100\n");break;
case'B':
printf("B:
80-90\n");break;
case'C':
printf("C:
70-80\n");break;
case'D':
printf("D:
60-70\n");break;
case'E':
printf("E:
0-60\n");break;
default:
printf("error\n");
}
}
14.
#include
main()
{
inta,b;
charop;
printf("输入表达式:
");
scanf("%d%c%d",&a,&op,&b);
switch(op)
{
case'+':
printf("%d\n",(a+b));break;
case'-':
printf("%d\n",(a-b));break;
case'*':
printf("%d\n",(a*b));break;
case'/':
printf("%d\n",(a*b));break;
}
}
15.
#include
#include
#include
voidmain()
{
intmagic,guess,counter;
unsignedintseed;
srand(time(NULL));
magic=rand()%100+1;
counter=0;
do{
printf("pleaseguessamagicnumber:
");
scanf("%d",&guess);
counter++;
if(guess>magic)
{
printf("wrong!
toohigh\n");
}
else