1、C语言题目+答案大全2009题目如下:编写成绩排序,按学生(学生的总数可变)的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号(1000+学号);同名次的学号输出在同一行中,一行最多输出5个学号。#include#includestructStudentintnum;floatscore;intmain(void)intlen,no,count,cnt;structStudent*pArr;inti,j,k;structStudentt;/动态的构造一维数组printf(请输入学生的个数:n);printf(len=);scanf(%d,&len);
2、pArr=(structStudent*)malloc(len*sizeof(structStudent);/输入for(i=0;ilen;+i)printf(请输入序号为%d的学生成绩:n,i+1);pArri.num=i+1;printf(score=);scanf(%f,&pArri.score);/按学生成绩排序冒泡算法for(i=0;ilen-1;+i)for(j=0;jlen-1-i;+j)if(pArrj.scorepArrj+1.score)t=pArrj;pArrj=pArrj+1;pArrj+1=t;printf(nn学生的成绩排序为:n);/输出no=1;cnt=1;fo
3、r(i=0;ipArri+1.score)printf(n%d%f%d,no,pArri.score,cnt);for(j=0;jcnt;j+)printf(1000%d,pArri-j.num);if(cnt%5=0)printf(n);cnt=1;no+;elsecnt+;printf(n);return0;2010题目是根据公式编写计算三角形面积的程序,首先要判断三条边长能否构成三角形,不能构成,需要重新输入,其次将三条边长按着从大到小排序输出,第三,利用函数计算三角形的面积,最后,所有的输入、输出,都在一个函数中实现。#include#includefloat ff(float a,f
4、loat b,float c);/对函数ff的声明float area(float a,float b,float c);/对函数area的声明main() float a,b,c;printf(请输入三个数,用逗号隔开:n);scanf(%f,%f,%f,&a,&b,&c);while(a+bc&a+cb&b+ca)!=1)/判断是否可以构成三角形 printf(不能构成三角形,请重新输入:n); scanf(%f,%f,%f,&a,&b,&c); printf(可以构成三角形,边长从大到小为:n); ff(a,b,c);/调用函数ff,使abc按从大到小排序输出 area(a,b,c);/
5、调用求面积函数/*判断三个数,并从大到小输出*float ff(float x,float y,float z) /三个数大小排序函数float t;if(xy) t=x; x=y; y=t; if(xz) t=x; x=z; z=t; if(yz) t=y; y=z; z=t; printf(%f,%f,%fn,x,y,z);/*求三角形的面积函数*float area(float a,float b,float c)/求面积函数float s,area;s=1.0/2*(a+b+c);/s=(a+b+c)/2area=sqrt(s*(s-a)*(s-b)*(s-c);/三角形面积公式:ar
6、ea=s(s-a)(s-b)(s-c);printf(三角形面积=%fn,area);2011求一个二元方程的根,输入方程的系数A,B,C;(1)采用子函数判定方程根的个数;(2)若方程有根时,求出相应的根;(3)若方程无根时,则继续改变方程的系数,直到有解输出为止;#include#includevoid main() float a,b,c,x1,x2; int d; int sort(float a,float b,float c);/子函数的声明 printf(请输入三个实数a b c:n); scanf(%f%f%f,&a,&b,&c); d=sort(a,b,c); while(d
7、=0) printf(方程无实根,请重新输入a,b,c:n); scanf(%f%f%f,&a,&b,&c); d=sort(a,b,c); /调用子函数 if(d=1) printf(方程有两个相等的根n); x1=(-b+sqrt(b*b-4*a*c)/2*a; printf(x1=x2=%fn,x1); if(d=2) printf(方程有两个不同的根n); x1=(-b+sqrt(b*b-4*a*c)/2*a; x2=(-b-sqrt(b*b-4*a*c)/2*a; printf(x1=%f x2=%fn,x1,x2); int sort(float a,float b,float c
8、)/子函数的定义 int flag; if(b*b-4*a*c0) flag=2; else if(b*b-4*a*c=0) flag=1; else flag=0; return(flag); 2012编写一程序,找出并显示100-200间的所有素数,要求如下:程序要有主函数和用户自定义函数;自定义函数用于判断一个数是否是素数,是返回1,不是返回0;主函数完成自定义函数的调用,素数个数的统计,素数个数和所有素数的输出显示2014编写一程序,找出并显示100-200间的所有素数,要求如下:程序要有主函数和用户自定义函数;自定义函数用于判断一个数是否是素数,是返回1,不是返回0;主函数完成自定义
9、函数的调用,素数个数的统计,素数个数和所有素数的输出显示。#includeint main() int i,k=0; int fun(int n);/素数函数声明 for(i=100;i=200;i+)/循环判断 if(fun(i) printf(%dn,i); k+; printf(共有%d个素数n,k);int fun(int n)/判断n是否是素数函数 int i; for(i=2;in;i+) if(n%i=0) return 0; return 1; 2015/在函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素的个数。/例如,可以写为:void nzp(int a)
10、/或写为void nzp(int a,int n)/其中形参数组 a 没有给出长度,而由 n 值动态地表示数组的长度。n 的值由主调函数的实参进行传送。#include#define b 10/定义一个数作为数组的下标main() int i; float ab; printf(请输入10个实型数:n); for(i=0;ib;i+) scanf(%f,&ai);/输入十个数保存到数组中 float cal_mean(float a, int n);/求十个实型数的平均值 float cal_variance(float a, int n);/求实型数的方差 printf(平均值=%.2fn,
11、cal_mean(a,b);/调用函数直接输出十个实型数的平均值和方差 printf(方差=%.2fn,cal_variance(a,b); float cal_mean(float a,int n)/均值函数的定义 int i; float sum=0,average=0; for(i=0;in;i+) sum=sum+ai; average=sum/n; return average;float cal_variance(float a,int n) /方差函数的定义float sum=0,average=0,sum2=0;float variance;int i;for(i=0;in;i
12、+)sum=sum+ai;average=sum/n;for(i=0;in;i+)ai=ai-average;/每个元素与均值之差sum2=sum2+ai*ai;/方差和的结果保存在sum2变量中variance=sum2/n;/求出方差return variance;/返回方差矩阵(1).矩阵A的两对角线元素之和; (2).矩阵A的元素中负数的平均值; (3).矩阵A的转置; (4).从键盘输入另一个4*4的矩阵B,计算矩阵A和B的乘积。 (30分钟,满分40分) 以上四个问题要求用函数编写.#includevoid f1(float a4);/矩阵A的两对角线元素之和void f2(flo
13、at a4);/矩阵A的元素中负数的平均值;void f3(float a4);/矩阵A的转置;void f4(float a4);/从键盘输入另一个4*4的矩阵B,计算矩阵A和B的乘积。 void main() int i,j; float a44; printf(请输入二维数组(4行4列):n); for(i=0;i4;i+) for(j=0;j4;j+) scanf(%f,&aij); f1(a); f2(a); f3(a);/矩阵A的转置 f3(a);/为了得到A矩阵(矩阵A的转置的转置) f4(a);void f1(float a4) int i,j; float sum1=0.0;
14、 float sum2=0; i=0; for(i=0;i4;i+) sum1+=aii; for(i=0;i4;i+) sum2+=ai3-i; printf(%f %fn,sum1,sum2);void f2(float a4) int i,j,n=0; float sum=0; for(i=0;i4;i+) for(j=0;j4;j+) if(aij0) n+; sum += aij; if(!n) printf(平均值为0!n); else printf(平均值为%f!n,sum/n); void f3(float a4) int i,j; float t; for(i=0;i4;i+
15、) for(j=0;j=i;j+) t=aij; aij=aji; aji=t; void f4(float a4) int i,j,l,m; float b44,c44; printf(请输入又一个二维数组(4行4列):n); for(i=0;i4;i+) for(j=0;j4;j+) scanf(%f,&bij); for(i=0;i4;i+) for(j=0;j4;j+) cij=0; for(l=0;l4;l+) cij+=ail*blj;/矩阵Am*s*Bs*n=Cm*n for(i=0;i4;i+) for(j=0;j4;j+) printf(%4f ,cij); printf(n );
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1