C语言试题Word下载.docx
《C语言试题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言试题Word下载.docx(67页珍藏版)》请在冰豆网上搜索。
32.编一个程序,将两个字符串连接起来,不要用strcat函数。
33.编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。
34.用指针实现输入3个整数并按从小到大的顺序输出。
35.用指针实现输入3个整数并按从大到小的顺序输出。
36.用指针实现将数组b[10]中的元素按逆序存放。
37.编写一程序,实现从键盘接收一个字符串,然后删除其中的空格后并输出。
如:
输入“Iamastudent!
”,输出“Iamastudent!
”,要求用指针实现。
38.用冒泡法实现对10个整数按从大到小的顺序排序输出(要求用指针实现)。
39.用选择法实现对10个整数按从小到大的顺序排序输出(要求用指针实现)。
40.编写一个函数实现字符串复制功能(要求用指针作为函数参数)。
41.定义一个结构体变量(包括年、月、日)。
计算当天是本年中的第几天,注意闰年问题。
42.设计候选人得票统计程序,要求有4个侯选人(分别是Zhang、Wang、Li、Zhao),选民每次输入一个被选人的姓名,最后统计出各人的得票结果。
43.定义一个包括学号、姓名、年龄的学生结构体,要求实现三个学生信息的输入输出,并输出平均年龄。
44.定义一个包括教师编号、姓名、工资的教师结构体,要求实现三个教师信息的输入输出,并输出平均工资。
45.定义一个包括职员号、姓名、工资的职员结构体,要求实现三个职员信息的输入输出,并输出平均工资。
46.建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩。
47.写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度(要求用指针实现)。
48.有一个一维数组score,内放10个学生成绩,用一个函数求平均成绩,并将10个成绩中不及格(小于60)的成绩和该成绩在数组中的序号输出。
49.有一个一维数组内放10个数,设计函数,求出10个数中的最大值、最小值、平均值。
50.找出一个2维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。
51.输入3个学生4门课的成绩,分别用函数实现如下功能:
(1)计算每个学生平均分;
(2)计算每门课的平均分;
(3)找出12个分数中最高分所对应的学生和课程。
52.用一个函数实现将一行字符串中的最长的单词输出。
此行字符串从主函数传递给该函数。
53.输出菱形图案(要求用循环实现)
54.有一个已排好序的数组,要求输入一个数后,按原来排序的规律将她插入数组中。
55.写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。
56.有一篇文章,共有4行文章,每行有60个字符。
要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。
57.有一行电文,已按下面规律译成密码:
A→Za→z
B→Yb→y
C→Xc→x
即第1个字母变成第26个字母,第i个字母变成第(26–i+1)个字母。
非字母符号不变。
要求编程序将密码译回原文,并输出密码和原文。
58.有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位(要求用指针知识实现)。
59.有3个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入3个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)(用结构体)。
60.写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出。
61.编一程序,输入月份号,输出该月的英文月名。
例如,输入3,则输出March,要求用指针数组处理。
62.从键盘上读入3个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。
63.在磁盘文件上存有10个学生的数据。
要求将第1,3,5,7,9个学生数据输入计算机,并在屏幕上显示出来。
64.有两个磁盘文件“file1”和“file2”,各存放一行字母,要求把两个文件中的信息合并(按字母顺序排序),输出到一个新文件“file3”中去。
参考答案
1、
#include<
stdio.h>
voidmain()
{
floatx;
inty;
printf("
请输入一个x的值:
\nx="
);
scanf("
%f"
&
x);
if(x<
0||x>
100)
y=-1;
elseif(x==0)
y=0;
else
y=1;
y=%d"
y);
\n"
}
2、
floata,b,c,t;
请输入三个数,数之间以空格连接:
\n输入的数分别为:
"
%f%f%f"
a,&
b,&
c);
if(a<
b)
{
t=a;
a=b;
b=t;
}
c)
a=c;
c=t;
if(b<
t=b;
b=c;
a、b、c由大到小排列为:
\n%.2f\n%.2f\n%.2f\n"
a,b,c);
3、
floata,b,c,d,max=0,min=0;
请输入四个数字,中间以空格分开:
四个数字分别为:
%f%f%f%f"
c,&
d);
max=(a>
b)?
a:
b;
max=(max>
c)?
max:
c;
d)?
d;
min=(a<
min=(min<
min:
四个数中最大的数为:
%.2f\n"
max);
四个数中最小的数为:
min);
4、
floatfen;
intc;
请输入学生的成绩:
fen);
if(fen<
0||fen>
c=4;
elseif(fen>
=0&
&
fen<
60)
c=5;
c=fen/10;
switch(c)
case9:
printf("
学生成绩等级为:
A\n"
break;
case8:
B\n"
case7:
C\n"
case6:
D\n"
case5:
E\n"
case4:
输入数据有误\n"
5、
floatx,y;
请输入一个x值x="
1)
y=x;
if(x==10)
y=3*x-11;
y=2*x-1;
y的值为:
y=%.2f\n"
6、
inti,j,k,n=0;
300-400间所有素数为:
for(i=301;
i<
=400;
i++,i++)
{
k=i/2;
for(j=2;
j<
=k;
j++)
if(i%j==0)break;
if(j==k+1)
{
printf("
%d"
i);
n++;
if(n%5==0)
printf("
}
}
7、
inti,j=0;
1-100间只能被7和11一个数整除的数为:
\n\n"
for(i=7;
=100;
i++)
if(i%7==0&
i%11!
=0||i%7!
i%11==0)
{
j++;
printf("
%6d"
if(j%5==0)
}
8、
intf1=1,f2=1,i;
Fibonacci数列前二十个数为:
for(i=1;
=10;
printf("
%6d%6d"
f1,f2);
f1=f1+f2;
f2=f2+f1;
if(i%2==0)
9、
doublesum=0,t=1;
intn;
for(n=1;
n<
n++)
t=t*n;
sum=sum+t+3;
1!
+3+2!
+3+3!
+3+…+10!
+3=%.0f\n"
sum);
10、
inti;
doublea=2,b=1,s=0,t;
=20;
s=s+b/a;
t=a;
a=a+b;
b=t;
1/2+2/3+3/5+…=%16.10f\n"
s);
11、
inti,a,b,c;
小于500的所有水仙花数为:
for(i=100;
500;
a=i/100;
b=i/10-a*10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
12、
intm,n[6],i=0,j;
请输入一个小于七位的整数:
%d"
m);
while(m!
=0)
n[i]=m%10;
m=m/10;
i++;
它是一个%d位数。
正序输出为:
for(j=i-1;
j>
=0;
j--)
%3d"
n[j]);
逆序输出为:
for(j=0;
i;
13、
#include<
inta=5,n=5,i=1,sn=0,tn=0;
=5;
tn=tn+a;
sn=sn+tn;
a=a*10;
5+55+..+55555=%d\n"
sn);
14、
inti,j,k=0,m;
倒三角的9*9口诀表为:
for(i=9;
i>
=1;
i--)
for(j=i;
k=i*j;
k);
}
15、
math.h>
{doublea,b,c,x,x1,x2,disc,realpart,imagepart;
请输入a,b,c三个数,两数间以空格分开:
输入的a,b,c分别为:
%lf%lf%lf"
方程"
if(fabs(a)<
1e-6)
x=-c/b;
是一元一次方程,它的根为:
\nx=%.4f\n"
x);
disc=b*b-4*a*c;
if(fabs(disc)<
有两个相等的实根:
\nx1=x2=%8.4f\n"
-b/(2*a));
else
if(disc>
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
有两个不相等的实根:
\nx1=%8.4f,\nx2=%8.4f\n"
x1,x2);
realpart=-b/(2*a);
imagepart=sqrt(-disc)/(2*a);
有两个复根:
x1=%8.4f+%8.4fi\n"
realpart,imagepart);
x2=%8.4f-%8.4fi\n"
16、
charc;
intletters=0,digit=0,other=0;
请输入一行字符:
while((c=getchar())!
='
\n'
)
if(c>
a'
c<
z'
||c>
A'
Z'
letters++;
elseif(c>
0'
9'
digit++;
else
other++;
字母数:
%d\n数字数:
%d\n其他字符数:
%d\n"
letters,digit,other);
}
17、
intmain()
inta=1,b=2,c=3,d=4,m=0;
inti,j,k,n;
1、2、3、4能组成的无重复数字的三位数有:
=4;
for(j=1;
for(k=1;
k<
k++)
{
if(i==j||i==k||k==j)continue;
n=i*100+j*10+k;
m++;
n);
if(m%5==0)
putchar('
18、
inta[10];
inti,j,t;
请输入10个数,以空格隔开:
for(i=0;
10;
scanf("
a[i]);
由小到大排列为:
for(i=0;
9;
if(a[i]>
a[j+1])
t=a[i];
a[i]=a[j+1];
a[j+1]=t;
%5d"
a[i]);
19、
inti,j,k,a[2][3],b[3][2];
请输入数组a[2][3],六个整数以空格分开:
2;
for(j=0;
3;
scanf("
a[i][j]);
a数组为:
a[i][j]);
b[j][i]=a[i][j];
b数组为:
b[i][j]);
20、
inta[3][4],i,j,max;
请输入数组a[3][4],十二个数,以空格分开:
4;
max=a[0][0];
if(max<
a[i][j])
max=a[i][j];
最大数为:
%3d\n"
if(a[i][j]==max)
行数为:
%3d\n列数为:
i+1,j+1);
21、
charstr[80];
请输入一行字符:
putchar('
gets(str);
str[i]!
\0'
;
if(str[i+1]=='
'
||str[i+1]=='
单词个数为%3d\n\n"
j);
22、
string.h>
charstr1[80],str2[80],str3[80],longest[80];
输入三个字符串,之间以回车连接:
gets(str1);
gets(str2);
gets(str3);
strcpy(longest,str1);
if(strcmp(str1,str2)<
0)
if(strcmp(str2,str3)<
最长的字符串是:
%s\n\n"
longest);
23、
intmax(intx,inty),a,b;
请输入两个整数a和b,以空格连接