c语言练习题.pdf
《c语言练习题.pdf》由会员分享,可在线阅读,更多相关《c语言练习题.pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、10个人的成绩存放在score数组中,编写函数fu n,求出平均分,并作为函数值返回,且输出不及格人数。#includevoid main()(float average(float array10);float score10,aver;int i,n=0;printf(”请输入成绩:n);for(i=0;i10;i+)scanf(n%f,&scorefi);if(scorei60)n+;printf(nH);aver=average(score);printf(平均成绩是=%5.2加”,aver);printf(不及格人数是dn”,n);)float average(noat arra
2、y10)(int i;float aver,sum=array0;for(i=l;i10;i+)sum=sum+arrayi;aver=sum/10;retum(aver);)2、求 出 1 到 100之内能被7 或 者 11整除,但不能同时被7 和 11整除的所有整数,并将他们放在指定的数组a 中。#includevoid main()int a100;int i,n=0;for(i=l;i=100;i+)if(i%7=0)ll(i%ll=0)if(i%77=0)continue;elsean+=i;)for(i=0;in;i+)if(i%7=0)printf(unn);printf(5d”
3、,ai);)3、求方程的解。#include#includevoid main()float a,b,c,disc,x 1 ,x2,realpart,imagpart;printf(请输入方程的3 个系数,a,b,c:”);scanf(%f,%f,%f;&a,&b,&c);printf(该方程 n“);if(fabs(a)=le-6)if(fabs(b)=le-6)if(fabs(c)v=le-6)printf(有无穷多个解 n);else printf(“无解 n”);else printf(有一个根:8.4fn”,-c/b);elsedisc=b*b4*a*c;if(fabs(disc)l
4、e-6)xl=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printfC有两个不等的实根:8.4和8.4利”送1 );elserealpart=-b/(2*a);i magpart=sqrt(-di sc)/(2*a);printf(有两个复根An);printf(%8.4f+%8.4finn,realpart,imagpart);printf(H%8.4f-%8.4fin,realpart,imagpart);)4、给出一个百分制成绩,要求输出成绩等级A、B、C、D、E,90分以上为A,8089分为 B,7079分为C,6069分为D,60分以下
5、为E。要求:当输入分数为负值,或大于100时,通知用户“输入数据错误,重新输入”。#includevoid main()float score;char grade;printf(”请输入学生成绩scanf(n%r,&score);while(score100llscore0)printf(“n 输入有误,请重输”);scanf(,&score);s witch(int)(score/10)case 10:case 9:grade=,A,;break;case 8:grade=,B;break;case 7:grade=,C;break;case 6:grade=rD1;break;case
6、5:case 4:case 3:case 2:case 1:case 0:grade=*E;)printf(成绩是 5.lf,相应的等级是%c.n”,score,grade);)5、求数组中最大元素在数组中的下标并存放在指针k 所指的储存单元中o#includeint fun(int*s,int t,int*k)inti;*k=0;for(i=0;it;i+)if(s*ksi)*k=i;return 0;)void main()int a10,i,k;printf(请输入组数:”);for(i=0;i10;i+)scanf(n%dn,&alij);fun(a,10,&k);printf(最大的
7、元素为:dn最大元素的下标是:%dn;ak,k);)6、编写函数fu n,功能是:根据以下攻势计算s,计算结果作为函数值返回;n 通过形参传入。S=l+l/(l+2)+l/(l+2+3)+.+1/(1+2+3+4+.+n)o#includevoid main()(int n;float sum;float fun(int n);printf(请输入 n=u);scanf(d”,&n);sum=fun(n);printf(nS=%5.2fn,sum);)float fun(int n)(int m=0,i;float sum=0;for(i=l;i=n;i+)(m=m+i;sum=sum+1.0
8、/m;)return sum;)7、定义了 7 X 7 的二维数组,并在主函数中自动赋值。编写函数fun(int明7),该函数的功能是:使数组左下半三角元素中的值全部置成0。#includevoid main()(int fun(int a7);int ij,a77;for(i=0;i7;i+)for(j=0;j7;j+)aij=i+j+l;fun(a);for(i=0;i7;i+)for(j=0y7;j+)printf(%5d,ai|j);printf(n);)int fun(int a7)(int i,j;for(i=0;iv7;i+)for(j=0;jj)aiU=0;)8、编写一个函数v
9、oid fun(int ll56,int pp6),tt指向-一个 5 行 6 列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中初始化。#includevoid fun(int tt56,int pp6)int i,j,min=100;for(j=0;j6;j+)for(i=0;i5;i+)(if(tti 皿 min)ppj=niin;min=100;)return pp;)main()(int tt56,pp6;int p,j,i;for(j=0;j6;j+)for(i=0;i5;i+)ttij=i+j+l;fun(tt,pp);for
10、(j=0;j6;j+)printf(%5d,ppj);)9、求出4行5列的二维数组周边元素之和。#includevoid main()(int m=0,n=0,i,j;int a45,sum=0;for(i=0;iv4;i+)for(j=0;j5;j+)scanf(%d,&aiJLjJ);for(i=0;i4;i+)for(j=0;jv5;j+)m=m+ai 皿;for(i=l;i3;i+)for(j=l;j4;j+)n=n+aijj;sum=m-n;printf(周边和为d,sum);10、编写程序,把字符串中的内容逆置(不准使用多个字符数组)。#includevoid main()char
11、 c100;int i,temp,n;printf(n 初始字符串:n);gets(c);n=strlen(c);for(i=0;in/2;i+)temp=ci;ci=cn-i-l;cn-i-l=temp;)printf(n交换后的字符串:n);puts(c);)11、编写程序,从字符串中删除指定的字符,同一字母的大、小写按不同字符处理。并把删除好的字符以字符串的形式输出(不准使用多个字符数组)。#includevoid main()(char a80,c;int i,j=O,n;gets(a);printf(”请输入需要删除的字符”);scanf(%c,&c);n=strlen(a);for
12、(i=0;in;i+)if(ai!=c)aj+=ai;aj=O;puts(a);)12、编写程序,对长度为7 个字符的字符串,除首尾字符外,将其余5 个字符按ascii码降序排列。#includevoid main()(int i,j;char a7J,d;printf(请输入字符串)gets(a);for(i=l;i7;i+)for(j=i+1 ;j6;j+)if(aiaj)(d=ai;ai=aj;aj=d;)for(i=0;i7;i+)printf(H%cM,ai);)13、编写函数fu n,它的功能是:比较两个字符串的长度,(不得调用c 语言提供的求字符串长度的函数),函数返回较长的字符
13、串。若两个字符串长度相同,则返回第一个字符串。#include char*fun(char*a,char*b)(int i,m,n;for(i=0;*(a+i);i+)m=i;for(i=0;*(b+i);i+)n=i;if(m=n)return a;elsereturn b;)void main()(char a20,b20,*c;printf(请输入字符串a:n);gets(a);printf(请输入字符串b:n);gets(b);c=fun(a,b);printf(最长的字符串是:n);puts(c);14、给一个不多于5 位的正整数,要求求出它是几位数,打印出每一位数字,并按逆序打印出
14、各位数字。#includevoid main()(long int num;int a,b,c,d,e,place,n;printf(请输入一个整数n:);scanf(%ld,&n);if(n9999)place=5;else if(n999)place=4;else if(n99)place=3;else if(n9)place=2;else place=l;printf(nplace=%dnplace);printf(每位数字为:);a=num/10000;b=(n-a*10000)/1000;c=(n-a*10000-b*1000)/100;d=(n-a*10000-b*1000-c*1
15、00)/10;e=n-a*10000-b*1000-c*100-d*10;switch(place)(case 5:printf(u%d,%d,%d,%d,%d,a,b,c,d,e);printf(nn 反序数字为:);printf(H%d%d%d%d%dn,e,d,c,b,a);break;case 4:printf(,%d,%d,%d,%d,b,c,d,e);printf(n反序数字为:);printf(,%d%d%d%dnM,e,d,c,b);break;case 3:printf(,%d,%d,%dn,c,d,e);printf(n反序数字为printf(M%d%d%dn,d,e,c)
16、;break;case 2:printf(u%d,%dnn,d,e);printf(n反序数字为:);printf(n%d%dn,e,d);break;case l:printf(u%dnH,e);printf(n反序数字为:);printf(,%dn,e);15、编写一个函数fu n,它的功能是:求出一个6 X 8 的整型二维数组中最大元素的值,并将此值返回调用函数。数组在主函数中初始化,并最终输出结果。#includevoid main()(int max(int a68);inta68=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
17、21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40;printf(nmax is%dn,max(a);)int max(int a68)(int i,j,max;max=aOO;for(i=0;i6;i+)for(j=0;jmax)max=aij;return max;)16、将字符数组s 中的字符串,除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;申中剩余字符所形成的一个新串放在新的字符数组t 中。#includevoid main()(chara40,b40=,J;int j=O,i,n,temp;get
18、s(a);n=strlen(a);for(i=0;in;i+)(if(i%2=0llai%2=0)(bj+=ai;continue;)puts(b);)17、假定输入的字符串中只包含字母和*号。则使字符串中的*号不得多于3 个;若多于3个,则删除多于的*号;若少于或等于3 个,则什么也不做。#includevoid main()(int i,j=0,sum,n,t;char a801,b80,c80;gets(a);n=strlen(a);for(sum=0,i=0;in;i+)sum+;if(sum4)printf(H%s,a);else(for(sum=0,i=0;in;i+)if(ai=
19、,*)sum+;if(sum=3)t=i;for(i=0;i=t;i+)bj+=ai;for(i=t+l;in;i+)if(ai!=*1)bj+=ai;bj=O;printf(H%s,b);I18、编程计算l!+2!+3!+n!的值,其 中,n 值山键盘输入。#includevoid main()int i,n,s=O,t=l;printf(请输入n 的值:);scanf(d”,&n);for(i=l;i=n;i+)t=t*i;s=s+t;)printf(nl!4-2!+.+%d!=%dnH,n,s);)19、编写程序,删除字符串中的所有空格。#includechar*fun(char*a)(
20、int j=0,i;for(i=0;istrlen(a);i+)if(ai!=*)aj+=ai;a|jJ=0;return a;void main()(char a81,*c;printf(请输入字符串a:);gets(a);c=fun(a);puts(c);)20、求出字符数组ss中存储的字符串中指定字符的个数。#includevoid main()(int i,n,sum=0;char ss80,c;gets(ss);printf(”请输入需要统计的字符:);scanf(c”,&c);n=strlen(ss);for(i=0;in;i+)if(ssi=c)sum+;printf(输出数据
21、sum=%dn,sum);)21、输入一行字符,分别统计出其中的大小写字母、空格、数字和其他字符的个数。#include void main()(char c;int letters=0,space=0,digit=0,other=0;printf(请输入一行字符:n”);while(c=getchar()!=)(if(c=,a&cA&c=,0&c=,9,)digit+;elseother+;printf(M大 小 写 字 母 数:%d n 空 格 数:%dn 数 字 数:%d n 其 他 字 符数:%dn,letters,space,digit,other);)22、将5行6列的二维数组中的
22、数据,按列的顺序依次放到一个一维数组中。#includevoid main()(int a56,b30,n=0,i,j;for(i=0;i5;i+)for(j=0;j6;j+)aij=i+j;for(j=0;j6;j+)for(i=0;i5;i+)bn+=aij;for(n=0;n30;n+)printf(%5d,bn);printf(n);)23、求两个2 X 3和3 X 2的矩阵之积,并把结果显示出来。#includevoid main()int a23;intb32;intc22=0,i,j,t;printf(请输入一个2行3列的数组a:);for(i=0;i=l;i+)for(j=0;
23、jv=2;j+)scanf(%d,&ai|j);printf(%6d,alijj);)printf(n);printf(请输入一个3行2列的数组b:);for(i=0;iv=2;i+)for(j=0;j=l;j+)scanf(%d,&bij);printf(%6d,bij);)printf(n);)printf(数组a与数组b乘积的结果为:n);for(i=0;i2;i+)for(j=0;j2;j+)for(t=0;t3;t+)ciJUl+=aiJltJ*bt|jJ;pr i nt f(%6 d ,c i|j );)p r i n t f(n );)2 4、定义了 一 个6X6的二维数组,并进
24、行初始化。将数组右匕半三角元素中的值乘以1 0。#i n c l u d ev oi d m a i n()(i n t i,j,a 6 6 ;for(i=0;i 6;i+)for(j=0;j 6;j+)a i j =i+j+l;for(i=0;i 6;i+)for(j=0;j 6;j 4-+)i f(i j)a i U =a i j *1 0;for(i=0;i 6;i+)for(j=0 J6;j+)p r i n t f(5 d”,a i 皿);p r i n t f(M nH);2 5、编写程序,实现矩阵(5行6列)的转置(即行列互换)。#i n c l u d ev oi d m a
25、i n()i n t a 5 6 ,b 6 5 ,i,j;p r i n t f(原数组为for(i=0;i 5;i+)for(j=0;j 6;j+)s c a n f(u%dH,&a i j );for(i=0;i 5;i+)for(j=0;j 6;j+)p r i n t f(u%5 d ,a i fj );bU J i =a i U J;p r i n t f(M nM);)p r i n t f(转置后的数组为:n)for(i=0;i 6;i+)for(j=0;j 5;j+)p r i n t f(%5 d ,b i j );p r i n t f(n );26、将两个两位数的正整数a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 练习题
限制150内