为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言程序设计函数练习题及参考答案

2020-09-19 50页 doc 169KB 15阅读

用户头像 个人认证

is_294897

暂无简介

举报
C语言程序设计函数练习题及参考答案.C语言程序设计练习题及参考答案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)...
C语言程序设计函数练习题及参考答案
.C语言程序设计练习题及参考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);}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);}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);}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);}5、计算s,并输出111S=1+──+───+……+──────1+2  1+2+3  1+2+3+…+nn通过键盘输入,例如:若n的值为11时,则函数值为:1.833333#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);}6、将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,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);}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));}8、已知一个数列的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和,计算并输出该数列前n项的平方根之和sum。例如,当n=10时,程序的输出结果应为:23.197745。#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));}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));}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");}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);}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);}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();}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));}15、从键盘输入n值,输出如右图形。(例如n=5时)#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);}16、使用函数的方式,计算如下的值。111A1=1,A2=──,A3=──,……An=────1+A11+A21+A(n-1)例如:若n=10,则应输出:0.617977。#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));}*17、使用函数的方式,,按下面的公式计算并输出数列的第m项。┌2,m=1;│3,m=2;FFF(m)=┤5,m=3;└FFF(m-3)+FFF(m-1),m>3;例如,若输入整数9,则应输出:47。(不用做)*18、使用函数的方式,按以下递归公式求函数值┌10(n=1)fun(n)=│└fun(n-1)+2(n>1)例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。(不用做)19、计算并输出当0<x<0.97时下列多项式的值,直到|S(n)-S(n-1)|<0.000001为止。例如,在主函数中从键盘给x输入0.21后,输出为:s=1.100000。#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.000001)/*绝对值是否合格*/{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);}20、计算并输出s。x^2x^3x^ns=1+x+──+──+……+──2!3!n!n,x从键盘输入,例如,当n=10,x=0.3时,函数值为1.349859。#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));}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));}22、请编写函数floatfun(intn),它的功能是:返回n(包括n)以能被5或9整除的所有自然数的倒数之和。例如,n=20,返回0.583333。注意:要求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);}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);}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));elseprintf(“无法构成三角形”);}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);}26、计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。#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);}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");}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};n=fun(score,9,below);printf("\nBelowtheaveragescoreare:");for(i=0;i<n;i++)printf("%d",below[i]);}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);}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");}}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]);}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++);}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);}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");}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");}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");}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");}}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();}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));}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;case't':pp[19]++;break;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");}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);}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);}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);}44、分别将a、b所指字符串中字符倒序,然后按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的容为:"abcdefg",b所指字符串中的容为:"1234"时,则c所指数组中的容应该为:"g4f3e2d1cba";#include<stdio.h>#include<string.h>voidmyswap(char*s){char*sp,*st,ch;sp=s;st=s+strlen(s)-1;while(sp<=st){ch=*sp;*sp=*st;*st=ch;sp++;st--;}}voidfun(char*a,char*b,char*c){chars1[100],s2[100],*sa,*sb;strcpy(s1,a);strcpy(s2,b);myswap(s1);myswap(s2);sa=s1;sb=s2;while(*sa||*sb){if(*sa){*c=*sa;c++;sa++;}if(*sb){*c=*sb;c++;sb++;}}*c=0;}voidmain(){chars1[100],s2[100],t[200];printf("\nEnters1string:");scanf("%s",s1);printf("\nEnters2string:");scanf("%s",s2);fun(s1,s2,t);printf("\nTheresultis:%s\n",t);}45、已知字符串a1和a2,各自存放一个已按字母顺序排好的字符串,编程合并二个字符串a3中,合并后仍保持字母顺序(如a1中存放:"accel",a2中存放"ilrz",则a3中为"acceillrz")。#include<stdio.h>#defineM3#defineN20voidfun(chara[M][N],char*b){inti,j,d=0;for(i=0;i<100;i++)b[i]=0;for(i=0,d=0;i<3;i++)for(j=0;*(a[i]+j);j++){*(b+d)=*(a[i]+j);d++;}}voidmain(){charw[M][N]={"AAAA","BBBBBBB","CC"},a[100];inti;printf("Thestring:\n");for(i=0;i<M;i++)puts(w[i]);printf("\n");fun(w,a);printf("TheAstring:\n");printf("%s",a);printf("\n\n");}46、定义一个函数char*fun(char*s),判断一个字符串s是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!。所谓回文即正向与反向的拼写都一样,例如:adgda。#include<stdio.h>#defineN80intfun(char*str){intb=1,n,i;n=strlen(str);for(i=0;i<n/2;i++){if(str[i]!=str[n-1-i]){b=0;break;}}if(i==n/2)b=1;returnb;}voidmain(){chars[N];printf("Enterastring:&q
/
本文档为【C语言程序设计函数练习题及参考答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索