C语言程序设计练习题(含程序及参考答案)_第1页
C语言程序设计练习题(含程序及参考答案)_第2页
C语言程序设计练习题(含程序及参考答案)_第3页
C语言程序设计练习题(含程序及参考答案)_第4页
C语言程序设计练习题(含程序及参考答案)_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计练习题(含程序及参考答案)C语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参考使用)1、定义一个函数intfun(inta,intb,intc),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。#include<stdio.h>intfun(inta,intb,intc){if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)return3;

elseif(a==b||b==c||a==c)return2;elsereturn1;

}elsereturn0;}voidmain(){inta,b,c,shape;printf("\nInputa,b,c:");scanf("%d%d%d",&a,&b,&c);printf("\na=%d,b=%d,c=%d\n",a,b,c);shape=fun(a,b,c);printf("\n\nTheshape:%d\n",shape);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第1页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第1页。2、编写一个程序,将两个变量的值交换,例如变量a中的值原为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。#include<stdio.h>voidfun(int*x,int*y){ intt;t=*x;*x=*y;*y=t}voidmain(){inta=3,b=8;printf("%d%d\n",a,b);fun(&a,b);printf("%d%d\n",a,b);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第2页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第2页。3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。例如,输入的数为:551234,输出结果应当是:a=55.0,b=34.0,c=12.0。#include<stdio.h>voidfun(float*p,float*q,float*s){floatk;

if(*p<*q){k=*p;*p=*q;*q=k;}if(*q<*s)

{k=*s;*s=*p;*p=k;}if(*p<*q){k=*p;*p=*q;*q=k;}}voidmain(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);fun(&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第3页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第3页。4、编写函数fun(intn),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数值返回。例如:n=120时,函数值为239。#include<stdio.h>#include<stdlib.h>intfun(intn){inti,s=0;for(i=2;i<n;i++)if(n%i==0)s=s+i;returns;}voidmain()/*主函数*/{voidNONO();printf("%d\n",fun(120));NONO();}voidNONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*wf;wf=fopen("a30.out","w");fprintf(wf,"%d\n",fun(120));fclose(wf);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第4页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第4页。5、计算s,并输出111S=1+──+───+……+──────1+21+2+31+2+3+…+nn通过键盘输入,例如:若n的值为11时,则函数值为:1.#include<stdio.h>#include<stdlib.h>floatfun(intn){inti;floats=1.0,h=1;for(i=2;i<=n;i++){h=h+i;s=s+1.0/h;}returns;}voidmain(){intn;floats;printf("\nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("theresultis:%f",s);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第5页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第5页。6、将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:时,t中的数为:7531。#include<stdio.h>voidfun(longs,long*t){intd;longs1=1;*t=0;while(s>0){d=s%10;if(d%2!=0){ *t=d*s1+*t; s1=s1*10;}s/=10;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第6页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第6页。7、计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值从键盘传入,若k的值为500,则输出4622。#include<stdio.h>intfun(intk){intm=0,mc=0,j;while((k>=1)&&(mc<10)){if((k%13==0)||(k%17==0)){m=m+k;mc++;}k--;}returnm;}voidmain(){printf("%d\n",fun(500));}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第7页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第7页。8、已知一个数列的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和,计算并输出该数列前n项的平方根之和sum。例如,当n=10时,程序的输出结果应为:23.。#include<stdio.h>#include<math.h>doublefun(n)

{doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;for(k=4;k<=n;k++){s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;}returnsum;

}voidmain(){intn;printf("InputN=");scanf("%d",&n);printf("%f\n",fun(n));}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第8页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第8页。9、编写一个程序,从键盘输入m,输出大于m且紧随m的素数。#include<stdio.h>intfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k<i;k++) if(i%k==0)break;if(k>=i)return(i);}}voidmain(){intn;printf("\nPleaseentern:");scanf("%d",&n);printf("%d\n",fun(n));C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第9页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第9页。10、判断两个整数m和n是否互质(即是否有公共的因子)(m≠1,n≠1)。方法是:用2到t(t取m和n中较小的那个数)之间的数分别去除m和n,若m和n能同时被某个数除尽,则m和n不互质;否则它们互质。例如,若输入187和85,则应输出No(表示它们不互质,它们有公因子17)。若输入89和187,则应输出Yes(表示它们互质)。#include<stdio.h>intIsThat(intm,intn){intk,t,mk=1;t=m;if(m>n)t=n;for(k=2;k<=t;k++)

if(m%k==0&&n%k==0){mk=0;break;}returnmk;}voidmain(){intm,n;printf("\nPleaseenter2numbers:\n");scanf("%d%d",&m,&n);if(IsThat(m,n))printf("Yes\n");elseprintf("No\n");}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第10页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第10页。11、将十进制正整数m转换成k进制数(2≤k≤9)并输出(m,k从键盘输入)。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。#include<stdio.h>voidTrans(intm,intk){intaa[20],i,j;for(i=0;m;i++){aa[i]=m%k;m/=k;}for(j=i-1;j>=0;j--)printf("%d",aa[j]);

}voidmain(){intb,n;printf("\nPleaseenteranumberandabase:\n");scanf("%d%d",&n,&b);

Trans(n,b);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第11页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第11页。12、统计从键盘输入的50个实数中有多少个正数、多少个负数、多少个零#include<stdio.h>voidfun(int*zs,int*fs,int*l,floataa[]){ inti; for(i=0;i<50;i++) { if(aa[i]>0) (*zs)++; if(aa[i]<0) (*fs)++; if(aa[i]==0) (*l)++;} }voidmain(){ floatnum[50]; inti,czs,cfs,cl; czs=cfs=cl=0; printf("\nPleaseenter50floatnumbers:\n"); for(i=0;i<50;i++) scanf(“%f”,&num[i]); fun(&czs,&cfs,&cl,num); printf("\n正数:%d,负数:%d,零:%d\n",czs,cfs,cl);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第12页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第12页。13、计算并输出方程X2+Y2=1989的所有整数解#include<stdio.h>voidfun(){ intx,y; for(x=1;x<=44;x++) for(y=1;y<=44;y++) if(x*x+y*y==1989) printf(“x=%d,y=%d\n”,x,y);}voidmain(){ printf(“方程x^2+y^2=1989的整数解为:\n”);fun();C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第13页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第13页。14、从键盘输入10个整数,求出其中的最大值。#include<stdio.h>intfun(intaa[]){ intm,i; m=aa[0]; for(i=1;i<10;i++) if(aa[i]>m) m=aa[i]; returnm;}voidmain(){ intnum[10],i; printf(“请从键盘输入10个整数:\n”); for(i=0;i<10;i++) scanf(“%d”,&num[i]); printf(“\n最大的数是:%d\n”,fun(num));C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第14页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第14页。123451123411123111121111115、从键盘1234511234111231111211111#include<stdio.h>voidfun(intn){ inti,j; for(i=1;i<=n;i++){ for(j=1;j<=i;j++) printf(“%3d”,1); for(j=2;j<=n+1-i;j++) printf(“%3d”,j); printf(“\n”);}}voidmain(){ intn; printf(“\n请输入图形的行数:”); scanf(“%d”,&n); fun(n);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第15页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第15页。16、使用函数的方式,计算如下公式的值。111A1=1,A2=──,A3=──,……An=────1+A11+A21+A(n-1)例如:若n=10,则应输出:0.。#include<stdio.h>floatfun(intn){floatA=1;inti;for(i=1;i<=n;i++)A=1.0/(1+A);returnA;}voidmain(){intn;printf("\nPleaseentern:");scanf("%d",&n);printf("A%d=%f\n",n,fun(n));}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第16页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第16页。*17、使用函数的方式,,按下面的公式计算并输出数列的第m项。┌2,m=1;│3,m=2;FFF(m)=┤5,m=3;└FFF(m-3)+FFF(m-1),m>3;例如,若输入整数9,则应输出:47。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第17页。(不用做)C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第17页。*18、使用函数的方式,按以下递归公式求函数值┌10(n=1)fun(n)=│└fun(n-1)+2(n>1)例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。(不用做)C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第18页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第18页。19、计算并输出当0<x<0.97时下列多项式的值,直到|S(n)-S(n-1)|<0.为止。例如,在主函数中从键盘给x输入0.21后,输出为:s=1.。#include<stdio.h>#include<math.h>doublefun(doublex){intn=1; /*循环计数*/doublesn=1; /*累计数*/doublexn=1,xn1=0; /*x的n值,以及x的n-1值;*/while(fabs(xn-xn1)>=0.)/*绝对值是否合格*/{ xn=xn*x*(0.5-n+1)/n;/*表达式分解以后xn=(xn-1)*x*(0.5-n+1)/n*/ n+=1; sn+=xn; /*sn累加上xn*/}returnsn;}voidmain(){doublex,s;printf("Inputx:");scanf("%lf",&x);s=fun(x);printf("s=%f\n",s);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第19页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第19页。20、计算并输出s。x^2x^3x^ns=1+x+──+──+……+──2!3!n!n,x从键盘输入,例如,当n=10,x=0.3时,函数值为1.。#include<stdio.h>doublefun(doublex,intn){inti;doublef=1.0,h=x;doubles=1;s=s+h/f;for(i=2;i<=n;i++){f=f*i;h=h*x;s=s+h/f;}returns;}voidmain(){printf("%f\n",fun(0.3,10));C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第20页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第20页。21、从键盘输入high,计算并输出high以内最大的10个素数之和。例如,输入high的值为100,则输出732。#include<stdio.h>intfun(inthigh){intsum=0,n=0,j,yes;while((high>=2)&&(n<10)){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){yes=0;break;}if(yes==1) {sum+=high;n++;}high--;}returnsum;}voidmain(){printf("%d\n",fun(100));}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第21页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第21页。22、请编写函数floatfun(intn),它的功能是:返回n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,n=20,返回0.。注意:要求n的值不大于100。#include<stdio.h>doublefun(intn){inti;doublesum=0.0;if(n>0&&n<=100){for(i=1;i<=n;i++) if(i%5==0||i%9==0) sum+=1.0/i;}returnsum;}voidmain(){intn;doubles;printf("\nInputn:");scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第22页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第22页。23、请编一个函数fun(int*a,intn,int*odd,int*even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给出数组a中数据的个数;利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。#include<stdio.h>#defineN20fun(int*a,intn,int*odd,int*even){inti,sum_odd=0,sum_even=0;for(i=0;i<n;i++)if(a[i]%2==0)sum_even+=a[i];elsesum_odd+=a[i];*odd=sum_odd;*even=sum_even;}voidmain(){inta[N]={1,9,2,3,11,6},i,n=6,odd,even;printf("Theoriginaldatais:\n");for(i=0;i<n;i++)printf("%5d",*(a+i));printf("\n\n");fun(a,n,&odd,&even);printf("Thesumofoddnumbers:%d\n",odd);printf("Thesumofevennumbers:%d\n",even);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第23页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第23页。24、编写计算三角形面积的程序,注意:将计算面积定义成函数floatfun(inta,intb,intc)(a,b,c为三角形的三条边,返回三角形的面积),在主函数中调用fun#include<stdio.h>#include<math.h>floatfun(inta,intb,intc){ floatp; p=(a+b+c)/2; returnsqrt(p*(p-a)*(p-b)*(p-c));}voidmain(){ inta,b,c; printf(“请输入三角形三条边:\n”); scanf(“%d%d%d”,&a,&b,&d); if(a+b>c&&b+c>a&&a+c>b) printf(“三角形面积为:%.2f”,fun(a,b,c)); else printf(“无法构成三角形”);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第24页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第24页。25、编写程序,求E=1+1/1!+1/2!+……+1/n!,要求最后一项的值小于10-4#include<stdio.h>doublefun(intn){doublem=1.0;inti=1;doublep=1.0;do{m=m+1.0/p;i++;p=p*i;}while(1.0/p>=1E-4);returnm;}voidmain(){intn;doubles;printf("Inputn:");scanf("%d",&n);s=fun(n);printf("s=%f\n",s);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第25页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第25页。26、计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.。#include<stdio.h>#include<math.h>doublefun(doublex[9]){inti;doubleavg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+1])/2;sum+=sqrt(avg);}returnsum;}voidmain(){doubles,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};inti;printf("\nTheoriginaldatais:\n");for(i=0;i<9;i++)printf("%6.1f",a[i]);printf("\n\n");s=fun(a);printf("s=%f\n\n",s);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第26页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第26页。27、将1到m之内(含m)能被7或11整除的所有整数放在数组a中。例如,若输入m的值为50,则在数组a中的值为:711142122283335424449#include<stdio.h>#defineM100voidfun(intm,int*a,int*n){inti,count=0;for(i=1;i<=m;i++){if(i%7==0||i%11==0){a[count++]=i;}}*n=count;}voidmain(){intaa[M],n,k;fun(50,aa,&n);for(k=0;k<n;k++)if((k+1)%20==0)printf("\n");elseprintf("%4d",aa[k]);printf("\n");C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第27页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第27页。28、请编写函数intfun(intm,intscore[],intbelow[]),它的功能是:将低于平均分的人数作为函数值返回,并将低于平均分的成绩放在below数组中(m表示score的长度,score表示成绩)。例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回4,below中的数据应为:10、20、30、40。#include<stdio.h>#include<stdlib.h>intfun(intscore[],intm,intbelow[]){ inttotal=0; intaverage=0; int*p_below=below; inti=0; intj=0; for(i=0;i<m;i++){ total=total+score[i]; } average=total/m; for(i=0;i<m;i++){ if(score[i]<average){ *p_below=score[i]; p_below++; j++; } } *p_below=NULL; return(j);}main(){inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90};C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第28页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第28页。n=fun(score,9,below);printf("\nBelowtheaveragescoreare:");for(i=0;i<n;i++)printf("%d",below[i]);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第29页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第29页。29、用插入排序法将n个字符进行排序(降序)。(提示:插入法排序的思路是:先对数组的头两个元素进行排序,然后根据前两个元素的情况插入第三个元素,再插入第四个元素…)。#defineN80#include"stdio.h"#include"string.h"voidinsert(char*aa){inti,j,n;charch;n=strlen(aa);

for(i=1;i<n;i++){ch=aa[i];

j=i-1; while((j>=0)&&(ch<aa[j])){aa[j+1]=aa[j];j--;}aa[j+1]=ch;}}voidmain(){chara[N]="QWERTYUIOPASDFGHJKLMNBVCXZ";inti;printf("Theoriginalstring:%s\n",a);insert(a);printf("Thestringaftersorting:%s\n\n",a);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第30页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第30页。30、假定整数数组a中元素的值不重复。删除a中值为x的元素(x从键盘输入)。#include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;if(p==n)return-1;

else{for(i=p;i<n;i++)a[i]=a[i+1];

returnn-1;}}voidmain(){intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;n=10;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\nInputx(todelete):");scanf("%d",&x);printf("Delete:%d\n",x);n=fun(w,n,x);if(n==-1)printf("***Notbefound!***\n\n");else{printf("Thedataafterdeleted:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\n\n");}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第31页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第31页。31、一个已按从小到大的顺序排好的数组a,编写程序,从键盘输入一个数x按原来排序的规律将它插入数组a中。#include<stdio.h>#defineM20voidInSort(int*n,intvv[],intk){inti=0,j;while(k>vv[i]&&i<*n)i++;if(i<*n)for(j=*n;j>i;j--)vv[j]=vv[j-1];vv[i]=k;++*n;

}voidmain(){intaa[M],i,k,m;system("cls");printf("\nPleaseenteranumber:\n");scanf("%d",&m);printf("\nPleaseenter%dnumbers:\n",m);for(i=0;i<m;i++)scanf("%d",&aa[i]);printf("\nPleaseenteranothernumber:\n");scanf("%d",&k);InSort(&m,aa,k);for(k=0;k<m;k++)

printf("%d",aa[k]);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第32页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第32页。32、使用数组的方法筛选出1-100中的素数#include<stdio.h>voidfun(int*pt){inti,j,flag;*pt=2;*pt++;for(i=3;i<100;i++){flag=1;for(j=2;j<i;j++)if(i%j==0)flag=0;if(flag){*pt=i;*pt++;}}*pt=0;}voidmain(){int*pointer,a[30];pointer=a;fun(pointer);printf("Theresultis:\n");while(*pointer)printf("%d",*pointer++);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第33页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第33页。33、已知一个数组a中包括10个整数元素,从a中第二个元素起,分别将后项减前项之差存入数组b,并按每行3个元素输出数组b。#include<stdio.h>voidfun(inta[],intb[]){ inti; for(i=1;i<10;i++) b[i-1]=a[i]-a[i-1]; for(i=0;i<9;i++) { printf(“%3d”,b[i]);if((i+1)%3==0) printf(“\n”);}}voidmain(){ inta[10]={1,2,3,4,5,6,7,8,9,10}; intb[9]; fun(a,b);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第34页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第34页。34、请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。例如,二维数组中的数据为:WWWWSSSSHHHH则字符串中的内容应是:WSHWSHWSH。#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){intx,y;for(x=0;x<nn;x++)for(y=0;y<mm;y++){b[x*mm+y]=*(s[y]+x);(*n)++;}}voidmain(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("\n");}fun(w,a,&n,3,4);printf("TheAarray:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第35页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第35页。35、求出N×N的二维数组周边元素的平均值|01279||19745|a=|23831||45682||59141|则返回主程序后s的值应为:3.375。#include<stdio.h>#defineM4#defineN5intfun(inta[M][N]){inti,j,sum=0;for(i=0;i<M;i++)for(j=0;j<N;j++)if((i==0)||(i==M-1)||(j==0)||(j==N-1))sum+=a[i][j];returnsum;}voidmain(){intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};inti,j,y;system("cls");printf("Theoriginaldatais:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%6d",aa[i][j]);printf("\n");}y=fun(aa);printf("\nThesum:%d\n",y);printf("\n");C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第36页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第36页。36、求出M行N列的二维数组tt里每列中的最小元素,并依次放入pp数组中。#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){inti,j,min;for(i=0;i<N;i++){min=tt[0][i];for(j=0;j<M;j++)if(min>tt[j][i])min=tt[j][i];pp[i]=min;}}voidmain(){intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};intp[N],i,j,k;system("cls");printf("Theoriginaldatais:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%6d",t[i][j]);printf("\n");}fun(t,p);printf("\nTheresultis:\n");for(k=0;k<N;k++)printf("%4d",p[k]);printf("\n");C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第37页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第37页。37、请编写程序,实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵:其转置矩阵为:|123||147||456||258||789||369|程序输出:|2610||61014||101418|#include<stdio.h>voidfun(inta[3][3],intb[3][3]){inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];}voidmain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",t[i][j]);printf("\n");}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第38页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第38页。38、编写程序删除字符串s中从下标k开始的n个字符(n和k从键盘输入)。例如,字符串内容为:HellolloWorld!,k中的值为:5,n中的值为:3,结果为:HelloWorld!。#include<stdio.h>#defineN80voidfun(char*a,intk,intn){inti;i=k;while(a[i-1]!='\0'){a[i]=a[i+n];i=i+1;}}voidmain(){chars[N]="HellolloWorld!";intk,n;printf("\nTheoriginalstring:%s\n",s);printf("Enterindex————————k:"),scanf("%d",&k);printf("Enternumbertodelete——n:");scanf("%d",&n);fun(s,k,n);printf("\nThestringafterdeleted:%s\n",s);NONO();C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第39页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第39页。39、编写程序,从键盘输入字符串tt,将其中每个单词的首字符改为对应的大写字母,首字符后的字母都改为对应的小写字母。例如,若输入字符串:"abcDbOYxy!",则输出字符串为:"AbCdBoyxy!"。#include<stdio.h>#include<string.h>char*EXUL(chartt[]){intisfirst=1;inti,length;length=strlen(tt);for(i=0;i<length;i++){if(tt[i]>='a'&&tt[i]<='z'){tt[i]=isfirst?(tt[i]+'A'-'a'):tt[i];isfirst=0;}elseif(tt[i]>='A'&&tt[i]<='Z'){tt[i]=isfirst?tt[i]:(tt[i]-'A'+'a');isfirst=0;}elseisfirst=1;}returntt;}main(){inti;chartt[81];printf("\nPleaseenterastring:");gets(tt);printf("\nTheresultstringis:%s\n",EXUL(tt));C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第40页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第40页。40、编写程序,从键盘输入字符串tt,字符串中'a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000#include<stdio.h>voidfun(char*tt,intpp[]){ char*p_tt=tt; inti=0; while(i<26){ pp[i]=0; i++;} for(;*p_tt!=NULL;p_tt++){ switch(*p_tt){ case'a':pp[0]++;break; case'b':pp[1]++;break; case'c':pp[2]++;break; case'd':pp[3]++;break; case'e':pp[4]++;break; case'f':pp[5]++;break; case'g':pp[6]++;break; case'h':pp[7]++;break; case'i':pp[8]++;break; case'j':pp[9]++;break; case'k':pp[10]++;break; case'l':pp[11]++;break; case'm':pp[12]++;break; case'n':pp[13]++;break; case'o':pp[14]++;break; case'p':pp[15]++;break; case'q':pp[16]++;break; case'r':pp[17]++;break; case's':pp[18]++;break;C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第41页。 case't':pp[19]++;break;C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第41页。 case'u':pp[20]++;break; case'v':pp[21]++;break; case'w':pp[22]++;break; case'x':pp[23]++;break; case'y':pp[24]++;break; case'z':pp[25]++;break; } }}main(){charaa[1000];intbb[26],k,n;printf("\nPleaseenteracharstring:");scanf("%s",aa);fun(aa,bb);for(k=0;k<26;k++)printf("%d",bb[k]);printf("\n");C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第42页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第42页。41、请编写程序,把字符串s中所有的字符前移一个位置,串中的第一个字符移到最后。例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM。#include<stdio.h>#include<string.h>#defineN81fun(char*s){charb[N];sprintf(b,"%s%c",s+1,*s);strcpy(s,b);}voidmain(){chara[N];printf("Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf("Thestringaftermodified:");puts(a);C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第43页。}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第43页。42、编写程序,把字符串中的内容逆置。例如:字符串中原有的内容为:abcdefg,输出:gfedcba。#include<string.h>#include<stdio.h>#defineN81voidfun(char*s){ inti,length; chartmp; length=strlen(s); for(i=0;i<length/2;i++) { tmp=s[i]; s[i]=s[length-i-1]; s[length-i-1]=tmp; }}voidmain(){chara[N];printf("Enterastring:");gets(a);printf("Theoriginalstringis:");puts(a);fun(a);printf("\n");printf("Thestringaftermodified:");puts(a);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第44页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第44页。43、编写程序,依次取出字符串s1中所有数字字符,形成新的字符串s2。#include<stdio.h>voidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]>='0'&&s[i]<='9')s[j++]=s[i];s[j]='\0';}voidmain(){charitem[80];printf("\nEnterastring:");gets(item);printf("\n\nThestringis:\"%s\"\n",item);fun(item);printf("\n\nThestringofchangingis:\"%s\"\n",item);}C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第45页。C语言程序设计练习题(含程序及参考答案)全文共53页,当前为第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论