二级C语言上机试题100套.doc_第1页
二级C语言上机试题100套.doc_第2页
二级C语言上机试题100套.doc_第3页
二级C语言上机试题100套.doc_第4页
二级C语言上机试题100套.doc_第5页
已阅读5页,还剩507页未读 继续免费阅读

下载本文档

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

文档简介

第1套1.填空题请补充main函数,该函数的功能是:把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。例如:当strN=“123 abcdef ABCDEF!”,结果输出:“123 ABCDEF ABCDEF!”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#include#define N 80void main() int j; char strN= 123abcdef ABCDEF!; char *pf=str; clrscr(); printf(*original string *n); puts(str); 【1】; while(*(pf+j) if(*(pf+j)=a&*(pf+j)=z)*(pf+j)=【2】;j+;else【3】; printf(*new string*n); puts(str); system(pause);1.填空题【1】j=0【2】*(pf+j)-32【3】j+2. 改错题下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include void fun(char *p,char *q,char *c) int k=0; while(*p|*q)/*found*/ if (*p=*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+ ;/*found*/ k+ main() char a10=fshADfg,b10=sdAEdi,c80=0; fun(a,b,c); printf(The string a:); puts(a); printf(The string b:); puts(b); printf(The result :); puts(c);2. 改错题(1)错误: if (*p=*q)(2)错误:k+正确:k+;3. 编程题请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=16,b=35,调用该函数后,c=5361。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includevoid fun(int a ,int b,long *c)main() int a,b; long c; clrscr(); printf(Input a,b;); scanf(%d%d,&a, &b); fun(a,b,&c); printf(The result is:%ldn,c);3. 编程题void fun(int a ,int b,long *c) *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; 第2套1.填空题请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。方程的系数a、b、c从键盘输入,如果判别式(disc=b2-4ac)小于,则要求重新输入a、b、c的值。例如,当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00, x2=-1.00。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include math.h#include main() float a,b,c, disc,x1,x2; clrscr(); do printf(Input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);disc=b*b-4*a*c;if(disc0)printf(disc=%fn Input again!n,disc); while(【1】); printf(*the result*n); x1=【2】; x2=【3】; printf(nx1=%6.2fnx2=%6.2fn,x1,x2);1.填空题【1】disc0【2】(-b+sqrt(disc)/(2*a)【3】(-b-sqrt(disc)/(2*a)2. 改错题下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。y=1-1/(22)+1/(33)-1/(44)+(-1)(m+1)/(mm)例如:m中的值为5,则应输出0.838611。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include double fun(int m) double y=1.0;/*found*/Double j=1.0; int i; for(i=2; i=m; i+) j=-1*j;/*found*/ y+=j/(i * i); return(y);main() int n=5; clrscr(); printf(nThe result is %lfn ,fun(n);2. 改错题(1)错误:int j=1; 正确:double j=1.0;(2)错误:y+=1/(i * i); 正确:y+=j/(i * i);3. 编程题请编一个函数void fun(int ttMN, int ppN), tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #define M 3#define N 4void fun(int ttMN,int ppN)main() int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56; int pN,i,j,k; clrscr(); printf(The riginal data is:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(nThe result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n);3. 编程题void fun(int ttMN,int ppN) int i,j,max; for(j=0;jN;j+) max=tt0j; /*假设各列中的第一个元素最大*/ for(i=0;imax) /*如果各列中的其他元 a=ttij;ttij=max;max=a;第3套1.填空题请补充函数fun(),该函数的功能是:把一个整数转换成字符串,并倒序保存在字符数组str中。例如:当n=13572468时,str=“86427531”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:#include#include#define N 80char strN;void fun(long int n) int i=0; while(【1】n0) stri=【2】n%10+0;n/=10;i+; 【3】stri=0;main() long int n=13572468; clrscr(); printf(* the origial data *n); printf(n=%ld,n); fun(n); printf(n%s,str);1.填空题【1】n0【2】n%10+0【3】stri= 02. 改错题下列给定程序中,函数fun的功能是按以下递归公式求函数值。例如:当给n输入5时,函数值为240;当给n输入3时,函数值为60。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include /*found*/fun(int n) int c;/*found*/ if(n=1) c=15; else c=fun(n-1)*2; return(c);main() int n; printf(Enter n:); scanf(%d,&n); printf(The result :%dnn,fun(n);2. 改错题(1)错误:fun(int n); 正确:fun(int n)(2)错误:if(n=1) 正确:if(n=1)3. 编程题请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列。例如:原来的字符串为BdsihAd,则排序后输出为BAdhisd。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(char *s, int num)char t; int I,j; For(i=1;inum-2;i+) For(j=i+1;jsj)t=si;si=sj;sj=t; main() char s10; clrscr(); printf(输入7个字符的字符串:); gets(s); fun(s,7); printf(n%s,s);3. 编程题int fun(char *s, int num)char t; int i, j; for(i=1;inum-2;i+) /*下标值从1开始,用循环依次取得字符串中的字符*/ for(j=i+1;jsj) /*如果后面字符的ASCII码值小于该字符的ASCII码值*/ t=si; /*则交换这两个字符*/ si=sj; sj=t; 第4套1填空题数组xxN保存着一组位数的无符号正整数,其元素的个数通过变量num传入函数fun()。请补充函数fun(),该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。例如:当xx8=135,78,72,32,222,424,333,141,541时,bb6=787,232,222,424,333,141。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#define N 1000int fun(int xx,int bb,int num) int i,n=0; int g,b; for(i=0;inum;i+) g=【1】xxi%10;b=xxi/100;if(g=b)【2】bbn+=xxi; return【3】n;main() int xx8=135,787,232,222,424,333,141,541; int yyN; int num=0,n=0,i=0; num=8; clrscr(); printf(*original data *n); for(i=0;inum;i+)printf(%u ,xxi); printf(nnn); n=fun(xx,yy,num); printf(nyy= ); for(i=0;in;i+)printf(%u ,yyi); 1.填空题【1】xxi%10【2】bbn+=xxi【3】n2. 改错题下列给定程序中函数fun()的功能是计算1/n!的值。例如:给n输入5,则输出0.008333。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include /*found*/int fun(int n) double result =1.0; if(n=0) return 1.0; while(n1 & n 170)/*found*/ result *=n+ ; result=1/result; return result;main() int n; printf(Input N:); scanf(%d,&n); printf(n1/%d!=%lfn,n,fun(n);2. 改错题(1)错误:int fun(int n) 正确:double fun(int n)(2)错误:result *=n+ ; 正确:result *=n- ;3. 编程题编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。例如:n为1000时,函数值应为s=96.979379。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include double fun(int n) main()clrscr();printf(s=%fn, fun(1000);3. 编程题double fun(int n)double s=0.0;int i;for(i=0; in;i+) /*从0n中找到既能被5整除同时又第5套1.填空题请补充main函数,该函数的功能是求方程ax2+bx+c=0的根(方程的系数a,b,c从键盘输入)。例如,当a=1,b=2,c=1时,方程的两个根分别是:x1=-1.00,x2=-1.00。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。试题程序:#include#include#includemain() float a,b,c,disc,x1,x2,p,q; scanf(%f,%f,%f,&a,&b,&c); disc=b*b-4*a*c; clrscr(); printf(*the result *n); if(disc=0) x1=【1】;x2=(-b-sqrt(disc)/(2*a);printf(x1=%6.2f,x2=%6.2fn,x1,x2); else p=【2】;q=【3】;printf(x1=%6.2f+%6.2f in,p,q);printf(x2=%6.2f-%6.2f in,p,q); 1.填空题【1】(-b+sqrt(disc)/(2*a)【2】-b/(2*a)【3】sqrt(fabs(disc)/(2*a)2. 改错题下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。例如:输入352,则输出应该是38;若输入328,则输出应该是77。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include long fun(long num) /*found*/ long k=0; do k+=(num%10)*(num%10); num/=10;/*found*/ while(num) ; return (k);main() long n; clrscr(); printf(Please enter a number:); scanf(%ld,&n); printf(n%ldn,fun(n);2. 改错题(1)错误:long k=1; 正确:long k=0;(2)错误:while(num) 正确:while(num);3. 编程题请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为F(0)0,F(1)1F(n)=F(n-1)+F(n-2)例如:t=1000时 ,函数值为987。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(int t)int a=1,b=1,c=0,i; Doc=a+b;a=b;b=c;While(ct) ; c=a;return c;main() int n; clrscr(); n=1000; printf(n=%d, f=%dn,n, fun(n);3. 编程题int fun(int t) int a=1,b=1,c=0,i; /*a代表第n-2项,b代表第n-1项,c代表第n项*/ /*如果求得的数c比指定比较的数小,则计算下一个Fibonacci数,对a,b重新置数*/do c=a+b; a=b; b=c; while (ct); /*如果求得的数c比指定比较的数大时,退出循环*/ c=a; /*此时数c的前一个Fibonacci数为小于指定比较的数的最大的数*/ return c;第六套1填空题请补充函数fun(),该函数的功能是:计算维矩阵元素的方差,结果由函数返回。维数在主函数中输入。例如:的计算结果是14.414求方差的公式为:其中注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#include#include#include#define N 20double fun(int aN【1】,int n) int i,j; int k; double s=0.0; double f=0.0; double aver=0.0; double sd=0.0; for(i=0;in;i+)for(j=0;jn;j+)s+=aij; aver=【2】s/(n*n); for(i=0;in;i+)for(j=0;jn;j+)f+=(aij-aver)*(aij-aver); f/=(n*n); sd=【3】sqrt(f); return sd;main() int aNN; int n; int i,j; double s; clrscr(); printf(* Input the dimension of array N*n); scanf(%d,&n); printf(* The array *n); for(i=0;in;i+) for(j=0;jn;j+)aij=rand()%50;while(aij=0)aij=rand()%60;printf(%4d,aij);printf(nn); s=fun(a,n); printf(* THE RESULT *n); printf( %4.3fn,s);1.填空题【1】int aN【2】s/(n*n)【3】sqrt(f)2. 改错题下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0位中)。例如:字符串中的数据为ADFESHDI,则输出应当是AFESDI。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删,行,也不得更改程序的结构。试题程序:#include #include #include #define N 80/*found*/void fun(char *s, char t ) int i, j=0; for(i=0; istrlen(s);i+)/*found*/ if(i%2=0|si%2!=0) tj+=si ; tj=0;main() char sN, tN; clrscr(); printf(nPlease enter string s :); gets(s); fun(s,t); printf(nThe result is :%sn,t);2. 改错题(1)错误: void fun(char s, char t ) 正确:void fun(char *s, char t )(2)错误: if(i%2=0|si%2!=0) 正确:if(i%2=0|si%2!=0)3. 编程题请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(所有能被原数除尽的数)(不包括1与自身)的平方和(规定n的值不大于100)。例如:主函数从键盘给输入n的值为56,则输出为sum=1113。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include long fun(int n)int I;Long s=0;For(i=2;i=n-1;i+)If(n%i=0)S+=i*I;Return s; main() int n; long sum; printf(Input n:); scanf(%d, &n); sum=fun(n); printf(sum=%ldn, sum);3. 编程题long fun(int n) int i; long s=0; for(i=2;i=n-1;i+) /*从2n-1中找n的所有因子*/ if(n%i=0) s+=i*i; /*将所有因子求平方加*/ return s; /*将平方和返回*/第7套1.填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include #include #define N 40void fun(char *str1,char *str2) int i=0,j=0,k=0,n; char ch; char *p1=str1; char *p2=str2; while(*(p1+i)i+; while(*(p2+j)j+; n=【1】j-; for(;k=j/2;k+,j-)ch=*(p2+k);*(p2+k)=*(p2+j);*(p2+j)=ch; 【2】*(p2+n)=0; for(;【3】*p2;i+)*(p1+i)=*p2+; *(p1+i)=0;main() char str1N,str2N; int m,n,k; clrscr(); printf(*Input the string str1 & str2 *n); printf(nstr1:); gets(str1); printf(nstr2:); gets(str2); printf(* The string str1 & str2 *n); puts(str1); puts(str2); fun(str1,str2); printf(* The new string *n); puts(str1);1.填空题【1】j-【2】*(p2+n)=0【3】*p22. 改错题下列给定程序中,函数fun()的功能是找出100n(不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #define N 100int fun(int *s, int n) int i,j,k,a,b,c; j=0; for(i=100; in; i+) /*found*/ k=i; a=k%10; k/=10; b=k%10; c=k/10; if(a=b+c) /*found*/ sj+=i; return j;main() int aN, n,num=0, i; do printf(nEnter n( 1000); num= fun(a,n); printf(nnThe result :n); for(i=0; inum; i+) printf(%5d,ai); printf(nn);2. 改错题(1)错误:k=n; 正确:k=i;(2)错误:sj=i; 正确:sj+=i;3. 编程题程序定义了NN的二维数组,并在主函数中自动赋值。请编写函数fun(int a N ,int n),该函数的功能是使数组左下半三角元素中的值加上n。例如:若n的值为3,a数组中的值为a=2 5 41 6 95 3 7则返回主程序后a数组中的值应为5 5 44 9 98 6 10 注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include #define N 5fun(int a N, int n)int I,j; For(i=0;in;i+) For(j=0;j=I;j+)Aij=aij+n;main() int aNN,n, i,j; clrscr(); printf(* The array *n); for(i=0; iN; i+) /*产生一个随机5*5矩阵*/ for(j=0; j=5); printf(n=%4dn,n); fun(a, n); printf(*THE RESULT*n); for(i=0; iN; i+) for (j=0; jN; j+) printf(%4d,aij); printf(n); 3. 编程题fun(int a N, int n) int i, j; for(i=0; iN; i+) for(j=0; j=i; j+) aij=aij+n; /*使数组左下半三角元素中的值加上n*/第8套1.填空题请补充函数fun(),该函数的功能是:按0到9统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。例如:输入“x=112385713.456+0.909*bc”,结果为:13,32,52,71,92。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include#define N 1000void fun(char *tt,int num) int i,j; int bb10; char *p=tt; for(i=0;i=0&*p=9)【2】;p+; for(i=1,j=0;i10;i=i+2,j+)【3】;main() char strN; int num10,k; clrscr(); printf(nPlease enter a char string:); gets(str); printf(n*The original string*n); puts(str); fun(str,num); printf(n*The number of letter*n); for(k=0;k5;k+) printf(n);printf(%d=%d,2*k+1,numk); printf(n); return;1.填空题【1】*p【2】bb*p-0+【3】numj=bbi2. 改错题下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a0中的数对调,次最小数和a1中的数对调。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #define N 20void fun(int *a,int n) int i, m, t, k;/*found*/ for(i=0; in; i+) m=i; for(k=i; kn; k+) if(akam)/*found*/ k=m; t=ai; ai=am; am=t; main() int x,bN=11,5,12,0,3,6,9,7,10,8,n=10,i; clrscr(); for(i=0; in; i+) printf(%d ,bi); printf(n); fun(b,n); for(i=0; in; i+) printf(%d , bi); printf(n);2. 改错题(1)错误: for(i=0; in; i+) 正确:for(i=0; i2; i+)(2)错误:k=m; 正确:m=k;3. 编程题m个人的成绩存放在score数组中,请编写函数fun(),它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在up所指的数组中。例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #include #include int fun(int score,int m, int up)main() int i, n, up9; int score9=24,35,88,76,90,54,59,66,96; clrscr(); n=fun(score, 9, up);

温馨提示

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

评论

0/150

提交评论