2011年C语言上机题库20套
- 格式:doc
- 大小:1.90 MB
- 文档页数:435
2011年全国计算机二级C语言上机题题库(超值100题)1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0)k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
1 给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S r π=2,在程序中定义的变量名要与公式的变量相同)。
例如,输入圆的半径值:19.527,输出为:s=598.949991。
2 请补充main 函数,该函数的功能是:计算两个自然数n 和m(m<10000)之间所有数的和(n 和m 从键盘输入)。
例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。
3 给定程序的功能是:判断字符ch 是否与串str 中的某个字符相同,若相同什么也不做,若不同则插在串的最后。
4 请补充函数fun,该函数的功能是:把ASCII 码为偶数的字符从字符串str 中删除,结果仍然保存在字符串str 中,字符串str 从键盘输入,其长度作为参数传入函数fun 。
例如,输入"abcdef",输出"ace"。
5 请补充函数fun,该函数的功能是:判断某一个年份是否为闰年。
例如,1900年不是闰年,2004是闰年。
6 请补充函数fun,函数fun 的功能是求n 的阶乘。
7 请补充函数fun,该函数的功能是:整除x 且是偶数的数,把这些数保存在数组bb 中,并按从大到小的顺序输出。
例如当x=20时,依次输出:20 10 4 2。
8 请补充函数fun,它的功能是:计算并输出n(包括n)以内所有能被3或7整除的自然数的倒数之和。
例如,在主函数中从键盘给n 输入30后,输出为:s=1.226323。
9 请补充main 函数,该函数的功能是:计算每个学生成绩的平均分,并把结果保存在数组bb中。
例如,当score[N][M]={{83.5,82,86,65,67},{80, 91.5 ,84,99,95},{90.5,95,86,95,97}}时,三个学生的平均分为76.7,89.9,92.7。
.第1套填空题请补充FUN函数,FUN函数的功能是求10的阶乘。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>long fun(int n){if (___1___)return (n*fun(___2___));return ___3___;}main(){p rintf("10!=%ld\n", fun(10));}第1处填空:n>1或1<n第2处填空:n-1第3处填空:1或11或1L改错题下列给定程序的功能是:读入一个整数K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>/********found********/IsPrime(int n);{int i, m;m = 1;/********found********/for (i=2; i<n; i++)if !(n%i){m = 0;break;}return(m);}main(){int j, k;printf("\nplease enter an integer number between 2 and 10000:");scanf("%d", &k);printf("\n\nThe prime factor(s) of %d is(are):", k);for (j=2; j<k; j++)if ((!(k%j)) && (IsPrime(j)))printf(" %4d,", j);printf("\n");}第1处:Isprime(int n);应改为Isprime(int n)第2处:if !(n%i)应该为if(!(n%i))编程题M个人的成绩存放在score数组中,请编写函数fun,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below所指的数组中。
第92套1程序填空给定程序中,函数fun的功能是:计算f(x)=1+x+x2/2!+…+xn/n!的前n项。
若x=2.5,函数值为:12.182340。
的前n项。
若x=2.5,函数值为:12.182340。
第1处t=1;第2处for(i=1;i<n;i++)第3处t*=x/i;2程序修改给定程序MODI1.C中函数fun的功能是;找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,把这些整数放在s所指数组中,个数作为函数值返回。
int fum(int *s,int n){ int i,j,k,a,b,c;j=0;for(i=100;i<n;++){/*******found******/k=i;a=k%10;k/=10;b=k%10;k/=10;/*******found******/c=k%10;if(a==b&&a==c)s[j++]=i;}return j;}3程序设计请编写函数fun的功能是:计算并输出给定10个数的方差:例如:给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,l输出为s=11.730729。
double fun(double x[10]){int i;double avg=0.0,sum=0.0,abs=0.0,fc;for(i=0;i<10;i++)sum+=x[i];avg=sum/10;for(i=0;i<10;i++)abs+=(x[i]-avg)*(x[i]-avg);fc=sqrt(abs/10);return fc;}第93套1程序填空给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
第1处t=t->next;第2处printf(“%d”,t->data);第3处free(t);2程序修改给定程序MODI1.C中fun函数的功能是:将字符串中的字符按逆序输出,但不改变字符串的内容。
重要说明:本题库为从题中一题一题复制出来工作量大,而且有许多表达式无法在word中快速表示出来(这样会加大工作量)故而省略,或者表达错位,有的地方可能或者肯定会有错,我相信准备参加C语言二级考试的同学应当能够对照参考答案看出来,这是2011年最新版最完整考试题库,相信大家一定都能通过!第一套程序填空给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
如输入一个数:27638496,新的数为729第一空:{ t=*n%10;第二空:if(t%2!=0)第三空:*n=x;2.程序修改给定程序modi1.c中函数fun的功能是:计算n!。
例如,给n输入5,则输出120.000000。
double fun(int n ){ double result=1.0;/*****found******/if(n==0)return 1.0;while(n>1&&n<170)/*****found******/result*=n--;return result;}程序设计请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。
例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。
long fun(char *p){int i,len,t;long x=0;len=strlen(p);if(p[0]==‘-‗){ t=-1;len--;p++;}else t=1;while(*p)x=x*10-48+(*p++);return x*t;}第二套1. 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
1程序填空给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边值为0。
第1处for(i=0;i<N;i++)第2处t[i][j+m]=t[i][j];第3处for(j=0;j<m;j++)2程序修改给定程序MODI1.C是函数fun的功能是:计算并输出high以内最大的10个素数之和。
high的值由主函数传给fun函数。
int fun(int high){ int sum=0,n=0,j,yes;/*******found******/while((2<=high)&&(n<10)){ yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/*******found******/yes=0;break;}if(yes){sum+=high;n++;}}return sum;}3程序设计编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
xn+1=cos(xn)迭代步骤如下:1. 取x1初值为0.02. x0=x1,把x1的值赋给x03. x1=cos(x0),求出一个新的x14. 若x0-x1的绝对值小于0.000001执行步骤(5)否则执行步骤(2)5. 所求x1就是方程cos(x)-x=0的一个实根作为函数值返回。
程序将输出结果Root=0.739058。
float fun(){float x0,x1=0.0;do {x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);return x1;}第64套1程序填空给定程序中,函数fun的功能是:将a所指3×5矩阵中第k 列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。
第1处for(p=1;p<=k;p++)第2处for(j=0;j<N-1;j++)a[i][j]=a[i][j+1];第3处a[i][N-1]=temp;2程序修改给定程序MODI1.C是函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。
二级C语言上机试题汇编第01套:给定程序的功能是调用fun函数建立班级通讯录。
通讯录中记录每位学生的编号、姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
#include <stdio.h>#include <stdlib.h>#define N 5typedef struct{int num;char name[10];char tel[10];}STYPE;void check();/**********found**********/int fun(STYPE *std){/**********found**********/FILE *fp; int i;if((fp=fopen("myfile5.dat","wb"))==NULL)return(0);printf("\nOutput data to file !\n");for(i=0; i<N; i++)/**********found**********/fwrite(&std[i], sizeof(STYPE), 1, fp);fclose(fp);return (1);}main(){STYPE s[10]={ {1,"aaaaa","111111"},{1,"bbbbb", "222222"},{1,"ccccc","333333"},{1,"ddddd","444444"},{1,"eeeee", "555555"}};int k;k=fun(s);if (k==1){printf("Succeed!"); check();}elseprintf("Fail!");}***************************************************给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name)>0)2程序修改给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。
/**found**/q=p+i;/**found**/while(q>p)3程序设计学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
int fun(STREC *a,STREC *b,int l,int h) {int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;2. 程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/p=j;/**found**/p=i;3. 程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试上机试卷(2011年春)二级C语言(试卷代号C03)(本试卷完成时间70分钟)一、改错题(16分)【程序功能】函数factor的功能是求出正整数m(m>2)除自身以外的所有不同因子,将这些因子按从小到大的顺序存放到fac指向的数组中,将因子个数保存到n指向的变量中,函数返回因子之和。
算法提示:用m分别除以2,3,4,…,(int)sqrt(m),若相除得到两个互异因子,则小者存入fac指向数组的左端,大者存入fac指向数组的右端;若相除得到两个相同因子,则将该因子存入fac指向数组的左端。
当求出全部因子后,将所有因子按从小到大的顺序集中存放在fac指向数组的左端。
【测试数据及运行结果】测试数据:m=32屏幕输出:Sum: 31Number: =5factors: 1 2 4 8 16【含有错误的源程序】#include <stdio.h>#include <math.h>#define N 100long factor(int m,int *fac,int *n){ int right,left,k=(int)sqrt(m),i;long sum;*fac=1; *n=1; right=N-1; left=1;sum=1; i=2;while(i<k){ k=m/i;if (k*i=m){ if(i!=k){ *n+=2;sum=i+k;fac[left++]=i;fac[right--]=k;}else{ *n+=1;sum+=i;fac[left++]=i;}}i++;}for (i=right; i<=N-1; i++)fac[left++]=fac[i];return sum;}void main( ){ int fac[N]={0},i,m,num; long sum;printf("Input m(>2):");scanf("%d",&m);sum=factor(m,fac,*num);printf("\nSum: %ld\n",sum);printf("Number: %d\n",num);printf("factors:");for(i=0;i<num;i++)printf("%6d",fac[i]);}【要求】1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){float…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}解答:#include <conio.h> #include <stdio.h> double fun( int n ) { double s=0; int i; for(i=1;i<n+1;i++) s+=1.0/(i*(i+1)); return s; } main() /*主函数 */ { system("cls"); printf("%f\n",fun(10)); }说明:主函数中的clrscr()函数为TC 下使用的清屏函数,在VC 中不能使用,在本题中可以直接删除或改为system("cls")2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?解答:#include <stdio.h>int main(void){int max,num=0;int i,j;for(i=10000;i<20001;i++){for(j=2;j<i;j++)if( i%j==0 )break;if( j==i && i%10==7){num++;max=i;}}printf("num=%d,max=%d\n",num,max);return 0;}3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
C语言上机考试题(第一套)1.编写函数fun,它的功能是:计算并输出下列级数和:例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数*/{ clrscr();printf(″%f\n″, fun(10));}2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
答案:1.//#include <conio.h>#include <stdio.h>double fun( int n ){double sum=0,a=1;for(;n>0;n--,a++)sum=sum+1/(a*(a+1));return sum;}main(){// clrscr();printf("%f\n", fun(10));}2.#include <stdio.h> main(){int k,m,s=0,i,b=0;for(k=10000;k<=20000;k++){if(k%10==7){for(i=2,b=0;i<k;i++)if(k%i==0)b++;if(b==0)m=k,s++;}}printf("这样的素数有%d个。
\n其中最大的一个是%d\n",s,m);}3.#include <stdio.h>main(){int a;printf("请输入一个需要判断的年份:\n");scanf("%d",&a);if(a%4==0&&a%100!=0)printf("是闰年\n");elseif(a%400==0)printf("是闰年\n");elseprintf("不是闰年\n");}C语言上机考试题(第二套)1.编写函数fun,它的功能是:计算并输出下列级数和:例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数*/{ clrscr();printf(″%f\n″, fun(10));}2.回文数是指正读和反读都一样的自然数。
例如,8, 121, 5445这三个数都是回文数。
求:(1) [1,1000]之内既是回文数,又是素数的最大整数。
(2) [1,1000]以内既是回文数,又是素数的整数有多少个。
3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。
比如输入:”How are you”,有3个单词和2个空格。
答案:1.//#include <conio.h>#include <stdio.h>double fun( int n ){double sum=0,a=1;for(;n>0;n--,a++)sum=sum+1.0/(a*(a+1));return sum;}main(){// clrscr();printf("%f\n", fun(10));}2.#include <stdio.h>fun(int n){int i,j=0;for(i=2;i<n;i++)if(n%i==0)j++;return j;}main(){int a,b=0,d,e,k;for(k=1;k<10;k++)if(fun(k)==0)a=k,b++;for(k=10;k<100;k++)if(fun(k)==0){e=k%10,d=k/10;if(e==d)a=k,b++;}for(k=100;k<=1000;k++)if(fun(k)==0){e=k%10,d=k/100;if(e==d)a=k,b++;}printf("[1,1000]之内既是回文数,又是素数的最大整数:%d\n",a);printf("[1,1000]以内既是回文数,又是素数的整数有%d个\n",b);}3.#include <stdio.h>#include <string.h>main(){char str[81];int i,j=0,w=1,s=0;printf("请输入一串字符:\n");gets(str);for(i=0;i<strlen(str);i++){if(str[i]==' ')s++;if(str[i]==' '&&str[i+1]!=' ')w++;}if(str[0]==' ')//首字符不是字母,而是空格w--;if(str[strlen(str)-1]==' ')//最后一个不是字母,而是空格w--;printf("单词个数为:%d\n空格个数为:%d\n",w,s);}C语言上机考试题(第三套)1.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。
其中Fibonacci 数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如:当t =1000时,函数值为:1597。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <math.h>#include <stdio.h>int fun( int t){…………}main() /*主函数*/{ int n;clrscr();n=1000;printf(″n = %d, f = %d\n″,n, fun(n)); }2.先从键盘上输入一个3行3列矩阵元素的值,然后输出主对角线元素平方之和.3. 编程:删除字符串中的数字字符。
答案:1.//#include "conio.h"#include "math.h"#include "stdio.h"int fun(int t) {int a=0,b=1,c,k;for(k=1;;k++){c=b;b=a+b;a=c;if(a>t)break;}return a;}main(){int n;//clrscr();n=1000;printf("n = %d, f = %d\n",n, fun(n)); }2.#include "stdio.h"main(){int a[3][3],i,j,s=0;printf("请依次输入一个3*3矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%d",&a[i][j]);if(i==j||i+j==2)s=s+a[i][j]*a[i][j];}printf("对角线平方和为:%d\n",s);}3.#include<stdio.h>#include<string.h>#define N 81fun(char str[]){int i=0,j;while(i<N){if(str[i]<=57&&str[i]>=48)for(j=i;j<N;j++)str[j]=str[j+1];elsei++;}puts(str);}main(){char str[N];printf("请随意输入字符:");gets(str);fun(str);}C语言上机考试题(第四套)1.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。
例如若n为1000时,函数值应为:s = 153.909064。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <math.h>#include <stdio.h>double fun( int n){…………….}main() /*主函数*/{ clrscr();printf(″s=%f\n″, fun (1000) );}2.编程求出两个非零正整数的最大公约数.3.请编写程序:根据以下公式求π(要求满足精度0.0005)的近似值:π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))答案:1.//#include "conio.h"#include "math.h"#include "stdio.h"double fun( int n){double s=0;int i;for(i=1;i<n;i++)if(i%21==0)s+=i;return sqrt(s);}main(){// clrscr();printf("s=%f\n", fun (1000) );}2.#include "stdio.h"main(){int a,b,k;for(;;){printf("请输入两数:\n");scanf("%d%d",&a,&b);if(a>0&&b>0)for(k=a;k>=1;k--)if(a%k==0&&b%k==0)break;if(a%k==0&&b%k==0)break;}printf("这两个数的最大公约数是:%d\n",k);}3.#include<stdio.h>main(){double a=1,b=1,i,j,s=0;for(i=1,j=3;;i++,j=j+2){a=a*i;b=b*j;s=s+a/b;if(a/b<0.00005)break;}printf("%f\n",2*(s+1));}C语言上机考试题(第五套)1.现矩阵(3行3列)的转置(即行列互换)。