《C语言例题及答案.pdf》由会员分享,可在线阅读,更多相关《C语言例题及答案.pdf(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、作业一 一、求一个任意边长的矩形面积。#i nclude void mai n()int w,h,sum;sca nf(%d%d,&w,&h);sum=w*h;prin tf(area=%dn,sum);二、求一个任意半径的圆的面积及周长。#define PI 3.14159#i nclude void mai n()float r,area,c;sca nf(%f,&r);area二Pl*r*r;c=2*PI*r;prin tf(area=%fn circle二fn,area,c);三、已知:w=5,y=4,z=2,求表达式:w*y/z 的值,并输出#i nclude void mai n(
2、)int w,y,z,r;w=5;y=4;z=2;r=w*y/z;prin tf(%5d,r);作业二 一、从键盘上输入三个数,求出其中的最大值,并输出#i nclude void mai n()int a,b,c,max;sca nf(%d%d%d,&a,&b,&c);max二a;if(maxb)max=b;if(maxc)max=c;prin tf(max=%dn,max);二、求 sin30 0。+sin60 0+cos3O+cos6O0之和。(注意:#i nclude 30*3.14159/180)#define PI 3.14159#in clude void mai n()floa
3、t a,b,sum;a=30*PI/180;b=60*PI/180;sum=s in(a)+s in(b)+cos(a)+cos(60);prin tf(total=%fn,sum);三、比较两个数的大小。如果 x 大于 y,则输出:xy,否则输出:#i nclude void mai n()int x,y;sca nf(%d,%d,&x,&y);if(xy)prin tf(xyn);else prin tf(xyn);作业三 一、输入 a、b、c 三个值,按从小到大排序输出。#i nclude void mai n()int a,b,c,t;scanf(%d%d%d,&a,&b,&c);if
4、(ab)xc)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%3d%3d%3dn,a,b,c);.二、求自然数 110 之和。#include void main()int i,sum;i=1;sum=0;while(i=10)sum=sum+i;i+;printf(sum=%dn,sum);三、输入 10 个整数,统计出正数之和以及负数之和 和)#include void main()int sum1=0,sum2=0,i,x;i=1;while(i=10)scanf(%d,&x);if(x%2=0)sum1=sum1+x;else sum2=sum2+x;i+;
5、printf(sum1=%dnsum2=%dn,sum1,sum2);求奇数之和以及偶数之 作业四 一、输入一个 06 的整数,转换成星期输出#i nclude mai n()int a;sca nf(%d,&a);switch(a)case 0:prin tf(S un day);break;case 1:prin tf(Mo nday);break;case 2:prin tf(Tuesday);break;case 3:prin tf(Wed nesday);break;case 4:prin tf(Thursday);break;case 5:prin tf(Friday);break
6、;case 6:prin tf(saturday);break;default:pr in tf(I am sorry.You are wron g.n);.二、输入一个整数,将各位数字反转后输出。女口:输入 365,则输出显示为 563#i nclude void mai n()int x,r;sea nf(%d,&x);prin tf(eon ver is:);while(x!=0)r=x%10;prin tf(%d,r);x=x/10;prin tf(n);三、输入一个整数,求出它的所有因子#i nclude void mai n()int x,i;sca nf(%d,&x);for(i
7、=1;i=x;i+)if(x%i=0)prin tf(%3d,i);作业五 一、求 100200 之间的素数。#in clude#include void main()int j=0,x,n,i;for(x=100;x=200;x+)n=sqrt(x);for(i=2;in)printf(%5d,x);j+;if(j%5=0)printf(n);二、编程输出三角形的#include void main()int i,j;for(i=1;i10;i+)9X 9 乘法表 for(j=1;j=i;j+)printf(%d*%d=%d,i,j,i*j);printf(n);三、求任意二个数的最大公约数
8、。#include main()int a,b,m,n,q;scanf(%d%d,&m,&n);a=m;b=n;if(ab)int z;z=a;a=b;b=z;do q=b%a;b=a;a=q;while(q!=0);prin tf(%dn,b);作业六 一、利用循环语句求 1 1-(直到第 100 项的和)357 2n 1#i nclude void mai n()int i,t=1;float s=1,p=0,n=1;for(i=1;i=1OO;i+)P=P+s;n=n+2;t=-t;s=t/n;pri ntf(%fn,p);5 二、编写求 S=n!o n 1#i nclude void
9、mai n()int x,y=0,n,i;for(n=1;n=5;n+)x=1;for(i=1;i 二n;i+)x=x*i;y=y+x;prin tf(%dn,y);三、利用公式求 cosx 的近似值(精度为 10-6):#i nclude#in clude void mai n()float n=1,t=1,pi=0,s=1,x,i=1;sca nf(%f,&x);while(fabs(t)=1e-6)pi+=t;n=n*i*(i+1);s=-s*x*x;i+;t=s/n;prin tf(%f,pi);作业七用选择法对 10 个整数排序(由大到小)o#include void main(vo
10、id)int a10,i,j,t;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i9;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;for(i=0;i10;i+)printf(%6d,ai);printf(n);二、输入 10 个学生的一门课成绩,用一维数组存放其成绩,统计并输出不及 格人数及其百分比。#include void main(void)int i,count=0;float score10,percent;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i10;i+)if(scorei60)coun
11、t+;percent=(float)count/10;printf(%d,%5.1f,count,percent);三、编程实现 N 阶方阵转置。#include void main()int a33,b33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);for(i=0;i3;i+)for(j=0;j3;j+)bji=aij;printf(n);for(i=0;i3;i+)for(j=0;j3;j+)prin tf(%4d,bij);prin tf(n);作业八 一、把输入的一个字符串按逆序重新排序其字符,并输出。#i nclude#includ
12、e void mai n()char a80,k;int i,j;gets(a);for(i=0,j=strle n(a)-1;ij;i+,j-)k=ai;ai=aj;aj=k;puts(a);二、从键盘输入一个字符串。要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其它字符的个数#in clude void main()int i,a=0,b=0,c=0,d=0,e=0;char q20;gets(q);for(i=0;qi!=0;i+)if(qi=0&qi=a&qi=A&qi=Z)c+;else if(qi=)d+;else e+;printf(%3d%4d%3d%3d%3d,a
13、,b,c,d,e);三、输入五个英文单词,请找出它们之中按字典排序法排在最前的一个词#include#include void main()char a530,b30;int i,j,k;for(i=0;i5;i+)gets(ai);for(i=0;i5;i+)k=i;strcpy(b,ai);for(j=i+1;j5;j+)if(strcmp(aj,b)0)k=j;strcpy(b,aj);if(k!=i)strcpy(b,ai);strcpy(ai,ak);strcpy(ak,b);puts(ai);prin tf(n);作业九 一、编写一函数,将字符串中的小写字母转换为大写字母,主函数输
14、入字符串并输出结果。#i nclude char cha nge(char a)int i;for(i=0;ai!=0;i+)if(ai=a&ai=z)ai=ai-32;void mai n()char b80;gets(b);cha nge(b);puts(b);二、编写一函数求 N!在主函数中输入 N,调用函数求 N!,输出结果。#i nclude int sum(i nt n)int i,pi=1;for(i=1;i 二n;i+)pi=pi*i;return(pi);void mai n()int p=0,n;sca nf(%d,&n);p=su m(n);prin tf(%dn,p);
15、三、编写一个函数,求二维数组所有元素的和,要求二维数组的行、列以及数组 通过函数参数传递,并通过主函数调用求 2 行 3 列的数组的所有元素之和。#in clude int nu m(i nt a23,i nt n,i nt m)int sum=O,i,j;for(i=0;i n;i+)for(j=0;jm;j+)sum=sum+aij;retur n(sum);void mai n()int a23,i,j;int p=0,n=2,m=3;for(i=0;i2;i+)for(j=0;j3;j+)sca nf(%d,&aij);p二nu m(a,n,m);prin tf(%d,p);作业十 一
16、、编写程序,通过函数求 6-300 以内的素数的和。#i nclude#in clude void mai n()int i,sum=0;int per(int);for(i=6;i=300;i+)sum=sum+per(i);printf(SUM=%dn,sum);int per(int n)int k,i;k=sqrt(n);for(i=2;i=k+1)return n;else return 0;/*8265*/二、求 sin30 +sin60 0+cos3O+cos6O0之和。(自编 sin 和 cos 函数)#include#include#define PI 3.14159 voi
17、d main()float y,x30,x60;float sin1(float);float cos1(float);x30=30*PI/180;x60=60*PI/180;y=sin1(x30)+cos1(x30)+sin1(x60)+cos1(x60);printf(SUM=%fn,y);float sin1(float x)float sum=0,t=x;int i=1,f=1;do sum=sum+t;i=i+2;f=-f;t=t*f*x*x/(i*(i-1);while(fabs(t)1e-6);return sum;float cos1(float x)float sum=0,t
18、=1;int i=0,f=1;do sum=sum+t;i=i+2;f=-f;t=t*f*x*x/(i*(i-1);while(fabs(t)1e-6);return sum;/*SUM=2.608201*/三、编写函数,求级数 S=1+2+3+.n,并在主函数中求:#include int f(int);void main()float s;s=(float)(f(3)+f(4)+f(5)/(f(5)+f(6)+f(7);printf(SUM=%fn,s);int f(int a)int sum=0,i;for(i=1;i=a;i+)sum=sum+i;return sum;/*SUM=0.
19、484375*/作业十一 一、编写一个函数,求一维数组的平均值、最大值#in elude void mai n()int a5,i,max;void maxave(i nt w5,i nt*p,float*q);float ave=0;for(i=0;i5;i+)sca nf(%d,&ai);maxave(a,&max,&ave);prin tf(MAX=%d,AVER=%fn,max,ave);void maxave(i nt w5,i nt*p,float*q)int i;*p=w0;for(i=1;i5;i+)if(*pwi)*p=wi;for(i=0;i5;i+)*q=*q+wi;*q
20、=*q/5;二、输入 10 个数,编写一个函数,按降序对其排序,的个数。#include int sort(int w,int n);void main()int i,a10,count=0;for(i=0;i10;i+)scanf(%d,&ai);count=sort(a,10);for(i=0;i10;i+)printf(%3d,ai);printf(nCOUNT=%dn,count);int sort(int w,int n)int i,j,t,c=0;统计其中大于平均值的数 float av=0;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(wiwj)t=wi;
21、wi=wj;wj=t;for(i=0;in;i+)av=av+wi;av/=10;for(i=0;iav)c+;return c;三、编写一个函数,求 N 阶二维矩阵的主和辅对角线元素之和#include#define N 3 void main()int aNN,i,j,sum,sun;for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iN;i+)for(j=0;jN;j+)prin tf(%3d,aij);prin tf(n);sum二zdj(a,N);sun二 fdj(a,N);prin tf(sum=%d,s un=%dn,sum,s
22、 un);int zdj(int cN,int n)int i,s=0;for(i=0;i n;i+)s+=cii;return s;int fdj(int dN,int n)int i,j,s=0;for(i=0;i n;i+)for(j=0;j n;j+)if(i+j=n-1)s+=dij;return s;作业十二 用指针的方法,把输入的一个字符串按逆序重新排序其字符,并输出#include#include void main()char w20,ch,*b,*e,*s;int i;s=b=w;gets(w);i=strlen(w);e=s+i-1;for(;be;b+,e-)ch=*b
23、;*b=*e;*e=ch;puts(s);二、用指针的方法,将键盘输入的两个字符串连接起来形成一个新字符串#include#include void main()char a30,b20,*p,*q,*s;int i,j;p=s=a;q=b;gets(p);gets(q);i=strlen(p);p=p+i;while(*p+=*q+)puts(s);三、用指针的方法,将键盘上输入的一串数值字符串转换为数值输出-132,则输出为:-132。#include#include void main()char a10,*p;int t=1,n=0;如输入:gets(a);p=a;if(*p=-)t=
24、-t;P+;while(*p!二0)n二n*10+(*p-0);P+;n=n*t;prin tf(%dn,n);作业十三 一、通过函数统计某字符串中,英文单词的个数#i nclude#defi ne YES 1#defi ne NO 0 void mai n()int n I,nw,n c,i nword;(参考 p69)char c;in word二NO;nl二nw=n c=0;while(c=getchar()!=*)+nc;if(c=n)+nl;if(c=|c=t|c=n)inword=NO;else if(inword=NO)inword=YES;+nw;nl+;nc+;printf(
25、%dt%dt%dn,nl,nw,nc);二、在主函数中初始化一个 3 行 4 列的矩阵并将每个元素都输出,然后调用子 函数,分别计算每一行的元素之和,将和直接存放在每行的第一个元素中,返 回主函数之后输出各行元素的和。#include void main()int a34,i,j;void sum(int w4,int n,int m);for(i=0;i3;i+)for(j=0;j4;j+)scanf(%d,&aij);for(i=0;i3;i+)for(j=0;j4;j+)printf(%3d,aij);printf(n);sum(a,3,4);for(i=0;i3;i+)printf(%
26、3d,ai0);printf(n);void sum(int w4,int n,int m)int i,j;for(i=0;in;i+)for(j=1;jm;j+)wi0+=wij;三、己知有若干个学生的数据(包括学号、姓名和一门课程的成绩)现:1 求课程的平均成绩,输出低于平均成绩的同学的学号、姓名及成绩;请编程实 2 找出学生中的成绩最高者,输出该学生的学号、姓名及成绩;3 按成绩从高到低排序并输出。#include struct student int num;char name8;float score;float average(struct student w,int n)floa
27、t av=0;int i;for(i=0;in;i+)av=av+wi.score;av=av/n;return av;int mmax(struct student w,int n)int i,maxi=0;float max=w0.score;for(i=0;imax)max=wi.score;maxi=i;return maxi;void sort(struct student w,int n)int i,j,k;struct student t;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(wk.scorewj.score)k=j;if(k!=i)t=w
28、i;wi=wk;wk=t;void main()struct stu5=11,aa,80,22,bb,90,33,cc,70,44,dd,80,55,ee,student 60;int i,maxi;float av;av=average(stu,5);for(i=0;i5;i+)if(stui.scoreav)printf(%d%s%fn,stui.num,stui.name,stui.score);maxi=mmax(stu,5);printf(%d%s%fn,stumaxi.num,stumaxi.name,stumaxi.score);sort(stu,5);for(i=0;i5;i+)printf(%d%s%fn,stui.num,stui.name,stui.score);