c语言复习题及答案.docx
- 文档编号:7658835
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:15
- 大小:19.40KB
c语言复习题及答案.docx
《c语言复习题及答案.docx》由会员分享,可在线阅读,更多相关《c语言复习题及答案.docx(15页珍藏版)》请在冰豆网上搜索。
c语言复习题及答案
c语言复习题
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;p putchar(*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语言提供的求字符串长度的函数),函数返回较短的字符串。 若两个字符串长度相等,则返回第1个字符串。 例如,输入nanjing #include char*fun(char*s,char*t) { inti,j; for(i=0;s[i]! ='\0';i++);/*求字符串的长度*/ for(j=0;t[j]! ='\0';j++); if(i<=j)/*比较两个字符串的长度*/ returns;/*函数返回较短的字符串,若两个字符串长度相等,则返回第1个字符串*/ else returnt; } main() { chara[20],b[10],*p,*q; inti; printf("Input1thstring: "); gets(a); printf("Input2thstring: "); gets(b); printf("%s",fun(a,b)); } 14.请编写函数fun(),它的功能是: 求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。 #include voidfun(int*a,int*n) { inti,j=0; for(i=1;i<=1000;i++)/*求1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数,并放入数组a中*/ if((i%5==0||i%13==0)&&i%65! =0) a[j++]=i; *n=j;/*传回满足条件的数的个数*/ } main() { intaa[1000],n,k; fun(aa,&n); for(k=0;k if((k+1)%10==0) { printf("%5d",aa[k]); printf("\n");/*一行写10个数*/ } else printf("%5d",aa[k]); } 15.请编写一个函数fun(),它的功能是: 将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。 例如,若输入ABC4efG,则应输出aBc4efg。 #include #include voidfun(char*ss) { inti; for(i=0;ss[i]! ='\0';i++)/*将ss所指字符串中所有下标为偶数位置的字母转换为小写*/ if(i%2==0&&ss[i]>='A'&&ss[i]<='Z') ss[i]=ss[i]+32; } main() { chartt[81]; clrscr(); printf("\nPleaseenteranstringwithin80characters: \n"); gets(tt); printf("\n\nAfterchanging,thestring\n\%s",tt); fun(tt); printf("\nbecomes\n\%s\n",tt); } 16.下列给定程序中函数fun()的功能是: 从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。 例如,当s中的数为4576235时,t中的数为4725。 #include voidfun(longs,long*t) { longs1=10; *t=s%10; while(s>0) { s=s/100; *t=s%10*s1+*t; s1=s1*10; } } main() { longs,t; clrscr(); printf("\nPleaseenters: "); scanf("%ld",&s); fun(s,&t); printf("Theresultis: %ld\n",t); } 17.请编写一个函数fun(),该函数的功能是: 统计字符串str中的单词个数,结果由变量num传回。 每个单词之间都由空格隔开,并且字符串str开始不存在空格。 str是全部由小写字母字符和空格字符组成的字符串例如: str=“howdoyoudo”,结果为: num=4。 #include #defineN80 voidfun(char*s,int*num) { inti,n=0; for(i=0;i<*num;i++) { if(s[i]>='a'&&s[i]<='z'&&(s[i+1]== ''||s[i+1]=='\0')) n++; } *num=n; } main() { charstr[N]; intnum=0; printf("Enterastring: \n"); gets(str); while(str[num]) num++; fun(str,&num); printf("Thenumberofwordis: %d\n\n",num); } 18.编一程序: 从一个字符串中截取前面若干个给定长度的子字符串。 其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。 例如: 当str1=“cdefghij”,然后输入4,则str2=“cdef”。 #include #defineLEN80 main() { charstr1[LEN],str2[LEN]; intn,i; clrscr(); printf("Enterthestring: \n"); gets(str1); printf("Enterthepositionofthestring deleted: "); scanf″%d″,&n); for(i=0;i str2[i]=str1[i]; str2[i]='\0'; printf("Thenewstringis: %s\n",str2); } 19.编一程序: 依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。 #include voidfun(char*s) { inti,j; for(i=0,j=0;s[i]! ='\0';i++) if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z')) s[j++]=s[i]; s[j]='\0';} main() { charitem[80]; clrscr(); printf("\nEnterastring: "); gets(item); printf("\n\nThestringis: \%s\n",item); fun(item); printf("\n\nThestringofchangingis: \%s\n",item); } 20.编一程序: 从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。 例如,当str1=“cdefghij”,则str2=“cegi”。 #include #defineLEN80 main() { charstr1[LEN],str2[LEN]; char*p1=str1,*p2=str2; inti=0,j=0; clrscr(); printf("Enterthestring: \n"); scanf(″%s″,str1); printf("***theorigialstring***\n"); while(*(p1+j)) { printf("%c",*(p1+j)); j++; } for(i=0;i *p2++=*(str1+i); *p2='\0'; printf("\nThenewstringis: %s\n",str2); } 学习委员 2010年6月21日星期一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题 答案