最新c语言复习题+答案Word文档下载推荐.docx
《最新c语言复习题+答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最新c语言复习题+答案Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
+...n!
=%ld\n"
sum);
}
2.从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。
要求按如下函数原型进行编程,分别计算最高分和统计不及格学生的人数:
intFindMax(intscore[],intn);
intCountFail(intscore[],intn);
inti,score[20],max,count;
for(i=0;
i<
20;
scanf("
%d"
&
score[i]);
}
max=FindMax(score,20);
max=%d\n"
max);
count=CountFail(score,20);
count=%d\n"
count);
intFindMax(intscore[],intn)
intmax,i;
max=score[0];
if(score[i]>
max)max=score[i];
returnmax;
intCountFail(intscore[],intn)
intcount,i;
count=0;
if(score[i]<
60)count++;
returncount;
3.一个班有6位同学,每位同学包括学号、姓名、数学、物理、计算机成绩和总分,要求输入学号、姓名、数学、物理、计算机成绩,计算出每位同学的总分,并按总分降序输出。
要求每位同学的信息定义成一个结构体。
structstudent
longnum;
charname[10];
intmt;
intph;
intcm;
intsum;
}stu[6],temp;
voidmain()
inti,j;
for(i=0;
i<
6;
i++)
{scanf("
%ld%s%d%d%d"
stu[i].num,stu[i].name,&
stu[i].mt,&
stu[i].ph,&
stu[i].cm);
stu[i].sum=0;
stu[i].sum=stu[i].mt+stu[i].ph+stu[i].cm;
5;
for(j=i+1;
j<
j++)
if(stu[j].sum<
stu[i].sum)
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
%ld\t%s%5d%5d%5d%5d"
stu[i].num,stu[i].name,stu[i].mt,stu[i].ph,stu[i].cm,stu[i].sum);
\n"
);
4.判断101-200之间有多少个素数,并输出所有素数。
math.h>
intm,i,h=0,leap=1;
printf("
for(m=101;
m<
=200;
m++)
{
for(i=2;
=sqrt(m+1);
if(m%i==0)
{leap=0;
break;
if(leap){printf("
%-4d"
m);
h++;
if(h%10==0)printf("
leap=1;
\nThetotalis%d"
h);
5.编写程序,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
{charc;
intletters=0,space=0,digit=0,others=0;
pleaseinputsomecharacters\n"
while((c=getchar())!
='
\n'
)
if(c>
a'
&
c<
z'
||c>
A'
Z'
letters++;
elseif(c=='
'
space++;
elseif(c>
0'
9'
digit++;
else
others++;
allinall:
char=%dspace=%ddigit=%dothers=%d\n"
letters,
space,digit,others);
}6.编一程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。
voidmain()
{staticcharx[]="
computer"
;
char*p;
for(p=x;
p<
x+7;
p+=2)
putchar(*p);
7.编一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。
要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
string.h>
voidcopystr(char*p1,char*p2,intm)
{intn=0;
while(n<
m-1)
{p2++,n++;
while(*p2!
\0'
{*p1=*p2;
p1++;
p2++;
*p1='
voidmain()
{intm;
charstr1[80],str2[80];
Inputastring:
gets(str2);
Inputm:
scanf("
m);
if(strlen(str2)<
m)
Errinput!
else{copystr(str1,str2,m);
Resultis:
%s\n"
str1);
8.一个求从100米高度自由落下,每次落地后又反弹回原来高度的一半,再落下,求它在第10次落地时共经过多少米?
第10次反弹多高?
编写程序求解该问题。
#include<
floatsn=100.0,hn=sn/2;
intn;
for(n=2;
n<
=10;
n++)
sn=sn+2*hn;
/*第n次落地时共经过的米数*/
hn=hn/2;
/*第n次反跳高度*/
thetotalofroadis%f\n"
sn);
thetenthis%fmeter\n"
hn);
9.编一程序,将2000年到3000年中的所有闰年年份输出并统计出闰年的总年数,要求每10个闰年放在一行输出。
main()
{intyear=0,number=0;
for(year=2000;
year<
3000;
year++)
{if((year%4==0&
year%100!
=0)||year%400==0)
{printf("
%6d"
year);
number++;
if(number%10==0)printf("
}
printf("
\ntotalnumberofleapyearis%d"
number);
10试编一程序完成以下功能:
定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;
然后按顺序每5个数求出一个平均值,放在另一数组中并输出。
{inta[30],b[6],sum=0,k,j=0;
for(k=0;
k<
30;
k++)
a[k]=(k+1)*2;
if(k%5==0){b[j]=sum/5;
j++;
sum=0;
elsesum=sum+a[k];
for(j=0;
printf(“%4d”,b[j]);
11.编一程序,从键盘输入10个整数并保存到数组,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换位置。
main()
{inti,array[10];
intmin,k=0;
printf(“\nPleaseinputarray10elements\n”);
10;
array[i]);
printf(“Beforeexchange:
\n”);
printf(“%5d”,array[i]);
min=array[0];
for(i=1;
if(min>
array[i])
{min=array[i];
k=i;
array[k]=array[0];
array[0]=min;
printf(“\nAfterexchange:
printf(“\nk=%d\nmin=%d\n”,k,min);
12.试编程完成如下功能:
输入一个不多于4位的整数,求出它是几位数,并逆序输出各位数字。
#include<
intx,n,t;
x);
n=0;
while(x>
0)
t=x%10,
t);
x=x/10;
n++;
n=%d\n"
n);
13.请编写一个函数fun(),它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。
若两个字符串长度相等,则