C语言程序设计省二级考试题编程_第1页
C语言程序设计省二级考试题编程_第2页
C语言程序设计省二级考试题编程_第3页
C语言程序设计省二级考试题编程_第4页
C语言程序设计省二级考试题编程_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

文件题:1、已知在文本文件20075.txt中共有500个记录,每个记录是用以下格式表示的5项数据(各数据间以空格分开)(从网络课件中下载素材文件):学号姓名机试成绩笔试成绩平时成绩nnnnnnnnnccccccnnnnnn(说明:n表示整型;c表示字符型;n的个数表示数据位数,例如nn表示两位整数,c的个数表示字符位数)求出前400人的机试的平均成绩。*/#include#includemain()FILE*fp;charxh10,name7;inti,js,bs,pscj;doublesum=0,average;fp=fopen(20075.txt,r);if(fp!=NULL)for(i=1;i=400;i+)fscanf(fp,%s%s%d%d%d,xh,name,&js,&bs,&pscj);sum+=js;average=sum/400;printf(average=%.2lfn,average);fclose(fp);elseprintf(文件打开失败!n);exit(0);/*average=91.56Pressanykeytocontinue*/2、已知在文本文件20071.txt中共有600个记录,每个记录是一个用xx.x格式表示的实数,编写程序统计出记录中所有大于等于60的数据个数(使用循环结构实现)*/#include#includemain()FILE*fp;inti;doublescore;intcount=0;fp=fopen(20071.txt,r);if(fp!=NULL)for(i=1;i=60)count+;fclose(fp);printf(=60的人数为%dn,count);elseprintf(文件打开失败!n);exit(0);/*=60的人数为513Pressanykeytocontinue*/3、/*已知在文本文件中共有600个记录,每个记录是一个用xx.x格式表示的实数,编程将该文件中的全部数据原样复制一份到文本文件20082.txt中。*/#include#includemain()FILE*f20081,*f20082;doublescore;inti;f20081=fopen(20081.txt,r);f20082=fopen(20082.txt,w);if(f20081!=NULL&f20082!=NULL)while(fscanf(f20081,%lf,&score)!=EOF)fprintf(f20082,%4.1lfn,score);fclose(f20081);fclose(f20082);printf(文件复制成功!n);elseprintf(20081.txt未打开或20082.txt未打开!n);exit(0);4、#include#includemain()FILE*f20083,*f20084,*f20085;doublescore;f20083=fopen(20083.txt,r);f20084=fopen(20084.txt,r);f20085=fopen(20085.txt,w);if(f20083!=NULL&f20084!=NULL&f20085!=NULL)while(fscanf(f20083,%lf,&score)!=EOF)fprintf(f20085,%4.1lfn,score);while(fscanf(f20084,%lf,&score)!=EOF)fprintf(f20085,%4.1lfn,score);fclose(f20083);fclose(f20084);fclose(f20085);printf(两个文件合并成功,请检查20085.txt是否存在!n);elseprintf(20083.txt或20084.txt或20085.txt未打开!n);exit(0);5、/*已知在文本文件中共有600个记录,每个记录是一个用xx.xx格式表示的实数,编程求出文件中每两个相邻数中的小值的和。注:每两个相邻数的含义是:第i个数与第i+1个数称为是两个相邻数。*/#includemain()FILE*fp;doublesum=0,score,pre;fp=fopen(s20092.txt,r);if(fp!=NULL)fscanf(fp,%lf,&pre);while(fscanf(fp,%lf,&score)!=EOF)if(prescore)sum+=pre;elsesum+=score;pre=score;fclose(fp);printf(sum=%.2lfn,sum);elseprintf(s20092.txt打开失败!n);exit(0);/*sum=24279.36Pressanykeytocontinue*/6、/*已知在文本文件中共有600个记录,每个记录是一个用xx.xx格式表示的实数,编程求出文件中其值小于50的最大实数首次出现是第几个记录。*/#include#includemain()FILE*fp;doublescore,max;intpos=0,result;fp=fopen(20074.txt,r);if(fp!=NULL)/*找出小于50的第一条记录,并把数据赋值给max*/while(fscanf(fp,%lf,&score)!=EOF)pos+;if(scoremax&score50)max=score;result=pos;fclose(fp);elseexit(0);printf(小于50的最大实数首次出现是第%d个记录n,result);一维数组:1#include main() int i,j,t; int a10=11,33,56,67,25,45,43,54,69,89; printf(冒泡法排序前:n); for(i=0;i10;i+)printf(%3d,ai); printf(n);/*冒泡法排序*/ for(i=0;i10-1;i+) for(j=0;j10-1-i;j+) if(ajaj+1) t=aj; aj=aj+1; aj+1=t; printf(冒泡法排序后:n); for(i=0;i10;i+) printf(%3d,ai); printf(n); 102#include main() int i,j,k,t; int a10=23,45,56,98,56,74,85,33,40,67; printf(选择法排序前:n); for(i=0;i10;i+) printf(%3d,ai); printf(n); /*选择法排序*/ for(i=0;i10-1;i+) k=i; for(j=i+1;j10;j+) if(akaj) k=j; if(k!=i) t=ak; ak=ai; ai=t; printf(选择法排序后:n); for(i=0;i10;i+) printf(%3d,ai); printf(n); 103/*编写程序实现统计一维数组A中小于数组元素平均值的元素个数并输出数组各元素的值,平均值和小于平均值的元素的个数,数组A的数据为:12,56,69,59,47,21,24,51,64。*/#include main() int i,count=0,sum=0; double average; int a9=12,56,69,59,47,21,24,51,64; printf(数组原始数据为:n); for(i=0;i9;i+) printf(%3d,ai); sum=sum+ai; printf(n); /*求平均值*/ average=1.0*sum/9; printf(数组各元素的平均值为:n%.2lf。n,average); printf(小于平均值的数据为:n); for(i=0;i9;i+) if(aiaverage) printf(%3d,ai); count+; printf(n); printf(小于平均值的元素一共有%d个。n,count);104/*用随机函数产生15到85间的正整数,为一维数组A10赋值,然后将数组A降序排序,输出数组A最大的5个元素的平均值。(思路:产生随机数所需要的头文件为stdlib.h,初始化随机数生成器的语句为 srand(time(0);, 先对数组进行排序,然后计算前5个元素的平均值,最后将该平均值输出)*/#include #include main() int i,j,t,a10; double sum=0,average; srand(time(0); /*产生随机数,并输出各个元素*/ printf(随机数数组的各元素为:n); for(i=0;i10;i+) ai=rand()%71+15; printf(%3d,ai); printf(n); /*冒泡法排序*/ for(i=0;i10-1;i+) for(j=0;j10-1-i;j+) if(ajaj+1) t=aj; aj=aj+1; aj+1=t; /*输出排序后的数组*/ printf(排序后的随机数数组的各元素为:n); for(i=0;i10;i+) printf(%3d,ai); if(i5) sum+=ai; average=sum/5.0; printf(n); printf(最大的五个元素的平均值为:%.2lf。n,average); 105/*求一维数组A中最大3个元素的平方根之和。 A数组的数据为56, 78, 98, 45, 58, 34, 12, 90, 76,88。(思路:定义一个数组B,将A的数组的各元素复制到B数组中,然后对B数组升序排序,找出排序后的前三个元素,即为最大的三个元素,最后将此三元素进行计算并输出) */#include #include main() int i,j,t; int a10=56,78,98,45,58,34,12,90,76,88; int b10; double result=0; /*输入a数组,并向将各个元素填入b数组*/ printf(输入数组A的各元素:n); for(i=0;i10;i+) printf(%3d,ai); bi=ai; printf(n); /*对b数组进行逆序排序*/ for(i=0;i10-1;i+) for(j=0;j10-1-i;j+) if(bjbj+1) t=bj; bj=bj+1; bj+1=t; /*输出逆序有序b数组*/ printf(输入数组B的各元素:n); for(i=0;i10;i+) printf(%3d,bi); /*此时,B已经有序,前3个元素即为最大值*/ if(i3) result=result+sqrt(bi); printf(nn); printf(最大三个元素的平方根之和:%.2lfn,result); 1#include main() int i,j,t; int a10=11,33,56,67,25,45,43,54,69,89; printf(冒泡法排序前:n); for(i=0;i10;i+) printf(%3d,ai); printf(n); /*冒泡法排序*/ for(i=0;i10-1;i+) for(j=0;j10-1-i;j+) if(ajaj+1) t=aj; aj=aj+1; aj+1=t; printf(冒泡法排序后:n); for(i=0;i10;i+)printf(%3d,ai); printf(n); 102#include main() int i,j,k,t; int a10=23,45,56,98,56,74,85,33,40,67; printf(选择法排序前:n); for(i=0;i10;i+) printf(%3d,ai); printf(n); /*选择法排序*/ for(i=0;i10-1;i+) k=i; for(j=i+1;j10;j+) if(akaj) k=j; if(k!=i) t=ak; ak=ai; ai=t; printf(选择法排序后:n); for(i=0;i10;i+) printf(%3d,ai); printf(n); 103/*编写程序实现统计一维数组A中小于数组元素平均值的元素个数并输出数组各元素的值,平均值和小于平均值的元素的个数,数组A的数据为:12,56,69,59,47,21,24,51,64。*/#include main() int i,count=0,sum=0; double average; int a9=12,56,69,59,47,21,24,51,64; printf(数组原始数据为:n); for(i=0;i9;i+) printf(%3d,ai); sum=sum+ai; printf(n); /*求平均值*/ average=1.0*sum/9; printf(数组各元素的平均值为:n%.2lf。n,average); printf(小于平均值的数据为:n); for(i=0;i9;i+) if(aiaverage) printf(%3d,ai); count+; printf(n); printf(小于平均值的元素一共有%d个。n,count);104/*用随机函数产生15到85间的正整数,为一维数组A10赋值,然后将数组A降序排序,输出数组A最大的5个元素的平均值。(思路:产生随机数所需要的头文件为stdlib.h,初始化随机数生成器的语句为 srand(time(0);, 先对数组进行排序,然后计算前5个元素的平均值,最后将该平均值输出)*/#include #include main() int i,j,t,a10; double sum=0,average; srand(time(0); /*产生随机数,并输出各个元素*/ printf(随机数数组的各元素为:n); for(i=0;i10;i+) ai=rand()%71+15; printf(%3d,ai); printf(n); /*冒泡法排序*/ for(i=0;i10-1;i+) for(j=0;j10-1-i;j+) if(ajaj+1) t=aj; aj=aj+1; aj+1=t; /*输出排序后的数组*/ printf(排序后的随机数数组的各元素为:n); for(i=0;i10;i+) printf(%3d,ai); if(i5) sum+=ai; average=sum/5.0; printf(n); printf(最大的五个元素的平均值为:%.2lf。n,average); 105/*求一维数组A中最大3个元素的平方根之和。 A数组的数据为56, 78, 98, 45, 58, 34, 12, 90, 76,88。(思路:定义一个数组B,将A的数组的各元素复制到B数组中,然后对B数组升序排序,找出排序后的前三个元素,即为最大的三个元素,最后将此三元素进行计算并输出) */#include #include main() int i,j,t; int a10=56,78,98,45,58,34,12,90,76,88; int b10; double result=0; /*输入a数组,并向将各个元素填入b数组*/ printf(输入数组A的各元素:n); for(i=0;i10;i+) printf(%3d,ai); bi=ai; printf(n); /*对b数组进行逆序排序*/ for(i=0;i10-1;i+) for(j=0;j10-1-i;j+) if(bjbj+1) t=bj; bj=bj+1; bj+1=t; /*输出逆序有序b数组*/ printf(输入数组B的各元素:n); for(i=0;i10;i+) printf(%3d,bi); /*此时,B已经有序,前3个元素即为最大值*/ if(i3) result=result+sqrt(bi); printf(nn); printf(最大三个元素的平方根之和:%.2lfn,result); 1、打印杨辉三角形#define N 10main() int i,j; int yNN; for(i=0;iN;i+) for(j=1;j=i-1;j+) yij=yi-1j-1+yi-1j; /其他元素由上一行得到 yi0=yii=1;/每行首尾元素为1 /数组y初始化完毕 for(i=0;iN;i+) /用for循环输出数组y for(j=0;j=i;j+) /杨辉三角只有前i个元素 printf(“%6d”,yij); printf(“n”); 2、输入3个学生、5门课程的成绩,分别存放在36矩阵的前5列上,求出每个学生的平均成绩并存放在该行对应的列上。#includemain() int i,j; float s36,sum; for(i=0;i3;i+) for(j=0;j5;j+)scanf(%f,&aij); for(i=0;i3;i+) sum=0; for(j=0;j5;j+) sum=sum+sij; / 用循环计算每行前5个元素的和 si5=sum/5; /求出平均并存入该行最后一个元素的位置 for(i=0;i3;i+) for(j=0;j6;j+) /用for循环输出数组s,运行结果如下 printf(“%5.1f”,sij); printf(“n”); 3、将一个二维数组行和列的元素互换,存入另一个二维数组中。参考P123 例6-21#includevoid main() int a23=1,2,3,4,5,6; int b32 , i, j; /定义数组a和b printf(“array a:n”); for(i=0;i2;i+) for(j=0;j3;j+) printf(“%5d”,aij); /输出数组a bji=aij; /a的行列互换,存入b printf(“n”); printf(“array b:n”);for(i=0;i3;i+) for(j=0;j2;j+) printf(“%5d”,bij); /输入数组b printf(“n”); 4、从键盘输入10个学生的成绩,保存在一维数组中,然后显示出平均成绩。要求求平均成绩功能用函数实现。#includemain( ) float average(float b10); float score10,aver; int i; printf (“input 10 scores:n”); for (i=0;i10;i+) scanf (“%f”,&scorei); aver=average(score); printf (“average score is %5.2fn”,aver);float average (float b10) int i; float aver, sum=0; for (i=0;i10;i+) sum=sum+bi; aver=sum/10; return(aver);5、从键盘输入一个字符串,统计其字母的个数。#include#includeint count(char ch);main()char str200; int i, k; printf(“输入一个字符串:n”);gets(str);for(i=0; i=a & ch=A & ch=Z)a+; return a; 6、编写一个处理一维数组的通用过程(函数或字程序),该过程可以实现任意一维数组按由大到小进行排序。已知数组A(数据附后),编写主程序调用以上过程,输出经过排序之后最小的3个数组元素之平均值(结果保留小数后两位)。56,78,98,45,58,34,12,90,76,85/*文件main.c*/#includeextern void sort(int a , int m);main( ) int i, a =56,78,98,45,58,34,12,90,76,85;float sum=0; sort(a,10); for(i=10-3;i10;i+)sum=sum+ai; sum=sum/3;printf(“%.2f”,sum);/*文件sort.c*/*冒泡排序法 */extern void sort(int a , int m) int i, j, temp; for(i=0;im-1;i+) for(j=0;jm-i-1;j+) if(ajj+1) temp=aj;aj=aj+1;aj+1=temp 7、编写一个通用过程(函数或子程序),该过程可以实现把一个十进制的正整数转换成七进制数,例如把十进制数88转换成154。编写主程序调该过程,把整数转换成七进制, 并输出。#include#include/*字符串反序 */void nixv(char b30) int i=0,j,temp; j=strlen(b) -1; while(ij) temp=bi; bi=bj; bj=temp; i+; j-; /* 10转7 结果在字符数组b中 */void d_to_7(long d, char b30) long i=0,r,dd; dd=d; while(dd!=0) r=dd%7; bi=0 + r; i+; dd=dd/7; bi=0; nixv(b);main() long n=; char c30; d_to_7(n,c); printf(%s,c);8、编写一个判断一个整数是否是素数的函数,然后调用该函数显示出 21000之间的所有素数。/* 调用函数求21000之间的所有素数 */#includeint pf(int n) /*素数判断函数*/ int i; int flag; flag=1; for(i=2; i=n/2; i+) if(n%i=0) flag=0; break; return( flag ); /* 素数返回1, 否则返回0 */ main( ) /*主函数*/ int i; printf(”21000之间的素数如下: n”); for(i=2; imain() float sum (int); /*函数sum的原型声明*/ float add; add=sum (20); /*主函数调用sum函数*/ printf (“add=%e”,add); /*sum返回值超过int型和long型的范围*/ float sum (int n) /*求n以内的自然数的阶乘和*/ float fac (int); /*函数fac原型声明*/ int k; float s=0; for (k=1;k=n,k+) s+=fac (k); /*调用fac求k!并累加到s中*/ return s; /*返回阶乘和*/float fac (int n) /*求n以内的自然数的阶乘和*/ int k; float f=1; for (k=1; k=n, k+) f*=k; return f; /*返回n的阶乘*/10、求Fibonacci数列的第n项。 Fibonacci数列定义如下程序如下:#includelong fibo(int ); main() long f; int n;scanf (“%d”,&n); f=fibo (n);printf (“%ldn”,f); long fibo (int n) long f; if (n=1|n=2) f=1;else f=fibo(n-1)+fibo(n-2);return f;11、定义一个名称为a并含有10个元素的整型数组,然后依次把1,2,3,10这10个数存入元素a0, a1, a2 , 9,最后求出这10个数的和。#includemain() int a10, s;a0=1; a1=2; a2=3; a3=4; a4=5; a5=6; a6=7; a7=8; a8=9; a9=10; s=a0+a1+a2+a3 +a4+a5+a6 +a7 +a8+a9; printf(“a0+a1+a9=%d”,s);#includemain() int a10, i, s=0; for(i=0; i=9; i+) ai = i+1; for(i=0; i=9; i+) s = s+ ai;printf(“a0+a1+a9=%d”,s);12、利用数组求集合23,56,83,52,100,88,78,25,34的最大值。#includemain() int a = 23,56,83,52,100,88,78,25,34,max,i; max=a0; /* 擂台初值 */ for(i=1,imax) max=ai; /* 让每个数与擂台上的数比较,大者留在擂台上 */ printf(“最大值:%d”, max);13、冒泡法排序#include#define N 10main() int aN,i,j,t; printf(

温馨提示

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

评论

0/150

提交评论