2012年3月计算机二级C最新上机试题库.docx_第1页
2012年3月计算机二级C最新上机试题库.docx_第2页
2012年3月计算机二级C最新上机试题库.docx_第3页
2012年3月计算机二级C最新上机试题库.docx_第4页
2012年3月计算机二级C最新上机试题库.docx_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

第一套1.程序填空题给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:2,在程序中定义的变量名要与公式的变量相同)。 例如,输入圆的半径值:19.527,输出为:s=598.949991。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #include double fun( double r) return 3.14159*【1】/2.0;void main()double x;printf(Enter x: );scanf(%lf,【2】);printf(s=%lfn,fun(【3】);2.程序改错题下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+f(0)+f(1)+f(2)+f(n)的值。 例如,当n为5时,函数值应为10.407143。f(x)函数定义如下: f(x)= 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #include /*found*/f(double x) if(x=0.0|x=2.0) return 0.0; else if(x0.0) return(x-1)/(x-2); else return(x+1)/(x-2);double fun(int n) int i; double s=0.0,y; for(i=-n; i=n;i+) y=f(1.0*i); s+=y;/*found*/ return svoid main() system(CLS); printf(%fn, fun(5);3.程序设计题编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+n) 例如,若n的值为11时,函数的值为1.833333。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #include float fun(int n) void main() FILE *wf; int n; float s; system(CLS); printf(nPlease enter N: ); scanf(%d,&n); s=fun(n); printf(The result is:%fn , s);/*/ wf=fopen(out.dat,w); fprintf (wf,%f,fun(11); fclose(wf);/*/【参考答案】:1.(1)r*r (2)&x (3)x .2. (1)错误:f(double x) 正确:double f(double x) 2)错误:return s 正确:return s; 3. float fun(int n) int i,s1=0; /*定义整型变量s1,表示分母*/ float s=0.0; /*定义单精度变量s,表示每一项*/ for(i=1;i=n;i+) s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1;/*求多项式的值*/ return s; 第2套1.程序填空题请补充main函数,该函数的功能是:计算两个自然数n和m(m10000)之间所有数的和(n和m从键盘输入)。 例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #include void main() int n,m; long sum; 【1】; system(CLS); printf(nInput n,mn); scanf(%d,%d,&n,&m); while(n=m) 【2】;n+; printf(sum=%【3】n,sum);2.程序改错题下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值: t=1+1/2+1/3+1/4+1/m 例如,若输入5,则应输出2.283333。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include double fun(int m) double t=1.0; int I; for(I=2;I=m;I+)/*found*/ t+=1.0/k;/*found*/ return I;void main()int m; system(CLS); printf(nPlease enter 1integer number: ); scanf(%d,&m); printf(nThe result is %1fn, fun(m);3.程序设计题请编写一个函数 void fun(char *tt,int pp),统计在tt字符串中a到z26个字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include #include #include void fun(char *tt,int pp )void main( ) FILE *wf; char aa1000; int bb26, k; system(CLS); printf(nPlease enter a char string : ) ; scanf(%s,aa); fun(aa,bb); for (k=0 ;k26 ; k+) printf(%d ,bbk) ; printf(n );/*/ wf=fopen(out.dat,w); fun (abcdefgabcdeabc,bb) ; for (k=0 ;k26 ; k+) fprintf(wf,%d ,bbk) ; fclose(wf);/*/【参考答案】:1. (1) sum=0 (2) sum+=n (3) ld2. (1)错误:t+=1.0/k; 正确:t+=1.0/I; (2)错误:return I; 正确:return t;3. void fun(char*tt,int pp) int i; for(i=0;i=a&*tt=z) pp*tt-a+; /*将tt字符串中a到z26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去a后所得结果正好是它对应的下标*/ 第3套1. 程序填空题给定程序的功能是:判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同则插在串的最后。 注意:部分源程序给出如下。 请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #include #include void fun (char *str,char ch) while (*str &*str !=ch) str+; if(*str【1】ch) str0=ch; 【2】=0; void main()char s81,c; system(CLS); printf(nPlease enter a string : );gets(s); printf(n Please enter the character to search : ); c=getchar(); fun(【3】); printf(nThe result is %sn,s);2.程序改错题下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include#include/*found*/void fun(char *s,int a,int b)while(*s)/*found*/if(*s=A & *s=a & *s=z)b+;s+;main()char s100;int upper=0,lower=0;printf(nplease a string :);gets(s);fun(s,&upper,&lower);printf(n upper=%d lower=%dn,upper,lower);3.程序设计题请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串123412132,输入字符1,则输出3。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define M 81int fun(char *ss, char c) void main() FILE *wf; char aM, ch; system(CLS); printf(nPlease enter a string: ); gets(a); printf(nPlease enter a char: ); ch=getchar(); printf(nThe number of the char is: %dn, fun(a,ch);/*/ wf=fopen(out.dat,w); fprintf(wf,%d,fun(123412132,1); fclose(wf);/*/【参考答案】:1. (1) != (2) str1或*(str+1) (3) s,c 2. (1)错误:void fun(char *s, int a, int b) 正确:void fun(char *s, int *a, int *b) (2)错误:a+;正确:(*a)+; (3)错误:b+;正确:(*b)+; 3. int fun(char *ss, char c) int i=0; for(;*ss!=0;ss+) if(*ss=c) i+; /*求出ss所指字符串中指定字符的个数*/ return i; 第4套1. 程序填空题请补充函数fun,该函数的功能是:把ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输入,其长度作为参数传入函数fun。 例如,输入abcdef,输出ace。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #define N 80【1】 int i, j; 【2】; for (i=0;in;i+) if(si%2!=0)sj+=si; 【3】;void main() int i=0, strlen=0; char strN; system(CLS); printf(nInput a string:n); gets(str); while(stri!=0) strlen+;i+; fun(str, strlen); printf(n* display string *n); puts (str);2.程序改错题下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include long fun(long num)/*found*/ long k; do k *=num%10;/*found*/num =10; while(num); return(k);main() int n; printf(Please enter a number: ); scanf(%ld,&n); printf(n%ldn,fun(n);3.程序设计题请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include#include#include#define M 100void fun(int m, int *a, int *n) void main() FILE *wf; int aaM,n,k; system(CLS); fun(50,aa,&n); for(k=0;kn;k+) if(k+1)%20=0) /*每行输出20个数*/ printf(%4d,aak); printf(n); else printf(%4d,aak); printf(n);/*/ wf=fopen(out.dat,w); for(k=0;kn;k+) fprintf(wf,%4d,aak); fclose(wf);/*/【参考答案】:1.(1) void fun(char s,int n) (2) j=0 (3) sj=0 2. (1)错误:long k;正确:long k=1;(2)错误:num=10; 正确:num/ =10;3. void fun(int m, int *a, int *n) int i,j=0; for(i=1;i=m;i+) if(i%7=0|i%11=0) /*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/ aj+=i; *n=j; /*返回这些数的个数*/ 第5套1. 程序填空题请补充函数fun,该函数的功能是:判断某一个年份是否为闰年。 例如,1900年不是闰年,2004是闰年。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #include int fun(int n) int flag=0; if(n%4=0) if (【1】)flag=1; if (【2】)flag=1; return【3】;void main() int year; system(CLS); printf(Input the year:); scanf(%d,&year); if (fun(year)printf(%d is a leap year. n,year); elseprintf(%d is not a leap year.n,year);2. 程序改错题下列给定程序中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int n) double result =1.0; /*found*/ if n=0 return 1.0; while(n1&n170)/*found*/ result=n-; return result;void main() int n; printf(Input N:); scanf(%d,&n); printf(nn%d!=%lfn,n,fun(n);3. 程序设计题请编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include #include void fun(int a ,int b,long *c) void main() int a,b; long c; FILE *out; printf(Input a ,b: ); scanf(%d%d,&a,&b); fun(a,b,&c); printf(The result is :%ldn,c); /*/ out=fopen(out.dat,w); fun(a+11,b+22,&c); fprintf(out,%ldn,c); fclose(out); /*/【参考答案】:1. 程序填空题(1) n%100!=0或n%100 (2) n%400=0 (3) flag 2. 程序改错题 (1)错误:if n=0 正确:if(n=0) (2)错误:result =n-;正确:result *=n-; 3. 程序设计题void fun(int a,int b,long *c) *c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10; 第6套1. 程序填空题:请补充函数fun,函数fun的功能是求n的阶乘。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include long fun(int n) if (【1】)return(n*fun(【2】); return【3】;void main() printf(10!=%ldn,fun(10);2. 程序改错题下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include int fun(int k) int m=0,mc=0, j; while(k=2)&(mc10) /*found*/ if(k%13=0)|(k%17=0) m=m+k;mc+; k-;/*found*/ return m;void main()system(CLS); printf(%dn ,fun(500);3. 程序设计题请编写函数fun,它的功能是计算: s=(ln(1)+ln(2)+ln(3)+ln(m)0.5 在C语言中可调用log(n)函数求ln(n)。 例如,若m的值为20,则fun函数值为6.506583。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include #include #include #include double fun(int m) void main() FILE *wf; system(CLS); printf(%fn ,fun(20);/*/ wf=fopen(out.dat,w); fprintf(wf,%f,fun(20); fclose(wf);/*/【参考答案】:1.程序填空题:(1)n1或1n (2)n-1 (3)1 2.程序改错题:(1)错误:if(k%13=0)|(k%17=0) 正确:if(k%13=0)|(k%17=0) (2)错误:缺少大括号正确:加 3.程序设计题:double fun(int m) int i; double s=0.0; for(i=1;i=m;i+) s=s+log(i); return sqrt(s); /*计算s=ln(1)+ln(2)+ln(3)+ln(m)*/ /*对s求平方根并返回*/ 第7套1.程序填空题请补充函数fun,该函数的功能是:整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。 例如当x=20时,依次输出:20 10 4 2。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序:#include #include #include void fun(int k,int bb) int I; int j=0; for(【1】;I=0;I-)printf(%d ,bbI);void main() int k=1; int bb100; system(CLS); printf(nPlease input X=); scanf(%d,&k); fun(k,bb);2程序改错题下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值: 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include double fun(int m)double y=1.0; int I;/*found*/ for(I=2;Im;I+) /*found*/ y-=1/(I*I); return(y);void main()int n=5; system(CLS); printf(nThe result is %1fn, fun(n);3程序设计题编写函数fun,它的功能是:求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。 例如,n为1000时,函数值应为s=96.979379。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include #include #include #includedouble fun(int n) void main() FILE *wf; system(CLS); printf(s=%fn, fun(1000);/*/ wf=fopen(out.dat,w); fprintf(wf,%f,fun(1000); fclose(wf);/*/【参考答案】:1.程序填空题:(1)i=1 (2)k%i=0&i%2=0 (3)-j或j-1 2.22.程序改错题:(1)错误:for(i=2;im;i+) 正确:for(i=2;i=m;i+) (2)错误:y-=1/(i*i); 正确:y-=1.0/(i*i);3.程序设计题:double fun(int n) double s=0.0; int i; for(i=0;in;i+) /*从0 n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/ if(i%5=0&i%11=0) s=s+i; s=sqrt(s); /*对s求平方根*/ return s; 第8套1.程序填空题:请补充函数fun,它的功能是:计算并输出n(包括n)以内所有能被3或7整除的自然数的倒数之和。 例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include double fun(int n) int I; double sum=0.0; for(I=1;【1】;I+)if(I%3=0【2】I%7=0)sum+=【3】/I; return sum;void main() int n; double s; printf(nInput n:); scanf(%d,&n); s=fun(n); printf(nns=%fn,s);2.程序改错题:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int x) /*found*/ int sum=0.0; int c=0, I=0; while(xI!=0) if(xI0) sum+=xI; c+; I+; /*found*/ sum=sumc; return sum;void main() int x1000; int i=0; system(CLS); printf(nPlease enter some data(end with 0) :); do scanf(%d,&xi); while(xi+!=0); printf(%fn,fun(x);3 程序设计题:请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,输入17,则应输出4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include#include#includevoid fun(int m, int *k, int xx) void main() FILE *wf; int m, n, zz100; system(CLS); printf(nPlease enter an integer number between 10 and 100: ); scanf(%d,&n); fun(n,&m,zz); printf(nnThere are %d non-prime numbers less than %d: ,m,n); for(n=0;nm;n+) printf(n %4d,zzn);/*/ wf=fopen(out.dat,w); fun(17,&m,zz); for(n=0;nm;n+) fprintf(wf,%4d,zzn); fclose(wf);/*/【参考答案】:1.程序填空题:(1)i=n (2)| (3)1.0或(double)1 2.程序改错题:(1)错误:int sum=0.0; 正确:double sum=0.0; (2)错误:sum=c; 正确: sum/=c;3.程序设计题:void fun(int m, int *k, int xx) int i,j,n=0; for(i=4;im;i+) /*找出大于1小于整数m的非素数*/ for(j=2;ji;j+) if(i%j=0) break; if(ji)xxn+=i; *k=n; /*返回非素数的个数*/ 第9套1.程序填空题:请补充main函数,该函数的功能是:计算每个学生成绩的平均分,并把结果保存在数组bb中。 例如,当scoreNM=83.5,82,86,65,67,80,91.5,84,99,95,90.5,95,86,95,97时,三个学生的平均分为76.7,89.9,92.7。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #define N 3#define M 5void main() int I,j; static float scoreNM=83.5,82,86,65,67,80,91.5,84,99,95,90.5,95,86,95,97; float bbN; system(CLS); for(I=0;IN;I+)【1】; for(I=0;IN;I+) for(j=0;jM;j+)【2】;bbI/=M; for(I=0;IN;I+)printf(nstudent%dtaverage=%5.1f,I+1,bbI);2.程序改错题:下列给定程序中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main函数中,若fun()返回1则输出YES,若fun()返回0则输出NO!。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include int fun(int m) int k=2; while (kn。P=m!/(n!(m-n)!),例如,m=12,n=8时,运行结果为495.000000。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:#include #include #include float fun (int m, int n) void main () FILE *wf; system(CLS); printf (p=%fn,fun (12,8) ) ;/*/ wf=fopen(out.dat,w); fprintf (wf,%f,fun(12,8); fclose(wf);/*/【参考答案】:1.程序填空题:(1) bbi=0 (2) bbi+=scoreij2.程序改

温馨提示

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

评论

0/150

提交评论