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