计算机二级C语言上机题库及答案(100套).doc_第1页
计算机二级C语言上机题库及答案(100套).doc_第2页
计算机二级C语言上机题库及答案(100套).doc_第3页
计算机二级C语言上机题库及答案(100套).doc_第4页
计算机二级C语言上机题库及答案(100套).doc_第5页
已阅读5页,还剩479页未读 继续免费阅读

下载本文档

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

文档简介

计算机二级 c 语言上机题库及答案内部资料,切勿外传!填空题.第 1 套请补充 FUN 函数,FUN 函数的功能是求 10 的阶乘。 注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。 试题程序:#include long fun(intn)if (1)return (n*fun(2); return3;main()printf(10!=%ldn, fun(10);第 1 处填空:n1 或 1n第 2 处填空:n-1第 3 处填空:1 或 11 或 1L改错题下列给定程序的功能是:读入一个整数 K(2=K=10000),打印它的所有因子(即所有为素数的因子)。例如,若输入整数 2310,则应输出:2、3、5、7、11。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改程序 的结构!试题程序:#include #include /*found*/ IsPrime(intn);inti, m; m = 1;/*found*/ for (i=2; in; i+)if !(n%i)m = 0;break;return(m);main()intj, k;printf(nplease enter an integer number between 2 and 10000:);scanf(%d, &k);printf(nnThe prime factor(s) of %d is(are):, k); for (j=2; jk; 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 所指的数组中。例如,当 score 数组中的数据为 10、20、30、40、50、60、 70、80、90 时,函数返回的认输应该是 4,below 中的数据应我 10、20、30、40。 注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(int score,int m, int below)main()int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;FILE *out; n=fun(score,9,below);printf(nBelow the average score are :);out=fopen(out.dat, w); for(i=0;in;i+)printf(%d ,belowi);fprintf(out, %dn, belowi);fclose(out);答案是:int fun(int score, intm, intbelow)int I, k=0,aver=0; for(i=0;im;i+) aver+=scorei;aver/=m;for(i=0;im;i+) if(scoreiaver)belowk=scorei; k+;return k;填空题第 2 套请在函数 FUN 的横线上填写若干表达式,使从键盘上输入一个整数 N,输出斐波纳契数列。斐波纳契数列是一种整数数列, 其中每数等于前面两数之和,如:0 1 1 2 3 5 8 13.请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数 的横线上填入所编写的若干表达式或语句。试题程序:#include int fun(intn);main()inti, n = 0; scanf(%d, &n); for (i=0; in; i+)printf(%d, fun(i);int fun(intn)if (1) return 0;else if (2) return 1;elsereturn3;第 1 处填空:n=0 或 0=n 或!n第 2 处填空:n=1 或 1=n第 3 处填空:fun(n-1)+fun(n-2)或 fun(n-2)+fun(n-1)改错题下列给定程序中,函数 FUN 的功能是:逐个比较 a、b 两 个字符串对应位置中的字符,把 ASCII 值大或相等的字符依次存放到 c 数组中,形成一个新的字符串。例如,若 a 中的字符串为aBCDeFgH,b 中的字符串为:ABcd,则 c 中的字符串应为: aBcdeFgH。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改 程序的结构!试题程序:#include #include void fun(char*p, char*q, char*c)/*found*/intk = 1;/*found*/ while (*p != *q)if (*p *q) ck = *q;elseck = *p; if (*p)p+;if (*q)q+; k+;main()chara10 = aBCDeFgH, b10 = ABcd, c80 =0;fun(a, b, c); printf(The string a:); puts(a);printf(The string b:); puts(b);printf(The result:); put s(c);第 1 处:int k=1 应改为 int k=0;第 2 处:while(*p!=*q)应改为 while(*p|*q)编程题请编写函数 fun,它的功能是:求出 1 到 1000 之内能被 7或 11 整除、但不能同时被 7 或 11 整除的所有整数并将它们放 在 a 所指的数组中,通过 n 返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#include #include void fun(int *a,int *n)main()int aa1000,n,k; FILE *out; fun(aa,&n);out=fopen(out.dat, w);for(k=0;kn;k+) if(k+1)%10=0)printf(%5dn,aak);fprintf(out, %dn, aak);elseprintf(%5d,aak);fprintf(out, %d, aak);fclose(out);答案是:void fun(int *a,int *n)int i,j=0; for(i=2;i1000;i+)if( (i%7=0|i%11=0)&i%77!=0)a j+=i;*n=j;第 3 套 填空题请补充函数 FUN(CHAR *S),该函数的功能是把字符串中的 内容逆置.例如:字符串中原有的字符串为 abcde,则调用该函数后,串中的内容为 edcba.请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。试题程序:#include #include #include #defineN 81 void fun(char*s)inti, n = strlen(s)-1; char t;for (i=0; in; i+,1)t = si; 2; 3;main()charaN; printf(Enter a string:); gets(a);printf(The original string is:);puts(a);fun(a);printf(n);printf(The string after modified:); puts(a);第 1 处填空:n-或-n 或 n-=1 或 n=n-1第 2 处填空:si=sn或*(s+i)=*(s+n) 第 3 处填空:sn=t 或*(s+n)=t改错题下列给定的程序中,函数 fun 的功能是:依次取出字符串中 所以数字字符,形成新的字符串,并取代原字符串。请改正函数 fun 中的错误,使程序能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改 程序的结构!试题程序:#include #include void fun(char*s)inti, j;/*found*/for (i=0, j=0; si!=0; i+)if (sj=0 & si=9) sj = si;/*found*/sj = 0;main()charitem80; printf(nEnter a string :); gets(item);printf(nnThe string is : %sn, item);fun(item);printf(nnThe string of changing is : %sn, item);第 1 处:s j=si;应改为 s j+=si第 2 处:s j=”/0”;应改为 s j=0;编程题请编写函数 void fun(int x,int pp,int *n),它的功能是:求出 能整除 x 且不是偶数的各整数,并按从小到大的顺序放在 pp 所 指的数组中,这些除数的个数通过形参 n 返回.例如 , 若 x 中的值为 30, 则有 4 个数 符合要求, 它们是 1,3,5,15.注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#include #include void fun(int x, int pp, int *n)main()int x, aa1000, n, i; FILE *out;printf(nPlease enter an integer number:n); scanf(%d,&x);fun(x,aa,&n); for(i=0;in;i+)printf(%d , aai); printf(n);fun(730, aa, &n);out = fopen(out.dat, w); for (i = 0; i n; i+)fprintf(out, %dn, aai); fclose(out);答案是: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;ij;i+) if(x%ti=0)ppk=ti; k+;*n=k;填空题第 4 套请补充函数 FUN,它的功能是:计算并输出 N(包括 N)以内能被 3 或 7 整除的所有自然数的倒数之和。例 如 , 在主 函数 中 从键 盘 给 N 输入 30 后 , 输出 为 : S=1.226323。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun函数的横线上填入所编写的若干表达式或语句。 试题程序:#include double fun(intn)inti;doublesum = 0.0; for (i=1;1; i+)if (i%3=02i%7=0) sum +=3/i;return sum;main()intn; doubles;printf(nInput n: ); scanf(%d, &n);s = fun(n); printf(nns=%fn, s);第 1 处填空:i=i第 2 处填空:|第 3 处填空:1.0 或(double)1改错题下列给定程序中,fun 函数的功能是:分别统计字符串中大写字 母 和 小 写 字 母 的 个 数 。 例 如 , 给 字 符 串s输 入 : AaaaBBb123CCccccd,则应输出结果:upper=6,lower=8请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include #include /*found*/void fun(char*s, inta, intb)while (*s)/*found*/ if (*s=A & *s=a & *s=z)b+; s+;main()chars100;intupper = 0, lower = 0; printf(nPlease a string : ); gets(s);fun(s, &upper, &lower);printf(n upper=%d lower=%dn, upper, lower);第 1 处:void fun (char *s,int a,int b)应改为 void fun(char*s,int *a,int *b)第 2 处:a+;应改为(*a)+;第 3 处:b+;应改为(*b)+;编程题请编写一个函数 void fun(char*tt,int pp),统计在 tt 字符串中“a”到“z”26 个字母各自出现的次数,并依次存放在 pp所指数组中。例如,当输入字符串 abcdefgabcdeabc 后,程序的输出结 果应该是:33322110000000000000000000注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:# include # include void fun(char *tt, int pp)main()char aa1000; int bb26, k; FILE *out;printf(nPlease enter a char string:);scanf(%s,aa); fun(aa,bb); for(k=0;k26 ; k+)printf(%d,bbk);printf(n);fun(a bosom friend afar brings a distant land near, bb);out = fopen(out.dat, w); for (k = 0; k 26; k+)fprintf(out, %dn, bbk); fclose(out);答案是:void fun(char *tt,int pp)intI; for(i=0;i26;i+) ppi=0; while(*tt)switch(*tt)case a:pp0+;break;case b:pp1+;break;case c:pp2+;break;case d:pp3+;break;case e:pp4+;break;case f:pp5+;break;case g:pp6+;break;case h:pp7+;break;case i:pp8+;break;case j:pp9+;break;case k:pp10+;break;case l:pp11+;break;case m:pp12+;break;case n:pp13+;break;case o:pp14+;break;case p:pp15+;break;case q:pp16+;break;case r:pp17+;break;case s:pp18+;break;case t:pp19+;break;case u:pp20+;break;case v:pp21+;break;case w:pp22+;break;case x:pp23+;break;case y:pp24+;break;case z:pp25+;break;tt+;填空题第 5 套给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:S= pR ,在程序中定义的变量名要与公式的变量相同)。例如,输入圆的半径值:19.527,输出为:S=598.950017。 请勿改动主函数 main 和其他函数中的任何内容,仅在 fun函数的横线上填入所编写的若干表达式或语句。试题程序:#include double fun(double r)return 3.14159*1/2.0;main()doublex; printf(Enterx:);scanf(%lf,2);printf( s = %lfn , fun(3);第 1 处填空:r*r第 2 处填空:&x第 3 处填空:x改错题假定整数数列中的数不重复,并存放在数组中。下列给顶程 序中,函数 fun 的功能是删除数列中值为 x 的元素,同时将其他元素前移。N 中存放的是数列中元素的个数。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include #defineN 20fun(int*a, intn, intx)intp = 0, i; an = x;while (x != ap)p = p+1; if (p = n)return -1;else/*found*/ for (i=p; in; i+)ai+1 = ai;return n-1;main()intwN = -3, 0, 1, 5, 7, 99, 10, 15, 30, 90, x, n, i;n = 10;printf(The original data:n); for (i=0; in; i+)printf(%5d, wi);printf(nInput x (to delete):); scanf(%d, &x); printf(Delete :%dn, x);n = fun(w, n, x);if (n = -1)printf(*Not be found!*nn);elseprintf(The data after delete :n); for (i=0; in; i+)printf(%5d, wi); printf(nn);第 1 处:ai+1=ai;应改为 ai=ai+1编程题请编写一个函数 void fun(int m,int k,int xx),该函数的 功能是:将大于整数 m 且紧靠 m 的 k 个素数存入 xx 所指的数 组中。例如,若输入:17,5,则应输出:19,23,29,31,37。 注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 试题程序:#include #include void fun(int m, int k, int xx)main()int m,n,zz1000; FILE *out;printf(nPlease enter two integers:); scanf(%d,%d,&m,&n);fun( m,n,zz);for(m=0; mn; m+) printf(%d , zzm);printf(n);fun(28, 20, zz);out = fopen(out.dat, w); for (m = 0; m 20; m+)fprintf(out, %dn, zzm); fclose(out);答案是:void fun(int m,int k,int xx)int g=0,I,j,flag=1; for(i=m+1;im*m;i+)for( j=2;j=i)if(k=0)xxg+=I; k-;else break;第 6 套填空题给定程序的功能是计算并输出下列级数的前 N 项之和 sN , 直到 sN 大于 Q 为止,Q 的值通过形参传入。例如,若 Q 的值为 50.0,则函数值为 50.416687。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。 试题程序:#include double fun(doubleq)intn; doubles; n = 2;s = 2.0;while (s1q)s = s + (double)(n+1)/n; 2;printf(n=%dn,n); 3;main()printf(%fn, fun(50);第 1 处填空:=第 2 处填空:n+或 n+=1 或 n=n+1 第 3 处填空:return s 或 return (s)改错题下列给定程序中,函数 fun 的功能是:根据整型参 m 的值, 计算如下公式的值。例如,若 m 中的值为 5,则应输出:0.536389 请改正程序中的错误,使程序能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改 程序的结构!试题程序:#include #include double fun(intm)doubley = 1.0; inti;/*found*/ for (i=2; im; i+)/*found*/y -= 1/(i*i); return(y);main()intn = 5;printf(nThe result is %1fn, fun(n);第 1 处:for (i=2;im;i+)应改为 for(i=2;i=m;j+) 第 2 处:y-=1/(i*i);应改为 y-=1.0/(i*i)编程题请编写一个函数 void fun(char a,char b,int n),其功能 是:删除一个字符串中指定下标的字符。其中,a 指向原字符串, 删除后的字符串存放在 b 所指的数组中,n 中存放指定的下标。例如,输入一个字符串 World,然后输入 3,则调用该函数后的结果为 Word。 注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序:# include # include # define LEN 20void fun(char a, char b, int n)main()char str1LEN,str2LEN; int n;FILE *out;printf(Enter the string:n); gets(str1);printf(Enter the position of the string deleted:); scanf(%d,&n);fun(str1, str2, n);printf(The new string is:%sn,str2); fun(Hello World!, str2, 9);out = fopen(out.dat, w);fprintf(out, %s, str2); fclose(out);答案是:void fun(char a, char b, int n)intI,j=0; for(i=0;iLEN;i+) if(i!=n)b j=ai; j+;b j=0;第 7 套填空题函数 fun 的功能是:统计长整数 n 的各个位上出现数字 1,2, 3 的次数,并通过外部(全局)变量 c1,c2,c3 返回主函数。例如,当=123114350 时,结果应该为:c1=3,c2=1,c3=2.注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。试题程序如下:#include intc1, c2, c3; void fun(longn)c1 = c2 = c3 = 0;while (n)switch(1)case 1:c1+; 2; case 2:c2+; 3; case 3:c3+;n /= 10;main()longn = 123114350L;fun(n);printf(nThe result :n);printf(n=%ldc1=%dc2=%dc3=%dn, n, c1, c2, c3);第 1 处填空:n%10第 2 处填空:break第 3 处填空:break改错题下列给定程序中函数 fun 的功能是:用选择法对数组中的 n 个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意:不要改动 main 函数,不得增行或删行,也不得更改 程序的结构!试题程序:#include #defineN 20void fun(inta, intn)inti, j, t, p;for (j=0; jn-1; j+)/*found*/ p = jfor (i=j; in; i+) if(ai ap)/*found*/ p = i;t = ap; ap = ai; ai = t;main()intaN = 9, 6, 8, 3, -1, i, m = 5;printf(); for (i=0; im; i+)printf(%d, ai); printf(n);fun(a, m); printf();for (i=0; im; i+) printf(%d, ai);printf(n);第 1 处:p = j 应改为 p=j;第 2 处:p = i 应改为 p=j;编程题请编写一个函数 int fun(int*s,int t,int*k),用来求出数组的最大 元素在数组中的下标并存放在 k 所指的存储单位中。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980。 注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:# include # include void fun(int *s, int t , int *k)main( )int a10=876,675,896,101,301,401,980,431,451,777,k ;FILE *out; fun(a,10,&k);printf(%d, %dn, k, ak);out = fopen(out.dat, w);fprintf(out, %dn%d, k, ak); fclose(out);答案是:void fun (int *s,int t,int *k)int I ,max; max=s0; for(i=0;imax)max=si;*k=I;第 8 套填空题请补充 main 函数,该函数的功能是:从键盘输入一组整数,使 用条件表达式找出最大的整数。当输入的整数为 0 时结束。例如,输入 1 2 3 5 4 0 时,最大的数为 5。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数的横线上填入所编写的若干表达式或语句。试题程序:#include #include #defineN 100 main()intnumN; inti = -1; intmax = 0;printf(nInputinteger number: n); doi+;printf(num%d=, i);scanf(%d,1);max =2numi : max; while(3); printf(max=%dn, max);第 1 处填空:&numi或 num+i第 2 处填空:maxmax? 第 3 处填空:numi!=0 或 0!=numi改错题下列给定程序中,函数 fun 的功能是:在字符串 str 中找出 ASCII 码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用 fun 函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为 eABCDFGH请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include /*found*/ void fun(char*p);charmax, *q; inti = 0; max = pi;while (pi != 0)if (max p)*q = *(q-1);q-;p0 = max;main()charstr80; printf(Enter a string: ); gets(str);printf(nThe original string:);puts(str); fun(str);printf(nThe string after moving:); puts(str);printf(nn);第 1 处:void fun(char *p);应改为 void fun(char *p)第 2 处:p=q+I;应改为 q=p+i;编程题编写函数 fun,函数功能是:根据以下公式计算 s,计算结果作 为函数值返回;n 通过型参传入。S=1+11+ 2+11+ 2 + 3+ . +11+ 2 + 3 + .n例如:若 n 的值为 11 时,函数的值为 1.833333。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题程序:#include#include#includefloat fun (int n)main()int n; float s; FILE *out;printf(nPlease enter N:); scanf(%d,&n);s=fun(n);printf(The result is: %fn,s); s = fun(28);out = fopen(out.dat, w);fprintf(out, %f, s); fclose(out);答案是:float fun(int n)int i;float s=1.0,t=1.0;for(i=2;i=n;i+)t=t+i; s=s+1/t;return s;第 9 套填空题 给定程序的功能是分别统计字符串中大写字母和小写字母的个 数。例如,给字符串 SS 输入:AaaaBBb123CCccccd,则输出结果应 为:upper=5, lower=9。请勿改动主函数 main 和其他函数中的任何内容,仅在 fun 函数 的横线上填入所编写的若干表达式或语句。 试题程序:#include void fun(char*s, int*a, int*b)while (*s)if (*s=A & *s=a & *s=z) 2; s+;main()chars100;intupper = 0, lower = 0; printf(nPlease a string :); gets(s);fun(s, &upper, &lower);printf(n upper = %dlower = %dn,3);第 1 处填空:(*a)+或+(*a)或*a=*a+1 或*a+=1第 2 处填空:(*b)+或+(*b)或*b=*b+1 或*b+=1 第 3 处填空:upper,lower改错题下列给定程序中,函数 fun 的功能是:从 n 个学生的成绩中统 计出低于平均分的学生人数,此人数由函数值返回,平均分存放 在行参 aver 所指的存储单元中。例如,若输入 8 名学生的成绩:80.5607290.59851.58864则低于平均分的学生人数为 4(平均分为:75.5625). 请改正程序中的错误,使程序能统计出

温馨提示

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

评论

0/150

提交评论