第2部分C语言程序设计练习四.docx
《第2部分C语言程序设计练习四.docx》由会员分享,可在线阅读,更多相关《第2部分C语言程序设计练习四.docx(27页珍藏版)》请在冰点文库上搜索。
第2部分C语言程序设计练习四
《C语言程序设计》练习四
程序填充题:
根据题目描述的程序功能,在给出程序的横线处缺少的部分补上相应内容,使其能正确运行。
1.使用二维数组形成并按下列形式输出数据
#include
voidmain()
{inti,j,___________;/*第一空*/
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=_________;/*第二空*/
{for(j=0;j<5;j++)
printf("%2d",a[i][j]);
__________;/*第三空*/
}
2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。
#define_________/*第一空*/
{inti,a[N];
for(i=N-1;________;i--)/*第二空*/
scanf("%d",_________);/*第三空*/
for(i=0;iprintf("\n");} 3.分别统计并输出17、18、19和20岁各年龄的学生人数。#includevoidmain(){inti,n,age,a[30];for(i=0;i<30;i++)a[i]=0;scanf("%d",&n);/*输入人数<30*/for(i=0;i{scanf("%d",&age);/*输入年龄*/if(age<17||age>20)____________;/*第一空*/elseswitch(________)/*第二空*/{case17case18:case19:case20:a[age-17]++;}}for(i=0;i<=3;i++)printf("age=%dnumber=%d\n",i+17,________);/*第三空*/}4.将从键盘输入的字符串逆序显示。#include#includevoidmain(){intn;charstr[80],*p;printf("Inputastring:\n");gets(str);/*输入字符串*/n=strlen(_______);/*第一空*/p=str+______-1;/*第二空*/while(p>=str){printf("%c",*p);_________;/*第三空*/}printf("\n");} 5..输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。#include#defineN10voidmain(){inti,month;intbirth[13]={0};/*birth[1]~birth[12]分别保存1~12月过生日的学生数*/for(i=1;i<=N;i++){scanf("%d",________);/*第一空*/if(month>=1&&month<=12)birth[month]++;}for(i=1;__________;i++)/*第二空*/printf("%dmonth__________\n",i,birth[i]);/*第三空*/6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。#includevoidmain(){inti,n;longsum=0;longcal(int);scanf("%d",&n);for(i=1;i<=n;i++)sum=sum+cal(________);/*第一空*/printf("1+(1+2)+…+(1+2+…+n)=%ld\n",sum);}longcal(________)/*第二空*/{staticlongs=0;s=s+m;______________;/*第三空*/} 7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。#include#defineN10voidmain(){inti,j,t,a[N];for(i=0;ifor(i=0;ifor(j=N-1;j>=i+1;________)/*第一空*/if(a[j]{t=a[j];_________;a[j-1]=t;}/*第二空*/for(i=0;iprintf("\n");} 8.为二维数组各元素输入数据,计算并输出全部元素之和。#include#defineN5voidmain(){inti,j,a[N][N],sum=0;/*第一空*/for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
printf("\n");
3.分别统计并输出17、18、19和20岁各年龄的学生人数。
{inti,n,age,a[30];
for(i=0;i<30;i++)a[i]=0;
scanf("%d",&n);/*输入人数<30*/
for(i=0;i{scanf("%d",&age);/*输入年龄*/if(age<17||age>20)____________;/*第一空*/elseswitch(________)/*第二空*/{case17case18:case19:case20:a[age-17]++;}}for(i=0;i<=3;i++)printf("age=%dnumber=%d\n",i+17,________);/*第三空*/}4.将从键盘输入的字符串逆序显示。#include#includevoidmain(){intn;charstr[80],*p;printf("Inputastring:\n");gets(str);/*输入字符串*/n=strlen(_______);/*第一空*/p=str+______-1;/*第二空*/while(p>=str){printf("%c",*p);_________;/*第三空*/}printf("\n");} 5..输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。#include#defineN10voidmain(){inti,month;intbirth[13]={0};/*birth[1]~birth[12]分别保存1~12月过生日的学生数*/for(i=1;i<=N;i++){scanf("%d",________);/*第一空*/if(month>=1&&month<=12)birth[month]++;}for(i=1;__________;i++)/*第二空*/printf("%dmonth__________\n",i,birth[i]);/*第三空*/6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。#includevoidmain(){inti,n;longsum=0;longcal(int);scanf("%d",&n);for(i=1;i<=n;i++)sum=sum+cal(________);/*第一空*/printf("1+(1+2)+…+(1+2+…+n)=%ld\n",sum);}longcal(________)/*第二空*/{staticlongs=0;s=s+m;______________;/*第三空*/} 7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。#include#defineN10voidmain(){inti,j,t,a[N];for(i=0;ifor(i=0;ifor(j=N-1;j>=i+1;________)/*第一空*/if(a[j]{t=a[j];_________;a[j-1]=t;}/*第二空*/for(i=0;iprintf("\n");} 8.为二维数组各元素输入数据,计算并输出全部元素之和。#include#defineN5voidmain(){inti,j,a[N][N],sum=0;/*第一空*/for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
{scanf("%d",&age);/*输入年龄*/
if(age<17||age>20)____________;/*第一空*/
else
switch(________)/*第二空*/
{case17
case18:
case19:
case20:
a[age-17]++;
for(i=0;i<=3;i++)
printf("age=%dnumber=%d\n",i+17,________);/*第三空*/
4.将从键盘输入的字符串逆序显示。
{intn;
charstr[80],*p;
printf("Inputastring:
\n");
gets(str);/*输入字符串*/
n=strlen(_______);/*第一空*/
p=str+______-1;/*第二空*/
while(p>=str)
{printf("%c",*p);
_________;/*第三空*/
5..输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。
#defineN10
{
inti,month;
intbirth[13]={0};/*birth[1]~birth[12]分别保存1~12月过生日的学生数*/
for(i=1;i<=N;i++)
scanf("%d",________);/*第一空*/
if(month>=1&&month<=12)birth[month]++;
for(i=1;__________;i++)/*第二空*/
printf("%dmonth__________\n",i,birth[i]);/*第三空*/
6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。
inti,n;
longsum=0;longcal(int);
scanf("%d",&n);
for(i=1;i<=n;i++)sum=sum+cal(________);/*第一空*/
printf("1+(1+2)+…+(1+2+…+n)=%ld\n",sum);
longcal(________)/*第二空*/
staticlongs=0;
s=s+m;
______________;/*第三空*/
7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。
{inti,j,t,a[N];
for(i=0;ifor(i=0;ifor(j=N-1;j>=i+1;________)/*第一空*/if(a[j]{t=a[j];_________;a[j-1]=t;}/*第二空*/for(i=0;iprintf("\n");} 8.为二维数组各元素输入数据,计算并输出全部元素之和。#include#defineN5voidmain(){inti,j,a[N][N],sum=0;/*第一空*/for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
for(i=0;ifor(j=N-1;j>=i+1;________)/*第一空*/if(a[j]{t=a[j];_________;a[j-1]=t;}/*第二空*/for(i=0;iprintf("\n");} 8.为二维数组各元素输入数据,计算并输出全部元素之和。#include#defineN5voidmain(){inti,j,a[N][N],sum=0;/*第一空*/for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
for(j=N-1;j>=i+1;________)/*第一空*/
if(a[j]{t=a[j];_________;a[j-1]=t;}/*第二空*/for(i=0;iprintf("\n");} 8.为二维数组各元素输入数据,计算并输出全部元素之和。#include#defineN5voidmain(){inti,j,a[N][N],sum=0;/*第一空*/for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
{t=a[j];_________;a[j-1]=t;}/*第二空*/
for(i=0;iprintf("\n");} 8.为二维数组各元素输入数据,计算并输出全部元素之和。#include#defineN5voidmain(){inti,j,a[N][N],sum=0;/*第一空*/for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
8.为二维数组各元素输入数据,计算并输出全部元素之和。
#defineN5
inti,j,a[N][N],sum=0;/*第一空*/
for(i=0;ifor(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
for(j=0;j{scanf("%d",&a[i][j]);sum+=a[i][j];/*第二空*/}printf("sum=%d\n",sum);/*第三空*/} 9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。#includevoidmain(){inti,j;inta[3][4],max,min,sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/max=min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++){___________;/*第二空*/if(a[i][j]>max)max=a[i][j];if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
scanf("%d",&a[i][j]);
sum+=a[i][j];/*第二空*/
printf("sum=%d\n",sum);/*第三空*/
9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。
inti,j;
inta[3][4],max,min,sum=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)scanf("%d",____________);/*第一空*/
max=min=a[0][0];
for(j=0;j<4;j++)
___________;/*第二空*/
if(a[i][j]>max)max=a[i][j];
if(a[i][j]}printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/} 10.根据迭代公式,求a的平方根(精度要求<10-6)。#include#defineEPS1E-6#include__________/*第一空*/voidmain(){floata,x0,x1=1.0;scanf("%f",&a);do{x0=x1;x1=___________;/*第二空*/}while(fabs(x1-x0)>=________);/*第三空*/printf("sqrt=%.6f\n",x1);} 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451#includevoidmain(){intj,k,a[5]={1,2,3,4,5};k=a[0];for(j=0;j<5;j++)a[j]=________;/*第一空*/a[4]=_________;/*第二空*/for(j=0;j<5;j++)printf("%5d",_________);/*第三空*/printf("\n");} 12.求数组a的所有元素之和。#defineN3voidmain(){inti,j,sum=0;inta[N][N]={2,4,6,8,10,12,14,16,18};for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
printf("max=%d,min=%d,sum=%d\n",_______________);/*第三空*/
10.根据迭代公式
,求a的平方根(精度要求
<10-6)。
#defineEPS1E-6
#include__________/*第一空*/
floata,x0,x1=1.0;
scanf("%f",&a);
do
x0=x1;
x1=___________;/*第二空*/
}while(fabs(x1-x0)>=________);/*第三空*/
printf("sqrt=%.6f\n",x1);
11.将数组a中元素按下图循环左移一位并输出。
a[0]a[1]a[2]a[3]a[4]
执行前
1
2
3
4
5
执行后
{intj,k,a[5]={1,2,3,4,5};
k=a[0];
a[j]=________;/*第一空*/
a[4]=_________;/*第二空*/
printf("%5d",_________);/*第三空*/
12.求数组a的所有元素之和。
#defineN3
inti,j,sum=0;
inta[N][N]={2,4,6,8,10,12,14,16,18};
for(i=0;ifor(j=0;________;j++)/*第二空*/sum=sum+___________;/*第三空*/printf("sum=%d\n",sum);} 13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。#includevoidmain(){inti,j,len;chars[81],t;gets(s);puts(s);len=strlen(s);for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
for(j=0;________;j++)/*第二空*/
sum=sum+___________;/*第三空*/
printf("sum=%d\n",sum);
13.键入一个字符串(不超过80个字符)存至字符数组s中并对各元素升序排序。
{inti,j,len;
chars[81],t;
gets(s);
puts(s);
len=strlen(s);
for(i=0;ifor(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
for(j=i+1;jif(___________)/*第二空*/{t=s[i];s[i]=s[j];___________;/*第三空*/}puts(s);} 14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。#includevoidmain(){intweek;staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday","Thrusday","Friday","Saturday"};while(1){printf("Inputweekday:");scanf("%d",_______);/*第一空*/if(__________)break;/*第二空*/printf("weekday:%d→%s\n",week,___________);/*第三空*/}} 15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。#includevoidfun(intnum,inta[]){inti;for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/}voidmain(){inti,b[5]={1,2,3,4,5};fun(5,_______);/*第二空*/for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/printf("\n");} 16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。计算公式: n!=#includelongfac(intn){if(________)return(1);/*第一空*/elsereturn________;/*第二空/}voidmain(){intm;longintfa;for(m=0;m<=10;m++){________;/*第三空*/printf(″%d!=%1d\n″,m,fa);}} 17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。递归公式如下:age(n)=#includeintage(intn){if(n==1)return(______);/*第一空*/elsereturn(________);/*第二空*/}voidmain(){printf("%d\n",_______);/*第三空*/} 18.计算并输出1!+2!+3!+4!+5!的值。#includeintf(inta){staticintc=1;c=c*a;return_________;/*第一空*/}voidmain(){inti,k;k=_______;/*第二空*/for(i=2;i<=5;i++)k+=f(_________);/*第三空*/printf("%d\n",k);} 19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。#includeintneg=0,pos=0,zero=0;voidsele(intnum){if(num>0)neg++;elseif(num<0)pos++;else______________;/*第一空*/}voidmain(){inti,a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);printf("%5d",a[i]);sele(_________________);/*第二空*/}printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/} 20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。#include#defineN10structstudent{charname[20];charsex;intscore;}stu[N];voidmain(){inti;floataver,sum=0;for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
if(___________)/*第二空*/
{t=s[i];
s[i]=s[j];
___________;/*第三空*/
14.从键盘输入一个星期几(0~6),转换为对应的英文输出(Sunday,Monday,…),当输入小于0或大于6的数字时程序结束。
{intweek;
staticchar*weekname[]={"Sunday","Monday","Tuesday","Wednesday",
"Thrusday","Friday","Saturday"};
while
(1)
{printf("Inputweekday:
");
scanf("%d",_______);/*第一空*/
if(__________)break;/*第二空*/
printf("weekday:
%d→%s\n",week,___________);/*第三空*/
15.函数fun用于计算数组各元素值的平方,主函数调用fun并输出各元素的值。
voidfun(intnum,inta[])
{inti;
for(i=0;i<_________;i++)a[i]=a[i]*a[i];/*第一空*/
inti,b[5]={1,2,3,4,5};
fun(5,_______);/*第二空*/
for(i=0;i<5;i++)printf("%5d",_________);/*第三空*/
16.用递归方法写出计算n的阶乘的函数,调用该函数计算并输出n=0,1,2,……,10时各阶乘的值。
计算公式:
n!
=
longfac(intn)
if(________)return
(1);/*第一空*/
elsereturn________;/*第二空/
}
intm;longintfa;
for(m=0;m<=10;m++)
________;/*第三空*/
printf(″%d!
=%1d\n″,m,fa);
17.用递归方法计算学生年龄,已知第一位学生年龄为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。
递归公式如下:
age(n)=
intage(intn)
if(n==1)return(______);/*第一空*/
elsereturn(________);/*第二空*/
printf("%d\n",_______);/*第三空*/
18.计算并输出1!
+2!
+3!
+4!
+5!
的值。
intf(inta)
{staticintc=1;
c=c*a;
return_________;/*第一空*/
{inti,k;
k=_______;/*第二空*/
for(i=2;i<=5;i++)k+=f(_________);/*第三空*/
printf("%d\n",k);
19.键入10个整数,统计其中正数(neg)、负数(pos)和零(zero)的个数并将三者输出。
intneg=0,pos=0,zero=0;
voidsele(intnum)
if(num>0)neg++;
elseif(num<0)pos++;
else______________;/*第一空*/
inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("%5d",a[i]);
sele(_________________);/*第二空*/
printf("\nneg=%d,pos=%d,zero=%d\n",_______________);/*第三空*/
20.从键盘输入10个学生的姓名、性别和成绩,计算并输出这些学生的平均成绩。
structstudent
charname[20];
charsex;
intscore;
}stu[N];
inti;
floataver,sum=0;
for(i=0;i{scanf("%d%c%s",_______________);/*第一空*/sum=sum+__________;/*第二空*/}aver=_________;/*第三空*/printf("aver=%6.2f\n",aver);} 21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。#include#defineN5structst{charname[20];floats1,s2,total;};voidmain(){structsts[N];inti,k;floatmax;for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
{scanf("%d%c%s",_______________);/*第一空*/
sum=sum+__________;/*第二空*/
aver=_________;/*第三空*/
printf("aver=%6.2f\n",aver);
21.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。
structst
{charname[20];
floats1,s2,total;
};
{structsts[N];
inti,k;
floatmax;
for(i=0;i{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);s[i].total=_____________;/*第一空*/}max=___________;/*第二空*/for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
{scanf("%s%f%f",s[i].name,&s[i].s1,&s[i].s2);
s[i].total=_____________;/*第一空*/
max=___________;/*第二空*/
for(i=1,k=-0;iif(s[i].total>max){max=s[i].total;_______;}/*第三空*/printf("%s,%f\n",s[k].name,max);} 22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。#includevoidmain(){charch;intsumch=0;FILE*fp;fp=fopen("str.dat","w");while((ch=getchar())!=__________)/*第一空*/{sumch++;putchar(ch);fputc(___________,fp);/*第二空*/}printf("sumch=%d\n",sumch);fprintf(____________,"sumch=%d\n",sumch);/*第三空*/fclose(fp);} 23.统计文本文件file.dat的行数(提示:以’\n’作为每行的结束)。#include#includevoidmain(){intlines=_______;/*第一空*/charch;FILE*fp;fp=fopen("file.dat","r");while(________)/*第二空*/{ch=fgetc(fp);if(ch_______'\n')lines++;/*第三空*/}printf("Lines=%d\n",lines);fclose(fp);} 24.从键盘输入一串字符(以“?”作为结束标志),保存到文本文件text.txt中。#include#includevoidmain(){FILE________;/*第一空*/charch;if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/while((ch=getchar())!='?')fputc(ch,________);/*第三空*/fclose(fp);} 25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。#includevoidmain(){Char___________;/*第一空*/FILE*fp;fp=fopen("vo.txt","w");for(ch='a';ch<='z';ch++)if(_______________)fputc(ch,fp);/*第二空*/______________;/*第三空*/} 26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。#includevoidmain(){charch;FILE*fin,*fnum;fin=fopen("fin.dat",_________);/*第一空*/fnum=fopen("fnum.dat","w");while(!feof(_________))/*第二空*/{ch=fgetc(fin);if(____________)fputc(ch,fnum);/*第三空*/}fclose(fin);fclose(fnum);} 27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。#includevoidmain(){inta=0,e=0,i=0,o=0,u=0;charch;________;/*第一空*/sen=fopen("fs.txt","r");while(!feof(sen)){ch=fgetc(sen);switch(________)/*第二空*/{case'a':a++;break;case'e':e++;break;case'i':i++;break;case'o':o++;break;case'u':u++;}}printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);fclose(_______);/*第三空*/} 28.从键盘输入5个字符串,将其写到文本文件fs.txt中。#include#includevoidmain(){FILE*fp;charstr[5][10];inti;for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/{printf("Can'topenfile!\n");exit(0);}for(i=0;i<5;i++)/*写入文件*/{fputs(_________,fp);/*第二空*/fputs("\n",fp);}fclose(_________);/*第三空*/} 《C语言程序设计》练习四(参考答案)1.使用二维数组形成并按下列形式输出数据 答案:第一空:a[5][5]第二空:i+j第三空:printf("\n")2.对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输出。答案:第一空:N10第二空:i>=0第三空:&a[i]3.分别统计并输出17、18、19和20岁各年龄的学生人数。答案:第一空:printf("输入年龄有\n")第二空:age第三空:a[i]4.将从键盘输入的字符串逆序显示。答案:第一空:str第二空:n第三空:p-- 5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。答案:第一空:&month第二空:i<=12第三空:%d6.输入n(n≥1),计算1+(1+2)+(1+2+3)+…….+(1+2+……+n)的值。答案:第一空:i第二空:intm第三空:returns7.从键盘输入10个整数,用“冒泡排序法”由小到大进行排序。答案:第一空:j--第二空:a[j]=a[j-1]第三空:a[i]8.为二维数组各元素输入数据,计算并输出全部元素之和。答案:第一空:0第二空:a[i][j]第三空:sum9.键入数据至二维数组,求出其中的最大值、最小值及所有元素之和。答案:第一空:&a[i][j]第二空:sum+=a[i][j]第三空:max,min,sum10.根据迭代公式,求a的平方根(精度要求<10-6)。答案:第一空:第二空:(x0+a/x0)/2第三空:EPS 11.将数组a中元素按下图循环左移一位并输出。a[0]a[1]a[2]a[3]a[4]执行前12345执行后23451答案:第一空:a[j+1]第二空:k第三空:a[j]12.
if(s[i].total>max)
{max=s[i].total;_______;}/*第三空*/
printf("%s,%f\n",s[k].name,max);
22.键入一串字符(换行作为结束标志),统计字符的个数,将该串字符及字符个数显示到屏幕上并写入文件str.dat中。
{charch;intsumch=0;
FILE*fp;
fp=fopen("str.dat","w");
while((ch=getchar())!
=__________)/*第一空*/
{sumch++;
putchar(ch);
fputc(___________,fp);/*第二空*/
printf("sumch=%d\n",sumch);
fprintf(____________,"sumch=%d\n",sumch);/*第三空*/
fclose(fp);
23.统计文本文件file.dat的行数(提示:
以’\n’作为每行的结束)。
{intlines=_______;/*第一空*/
charch;
fp=fopen("file.dat","r");
while(________)/*第二空*/
{ch=fgetc(fp);
if(ch_______'\n')lines++;/*第三空*/
printf("Lines=%d\n",lines);
24.从键盘输入一串字符(以“?
”作为结束标志),保存到文本文件text.txt中。
FILE________;/*第一空*/
if((fp=fopen("text.txt",______))==NULL)exit(0);/*第二空*/
='?
')fputc(ch,________);/*第三空*/
25.将26个小写英文字母中的元音字母(a,e,i,o,u)写入到文件vo.txt中。
Char___________;/*第一空*/
fp=fopen("vo.txt","w");
for(ch='a';ch<='z';ch++)
if(_______________)fputc(ch,fp);/*第二空*/
26.将文本文件fin.dat中的数字字符找出并写入文本文件fnum.dat中。
charch;FILE*fin,*fnum;
fin=fopen("fin.dat",_________);/*第一空*/
fnum=fopen("fnum.dat","w");
while(!
feof(_________))/*第二空*/
ch=fgetc(fin);
if(____________)fputc(ch,fnum);/*第三空*/
fclose(fin);
fclose(fnum);
27.分别统计文本文件fs.txt中小写英文元音字母(a,e,i,o,u)的个数并输出。
{inta=0,e=0,i=0,o=0,u=0;
________;/*第一空*/
sen=fopen("fs.txt","r");
feof(sen))
{ch=fgetc(sen);
{case'a':
a++;break;
case'e':
e++;break;
case'i':
i++;break;
case'o':
o++;break;
case'u':
u++;
printf("%d,%d,%d,%d,%d\n",a,e,i,o,u);
fclose(_______);/*第三空*/
28.从键盘输入5个字符串,将其写到文本文件fs.txt中。
{FILE*fp;
charstr[5][10];
for(i=0;i<5;i++)gets(str[i]);/*输入字符串*/
if((fp=fopen("fs.txt",__________))==NULL)/*第一空*/
{printf("Can'topenfile!
\n");exit(0);}
for(i=0;i<5;i++)/*写入文件*/
{fputs(_________,fp);/*第二空*/
fputs("\n",fp);
fclose(_________);/*第三空*/
《C语言程序设计》练习四(参考答案)
答案:
第一空:
a[5][5]
第二空:
i+j
第三空:
printf("\n")
N10
i>=0
&a[i]
printf("输入年龄有\n")
age
a[i]
str
n
p--
5.输入100名学生的出生月份,统计并输出每个月份过生日的学生人数。
&month
i<=12
%d
i
intm
returns
j--
a[j]=a[j-1]
0
a[i][j]
sum
&a[i][j]
sum+=a[i][j]
max,min,sum
(x0+a/x0)/2
EPS
a[j+1]
k
a[j]
12.
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2