计算机二级c语言上机题库 绝对好用
更新时间:2024-05-09 23:33:01 阅读量: 综合文库 文档下载
二级 C_第1套上机题
【参考答案】求ss所指字符串数组中长度最短 (1) M (2) < (3) k
【参考答案】小写字母全部改为对应的大写字母。 (1)if(( tt[i]>='a')&&( tt[i] <= 'z')) (2)tt[i]-=32;
【参考答案】大于1小于整数m的非素数存入xx void fun( int m, int *k, int xx[] ) { int i,j,n=0; for(i=4;i /*找出大于1小于整数m的非素数*/ { for(j=2;j /*返回非素数的个数*/ } 二级 C_第2套上机题 【参考答案】小于等于n(n>2)的素数的个数 (1)j=2 (2)i (3)j 【参考答案】计算前n(4 【参考答案】S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n) double fun(int n) { int i; double s=0.0; for(i=1;i<=n;i++) s=s+(1.0/(2*i-1)-1.0/(2*i)); /*计算S=(1-1/2)+(1/3-1/4)+ (1/(2n-1)-1/2n)*/ return s; } 二级 C_第3套上机题 【参考答案】对形参b所指结构体变量中的数据进行修改 (1) ->sno (2) ->name (3) &t 【参考答案】用递归算法求形参a的平方根 (1)double fun(double a,double x0) (2)if(fabs(x1-x0)>=0.00001) 【参考答案】把高于等于平均分的学生数据放在b所指的数组中 double fun( STREC *a, STREC *b, int *n ) { int i; double av=0.0; *n=0; for(i=0;i av=av/N;/*求平均值*/ for(i=0;i { b[*n]=a[i];*n=*n+1;} /*将高于等于平均分的学生存入b所指存储单元 中,并统计人数*/ return av; /*返回平均分*/ } 二级 C_第4套上机题 【参考答案】用指针数组对形参ss所指字符串数组中的字符串按由长到短 的顺序排序 (1)i (2)ps[j] (3)tp 参考答案】平方根之和sum。n的值通过形参传入 (1)double fun(int n) (2)return sum ; 【参考答案】S=1+x+x2/2!+x3/3!+…+xn/n!级数和 double fun(double x, int n) { int i; double s=1.0,s1=1.0; for(i=1;i<=n;i++) {s1=s1*i; /*各项中的阶乘*/ s=s+pow(x,i)/s1; /*按公式求出*/ } return s; } 二级 C_第5套上机题 参考答案】将存放学生数据的结构体数组,按姓名的字典序(从小到大) 排序。 (1) struct student (2) n-1 (3) a[i].name,a[j].name 【参考答案】从p所指字符串中找出ASCII码值最大的字符 (1)q=p+i; (2)while(q>p) 【参考答案】把指定分数范围内的学生数据放在b所指的数组中, int fun( STREC *a,STREC *b,int l, int h ) { int i,j=0; for(i=0;i if(a[i].s>=l&&a[i].s<=h) /*将分数高于l,低于h的学生记录存入结构体数组b中*/ b[j++]=a[i]; return j; /*返回分数范围内的学生人数*/ } 二级 C_第6套上机题 【参考答案】将s所指字符串中的所有数字字符移到所有非数字字符之后 (1)j++或j+=1或++j或j=j+1 (2)s[i]=t1[i] (3) j 【参考答案】冒泡法对6个字符串进行升序排列。 (1)for (j = i + 1; j < 6; j++) (2)*(pstr + i) = *(pstr + j) ; 【参考答案】求ss所指字符串中指定字符的个数 int fun(char *ss, char c) { int i=0; for(;*ss!='\\0';ss++) if(*ss==c) i++;/*求出ss所指字符串中指定字符的个数*/ return i; } 二级 C_第7套上机题 【参考答案】e的值为1e-3,函数的返回值为2.985678 (1) 0 (2) i++或++i或i+=1或i=i+1 (3)2.0*i 【参考答案】将s所指字符串的正序和反序进行连接 (1)void fun ( char *s , char *t ) (2)t[2*d]='\\0';或t[d+i]='\\0';或t[2*d]=0;或t[d+i]=0; 【参考答案】将s所指字符串中除了下标为奇数同时ASCII值 void fun(char *s, char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i if(i%2!=0&&s[i]%2!=0) {t[j]=s[i];/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中 */ j++; } t[j]='\\0'; /*最后加上结束标识符*/ } 二级 C_第8套上机题 【参考答案】10001、\、95、80、88,修改后输出t中的数据应 为:10002、\、96、81、89将形参a所指结构体变量s中的数据进行 修改,并把a的地址作为函数值返回主函数,从主函数中输出修改的数据 。。 (1) struct student * (2) a->score[i] (3) a 【参考答案】从N个字符串中找出最长的串,并将其地址作为函数值返回 (1)char *fun(char (*sq)[M]) (2)return sp; 【参考答案】当a=45,b=12,调用该函数后c=2415;将a、b中的两个 两位正整数合并成一个新的整数放在c中 void fun(int a, int b, long *c) { *c=a+(b/10)*10+(a/10)*100+(b)*1000; } 二级 C_第9套上机题 【参考答案】将形参a中的数据进行修改,把修改后的数据作为函数值返 回主函数进行输出10001、\、95、80、88,修改后的数据应为 :10002、\、96、。 (1) struct student (2) a.name (3) a.score[i] 【参考答案】删除数列中值为x的元素。变量n中存放数列中元素的个数 (1)if(p==n) return -1; (2)a[i]=a[i+1]; 【参考答案】 void fun(int a, int b, long *c) { *c=a/10+(b)*10+(a)*100+(b/10)*1000; } 二级 C_第10套上机题 【参考答案】在形参s所指字符串中的每个数字字符之后插入一个*号 (1) && (2) 0或'\\0' (3) s[j]或*(s+j) 【参考答案】根据整型形参m若m的值为5,则应输出1.463611。 (1)for(i=2;i<=m;i++) (2)y+=1.0/(i*i);或y+=(double)1.0/(i*i) 【参考答案】实现B=A+A',即将矩阵A加上A的转置,存放在矩阵B中 void fun ( int a[3][3], int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩阵a加上a的转置,存放在矩阵b中*/ } 二级 C_第11套上机题 【参考答案】判断形参s所指字符串是否是\回文\(1)s (2)-- (3)return 0 【参考答案】求出如下分数列的前n项之和若n=5,则应输出8.39166 (1)double fun(int n) (2)s=s+(double)a/b; 【参考答案】大于整数m且紧靠m的k个素数存入所指的数组中。 例如,若输入17,5,则应输出19、23、29、31、37。 void fun(int m,int k,int xx[]) { int i,j,n; for(i=m+1,n=0;n k个素数*/ {for(j=2;j 环,判断下一个数*/ if(i%j==0) break; if(j>=i) /*如果是素数,放入数组xx中*/ xx[n++]=i; } } 二级 C_第12套上机题 【参考答案】统计长整数n的各位上出现数字1、2、3的次数,并用外部( 全局)变量c1、c2、c3返回主函数。 (1) n (2) break (3) break 【参考答案】统计一个无符号整数中各位数字值为0的个数 (1)if(t==0) (2)*zero=count; 【参考答案】例如,在主函数中从键盘为n输入50后,输出为S=1.718282 。 注意:要求n的值在大于1但不大于100之间。 double fun(int n) { double sum=0,tmp=1; int i; for(i=1;i<=n;i++) { tmp=tmp*i; sum+=1.0/tmp; } return sum; } 二级 C_第13套上机题 【参考答案】在形参ss所指字符串数组中查找与形参t所指字符串相同的 串,找到后返回该串在字符串数组中的位置 (1)N (2)i (3) -1 【参考答案】从整数10到55之间,查找能被3整除且有一位上的数值是5的 数,把这些数放在b所指的数组中 (1)a2=k/10; (2)return i; 【参考答案】将字符串尾部的*号全部删除,前面和中间的*号不动。 void fun( char *a ) { while(*a!='\\0') a++; a--; /*指针a指向字符串的尾部*/ while(*a=='*') a--;/*指针a指向最后一个字母*/ *(a+1)='\\0'; /*在字符串最后加上结束标志符*/ } 二级 C_第14套上机题 【参考答案】统计形参s所指的字符串中数字字符出现的次数,并存放在 形参t所指的变量中 (1) s[i] (2) '9' (3)*t=n 【参考答案】实现两个变量值的交换,规定不允许增加语句和表达式。 (1)t = *x ; *x = y ; (2)return(t) ;或return t; 【参考答案】求出1~1000之间能被7或11整除,但不能同时被7和11整除的 所有整数,并将其放在a所指的数组中 void fun (int *a, int *n) { int i,j=0; for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数, 并放入数组a中*/ if((i%7==0||i==0)&&iw!=0) a[j++]=i; *n=j; } 二级 C_第15套上机题 【参考答案】下式前n项的和,当形参n的值为10时,函数返回:- 0.204491 (1) 1 (2) 2*i (3) (-1) 【参考答案】判断一个整数是否为素数,若是素数返回1,否则返回0。 (1)k++; (2)if(m==k) 【参考答案】找出一维整型数组元素中最大的值及其所在的下标,并通过 形参传回 void fun(int a[],int n, int *max, int *d) { int i; *max=a[0]; *d=0; for(i=0;i 素的下标放入指针d所指的单元*/ if(*max {*max=a[i];*d=i;} } 二级 C_第16套上机题 【参考答案】计算 的前n项。若x=2.5,函数值为12.182340。 (1)1.0 (2)1 (3)i 【参考答案】找出100~n(不大于1000)之间三个位上的数字都相等的所有 整数,把这些整数放在s所指的数组中 (1)k=i; (2)b=k; 【参考答案】计算并输出给定10个数的方差例如,给定的10个数为95.0、 89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,则输出为S =11.730729。。 double fun(double x[10]) { double x1=0.0,s=0.0; int i; for(i=0;i<10;i++) x1=x1+x[i]; x1=x1/10; /*求10个数的平均值*/ for(i=0;i<10;i++) s=s+(x[i]-x1)*(x[i]-x1); return sqrt(s/10); /*求10个数的方差*/ } 二级 C_第17套上机题 【参考答案】在形参ss所指字符串数组中,将所有串长超过k的字符串中 后面的字符删除,只保留前面的k个字符 (1) [M] (2) N (3)'\\0' 【参考答案】当给指定精度的变量eps输入0.0005时,应输出Pi= 3.140578。 π/2=1+1/3+1/3×2/5+1/3×2/5×3/7+1/3×2/5×3/7×4/9+ (1)t=1.0; (2)return(s*2); 【参考答案】使字符串的前导*号不得多于n个,若多于n个,则删除多余 的*号;若少于或等n个,则不做处理,字符串中间和尾部的*号不删除。 void fun( char *a, int n ) { int i=0; int k=0; char *p,*t; p=t=a; /*开始时,p与t同时指向数组的首地址*/ while(*t=='*') /*用k来统计前部星号的个数*/ {k++;t++;} if(k>n)/*如果k大于n,则使p的前部保留n个星号,其后的字符依次存入 数组a中*/ { while(*p) { a[i]=*(p+k-n); i++; p++; } a[i]='\\0'; /*在字符串最后加上结束标识位*/ } } 二级 C_第18套上机题 【参考答案】把形参s所指字符串中下标为奇数的字符右移到下一个奇数 位置 (1) 1 (2) s[k]或*(s+k) (3) c 【参考答案】表达式 s=aa… aa-…- aaa - aa -a (1)long s=0, t=0; (2)t=t/10; 【参考答案】统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的 次数,并依次放在pp所指的数组 void fun(char *tt, int pp[]) { int i; for(i=0;i<26;i++) pp[i]=0; /*初始化pp数组各元素为0*/ for(;*tt!='\\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; } 二级 C_第19套上机题 【参考答案】查找含有形参substr所指子串的所有字符串,并输出,若没 找到则输出相应信息 (1) N (2) substr (3) 0 【参考答案】 (1)fun(int x,int y, int z)或int fun(int x,int y,int z) (2)return j; 【参考答案】只删除字符前导和尾部的*号,串中字母间的*号都不删除。 void fun( char *a, int n,int h,int e ) { int i,j=0; for(i=h;i 除*/ a[j++]=a[i]; a[j]='\\0'; /*在字符串最后加上结束标识*/ } 二级 C_第20套上机题 【参考答案】首先从素数2开始,将所有2的倍数的数从数表中删去(把数 表中相应位置的值置成0); (1)a[i] (2)a[i] (3)0 【参考答案】为一个偶数寻找两个素数,这两个素数之和等于该偶数,并 将这两个素数通过形参指针传回主函数。 (1)y=1; (2)d=a-i; 【参考答案】计算并输出n(包括n)以内所有能被5或9整除的自然数的倒数 之和。 double fun(int n) { int i; double sum=0.0; for(i=1;i<=n;i++) if(i%5==0||i%9==0) sum+=1.0/i; return sum; } 二级 C_第21套上机题 【参考答案】将形参s所指字符串中下标为奇数的字符取出,并按ASCII码 大小递增排序,将排序后的字符存入形参p所指字符数组中,形成一个新 串。 (1)while(fabs(t)>=num) (2)t=s/n; 【参考答案】用下面的公式求π的近似值,直到最后一项的绝对值小于指 定的数(参数num)为止。 (1)t=i (2) i (3) '\\0'或0 【参考答案】删除一个字符串中指定下标的字符。 void fun (char a[], char b[], int n) { int i,k=0; for(i=0;a[i]!='\\0';i++) if(i!=n) /*将不是指定下标的字符存入数组b中*/ b[k++]=a[i]; b[k]='\\0'; /*在字符串最后加上结束标识*/ } 二级 C_第22套上机题 【参考答案】直到 <10-6。若x=2.5,函数值为12.182494。 (1)x (2)n (3)t 【参考答案】计算n的5次方的值(规定n的值大于2且小于8) (1)d=1; (2)s=0; (3)d=d/10; 【参考答案】计算并输出给定数组(长度为9)中每相邻两个元素的平均值 的平方根之和。 double fun(double x[9]) { double sum=0.0; int i,j=1; for(i=0;i<9;i++) if(j<=8) { sum+=sqrt((x[i]+x[i+1])/2.0);j++; /*相邻两个元素之 平均值的平方根之和*/ } return sum; } 二级 C_第23套上机题 【参考答案】若形参ch中是小写英文字母,则转换成对应的大写英文字母 ;若ch中是大写英文字母,则转换成对应的小写英文字母; (1)&& (2)'A' (3)ch 【参考答案】例如,输入1、2、3、4,程序运行后输出以下方阵: 4 1 2 3 3 4 1 2 2 3 4 1 1 2 3 4 (1)void fun(int *a) (2)a[j]=a[j-1]; 【参考答案】计算并输出给定整数n的所有因子(不包括1与自身)之和 int fun(int n) { int s=0,i; for(i=2;i<=n-1;i++) /*将n减1累加*/ if(n%i==0) s+=i; return s; } 二级 C_第24套上机题 【参考答案】从三个形参a、b、c中找出中间的数,并作为函数值返回。 (1) a (2) a (3) b 【参考答案】将大写字母转换为对应小写字母之后的第5个字母 (1)c=c+32; (2)c=c+5; 【参考答案】计算并输出 S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5) 的值。 double fun(int n) { int i; double s=0.0,s1=0.0; for(i=1;i<=n;i++) {s1=s1+pow(i,0.5); /*求每一项*/ s=s+s1; /*按公式求出s*/ } return s; } 二级 C_第25套上机题 【参考答案】在形参s所指字符串中寻找与参数c相同的字符,并在其后插 入一个与之相同的字符, (1) '\\0' (2) 0 (3) c 【参考答案】:计算数组元素中所有值为正数的平均值(不包括0)。 (1)double sum=0.0; (2)sum/=c; 【参考答案】若n的值为11时,函数的值为1.833333 float fun(int n) { int i,s1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } return s; } 二级 C_第26套上机题 【参考答案】从形参ss所指字符串数组中,删除所有串长超过k的字符串 ,函数返回剩余字符串的个数 (1) N (2) k (3) ss[i] 【参考答案】逐个比较p、q所指两个字符串对应位置上的字符,并把 ASCII值大或相等的字符依次存放到c所指的数组中 (1) int k=0; (2)while (*p||*q) 【参考答案】除了字符串前导的*号之外,将串中其它*号全部删除。不得 使用C语言提供的字符串函数。 void fun( char *a ) { int i=0; char *p=a; while(*p&&*p=='*') { a[i]=*p; i++; p++; } while(*p) { if(*p!='*') {a[i]=*p;i++;} p++; } a[i]='\\0'; } 二级 C_第27套上机题 【参考答案】各位上为偶数的数取出,并按原来从高位到低位相反的顺序 组成一个新数,作为函数值返回。 (1)0 (2) 10*x (3)n/10 【参考答案】将长整型数中各位上为奇数的数依次取出,构成一个新数放 在t中。高位仍在高位,低位仍在低位。 (1)*t=0; (2)if(d%2!=0)或if(d%2==1) 【参考答案】实现两个字符串的连接(不要使用库函数strcat),即把p2所 指的字符串连接到p1所指的字符串的后面。 void fun(char p1[], char p2[]) { int i,j; for(i=0;p1[i]!='\\0';i++) ; for(j=0;p2[j]!='\\0';j++) p1[i++]=p2[j]; p1[i]='\\0'; } 二级 C_第28套上机题 【参考答案】有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均 向右移动m个位置,左位置为0。 (1)i++ (2)m (3)m 【参考答案】计算并输出high以内最大的10个素数的和。high的值由主函 数传给fun函数。 (1)while((high>=2) && (n<10)) (2)yes=0; break; 参考答案】利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。 double fun() { double x0,x1; x1=0.0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>=1e-6); return x1; } 二级 C_第29套上机题 【参考答案】找出形参s所指字符串中出现频率最高的字母(不区分大小写 ),并统计出其出现的次数。 (1)*s (2)1 (3)k[n] 【参考答案】求S的值。 S=(22/(1×3))×(42/(3×5))×(62/(5×7))×…×(2k)2/((2k-1)× (2k+1)) (1)double fun(int k) (2)return s ; 【参考答案】计算并输出下列多项式的值。 S=1/(1×2)+1/(2×3)+…+1/(n×(n+1)) double fun(int n) { int i; double s=0.0; for(i=1;i<=n;i++) s=s+1.0/(i*(i+1));/*求级数的和*/ return s; } 二级 C_第30套上机题 【参考答案】把形参s所指字符串中最右边的n个字符复制到形参t所指字 符数组中,形成一个新串。 (1)t,s (2)s[i] (3)0或'\\0' 【参考答案】找出一个大于给定整数m且紧随m的素数,并作为函数值返回 。 (1)if(i%k==0) (2)if(k==i) 【参考答案】求出能整除x且不是偶数的各整数,并按从小到大的顺序放 在pp所指的数组中 void fun (int x, int pp[], int *n) { int i,j=0; for(i=1;i<=x;i=i+2) /*i的初始值为1,步长为2,确保i为奇数*/ if(x%i==0) /*将能整除x的数存入数组pp中*/ pp[j++]=i; *n=j; /*传回满足条件的数的个数*/ } 二级 C_第31套上机题 【参考答案】将形参s所指字符串中所有ASCII码值小于97的字符存入形参 t所指字符数组中,形成一个新串 (1)*s (2)s++ (3)n 【参考答案】:给定n个实数,输出平均值,并统计平均值以上(含平均值 )的实数个数。 (1) {int j, c=0;float xa=0.0; (2)if (x[j] >= xa) 【参考答案】根据以下公式求P的值,结果由函数值带回。m与n为两个正 整数且要求m>n。 long jc(int m) { long s=1; int i ; for(i=1;i<=m;i++) s=s*i ; return s; } float fun(int m, int n) { float p; p=1.0*jc(m)/jc(n)/jc(m-n) ; return p; } 二级 C_第32套上机题 【参考答案】将N×N矩阵中元素的值按列向右移动1个位置,右边被移出 矩阵的元素绕回左边第1列 (1) N (2) N-1 (3) 0 【参考答案】计算并输出下列级数的前N项和SN,直到SN+1的值大于q为 止,q的值通过形参传入。 (1)s=s +(double)(n+1)/n; (2)return t; 【参考答案】求Fibonacci数列中大于t的最小的数,结果由函数返回。 Fibonacci数列F(n)的定义为: F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2)额呵呵呵 int fun( int t) { int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ; } 二级 C_第33套上机题 【参考答案】计算出形参s所指字符串中包含的单词个数,作为函数值返 回。为便于统计,规定各单词之间用空格隔开。 (1)n++ (2)0 (3)s++ 【参考答案】从n个学生的成绩中统计出低于平均分的学生人数,此人数 作为函数值返回,平均分存放在形参aver所指的存储单元中。 (1)t+=s[k]; (2)*aver=ave; 【参考答案】用来求出数组的最大元素在数组中的下标并存放在k所指向 的存储单元中。 int fun(int *s,int t,int *k) { int i; *k=0; /*k所指的数是数组的下标值*/ for(i=0;i if(s[*k] 所指的数*/ return s[*k]; /*返回数组的最大元素*/ } 二级 C_第34套上机题 【参考答案】在3×4的矩阵中找出在行上最大、在列上最小的那个元素, 若没有符合条件的元素则输出相应信息。 (1)j (2)0 (3)i++ 【参考答案】根据整形参m的值,计算如下公式的值。 例如,若m中的值为5,则应输出0.536389。 (1)for(i = 2 ; i<= m ; i++) (2)y -= 1.0/(i * i); 【参考答案】将低于平均分的人数作为函数值返回,将低于平均分的分数 放在below所指的数组中。 int fun(int score[],int m, int below[]) { int i,j=0; float av=0.0; for(i=0;i av=av+score[i]/m;/*求平均值*/ for(i=0;i if(score[i] below[j++]=score[i]; return j; /*返回低于平均分的人数*/ } 二级 C_第35套上机题 【参考答案】有N×N矩阵,将矩阵的外围元素做顺时针旋转。操作顺序是 :首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最 后一行成为第一列,最后一列成为最后一行, (1)0 (2)j-- (3)j 【参考答案】计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f (n)的值。 (1)double f(double x) (2)return s ; 【参考答案】s作为函数值返回。 在C语言中可调用log(n)函数求ln(n)。log函数的引用说明为:double log(double x)。 double fun( int m ) { int i; double s=0.0; for(i=1;i<=m;i++) s=s+log(i); /*计算s=ln(1)+ln(2)+ln(3)+…+ln(m)*/ return sqrt(s); /*对s求平方根并返回*/ } 二级 C_第36套上机题 【参考答案】将形参s所指字符串中的所有字母字符顺序前移,其他字符 顺序后移,处理后将新字符串的首地址作为函数值返回。 (1) s[i] (2) k (3) '\\0'或0 【参考答案】将s所指字符串中最后一次出现的与t1所指字符串相同的子 串替换成t2所指字符串,所形成的新串放在w所指的数组中 (1)while (*w) (2)if ( *r ==*p ) 【参考答案】将s所指字符串中ASCII值为奇数的字符删除,剩余字符形成 的新串放在t所指数组中。 void fun(char *s, char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i t[j]='\\0'; } 二级 C_第37套上机题 【参考答案】将形参a所指数组中的前半部分元素中的值与后半部分元素 中的值对换。形 (1)1 (2) i (3) a[p+i]或*(a+p+i) 【参考答案】把从主函数中输入的3个数,最大的数放在a中,中间的数放 在b中,最小的数放在c中。 (1)float k; (2)if(*a< *c) 【参考答案】把分数最高的学生数据放在b所指的数组中。注意:分数最 高的学生可能不止一个 int fun( STREC *a, STREC *b ) { int i,j=0,max=a[0].s; /*找出最大值*/ for(i=0;i if(max b[j++]=a[i]; /*找出成绩与max相等的学生的记录,存入结构体b中*/ return j; /*返回最高成绩的学生人数*/ } 二级 C_第38套上机题 【参考答案】在3×4的矩阵中找出在行上最大、在列上最小的那个元素 (1)j (2)0 (3)i++ 【参考答案】例如,若m中的值为5,则应输出0.536389。 (1)for(i = 2 ; i<= m ; i++) (2)y -= 1.0/(i * i); 【参考答案】将低于平均分的人数作为函数值返回,将低于平均分的分数 放在below所指的数组中。 int fun(int score[],int m, int below[]) { int i,j=0; float av=0.0; for(i=0;i for(i=0;i /*返回低于平均分的人数*/ } 二级 C_第39套上机题 【参考答案】将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的 每列元素行依次左移 (1)k (2)N-1 (3)temp 【参考答案】根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下 所示规律的数据,由main函数输出。 (1)void fun(int a[][M], int m) (2)a[j][k] = (k+1)*(j+1); 【参考答案】将a、b中的两个正整数合并形成一个新的整数放在c中。合 并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上 void fun(int a, int b, long *c) { *c=(a)*1000+(b)*100+(a/10)*10+(b/10); } 【参考答案】若形参e的值为1e-3,则函数返回值为0.551690 (1)3.0或(double)3 (2)> (3) (t+1) 【参考答案】求出如下分数序列的前n项之和。和值通过函数值返回。 例如,若n=5,则应输出8.391667。 (1)double fun(int n) (2)s=s+(double)a/b; 【参考答案】找出2×M整型二维数组中最大元素的值,并将此值返回调用 函数。 int fun (int a[][M]) { int i,j,max=a[0][0]; for(i=0;i<2;i++) for(j=0;j 【参考答案】将形参n中,各位上为偶数的数取出,并按原来从高位到低位 的顺序组成一个新数,作为函数值返回。 (1) 1 (2) s>0 (3) i*10 【参考答案】输出M×M整数方阵,然后求两条对角线上元素之和,并作为函 数值返回。 (1)int fun(int n,int xx[][M]) (2)printf(\ 【参考答案】将a、b两个两位正整数合并成一个新的整数放在c中。合并 的方式是:将a中的十位和个位数依次放在变量c的千位和十位 void fun(int a, int b, long *c) { /*b 获取b的个位,a/10 获取a的十位,a 获取a的个位,b/10 获取b的十位*/ *c=b/10+(a)*10+(b)*100+(a/10)*1000; } 二级 C_第42套上机题 【参考答案】将形参n所指变量中,各位上为偶数的数去掉,剩余的数按 原来从高位到低位的顺序组成一个新数 (1) 10 (2) 0 (3) x 【参考答案】给n输入5,则输出120.000000。 (1)if( n==0) (2)result *=n--;或{result *=n; n--;} 【参考答案】将一个数字字符串转换为一个整数(不得调用C语言提供的将 字符串转换为整数的函数)。例如,若输入字符串\-1234\,则函数把它 转换为整数值-1234。 long fun ( char *p) { long n=0; int flag=1; if(*p=='-') /*负数时置flag为-1*/ {p++;flag= -1;} else if(*p=='+') /*正数时置flag为1*/ p++; while(*p!='\\0') {n=n*10+*p-'0';/*将字符串转成相应的整数*/ p++; } return n*flag; } 二级 C_第43套上机题 【参考答案】把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[ 1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。 (1) a[i]%2 (2) a[j] (3) j 【参考答案】当给n输入5时,函数值为18;当给n输入3时,函数值为14。 (1)int fun (int n) (2)if (n==1) 【参考答案】使字符串中尾部的*号不多于n个,若多于n个,则删除多余的* 号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。 void fun( char *a,int n ) { int i=0,k=0; char *p, *t; p=t=a;/*将指针移动到字符串末尾*/ while(*t) t++; t--; /*从后往前如果是'*' 则使k++,找到最后一个*所在的位置, 并记录'*'的个数*/ while(*t=='*')/*指针t指向前一个,同时标量k增加一*/ {k++;t--;} if(k>n) {while(*p&&p a[i]='\\0'; } } 二级 C_第44套上机题 【参考答案】有N×N矩阵,以主对角线为对称线,对称元素相加并将结果 存放在左下三角元素中,右上三角元素置为0。 (1) [N] (2) t[i][j] (3) t[j][i] 【参考答案】计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值 。其中x和y的值不相等,z和y的值不相等。 (1)#define FU(m,n) (m)/(n) (2)return (value); 【参考答案】将字符串中的前导*号全部删除,中间和尾部的*号不删除。 void fun( char *a ) { char *p=a; while(*p=='*') p++;/*指针p指向字符串第一个字母*/ for(;*p!='\\0';p++,a++) *a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串 中*/ *a='\\0'; /*在字符串最后加上字符串结束标识*/ } 二级 C_第45套上机题 【参考答案】从文件中找出指定学号的学生数据,读入此学生数据,对该 学生的分数进行修改,使每门课的分数加3分 (1)fp (2) == (3) fp 【参考答案】先对头两个字符进行排序,然后把第三个字符插入到前两个 字符中,插入后前三个字符依然有序 (1)n=strlen( aa ) ; (2)ch=aa[i]; 【参考答案】找出学生的最高分,并由函数值返回。 double fun( STREC *h ) { double max=h->s; while(h!=NULL) /*通过循环找到最高分数*/ {if(max return max; } 二级 C_第46套上机题 【参考答案】若x=2.5,函数值为1.917915。 (1)x (2)n (3)fabs(t) 【参考答案】求整数x的y次方的低3位值。例如,整数5的6次方为15625, 此值的低3位值为625。 (1)for(i=1;i<=y;i++) (2)t=t00; 【参考答案】计算并输出当x<0.97时,如下多项式的值,直到|Sn-Sn- 1|<0.000001为止。 double fun(double x) { double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do { s0=s1; sum+=s0; t*=n; p*=(0.5-n+1)*x; s1=p/t; n++; }while(fabs(s1-s0)>=1e-6); return sum; } 二级 C_第47套上机题 【参考答案】是根据形参炸响,只算一次响声,第一次响声是在第0s。 (1)i (2)t++ (3)count 【参考答案】根据输入的三个边长(整型值),判断能否构成三角形。若能 构成等边三角形,则返回3; (1)return 3; (2)return 1; 【参考答案】计算并输出3~n之间所有素数的平方根之和。 double fun(int n) { int m,k,i; double s=0.0; for(m=3;m<=n;m++) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) s+=sqrt(m); } return s; } 二级 C_第48套上机题 【参考答案】逆置数组元素中的值。 (1) n/2 (2) i (3) a[n-i-1]或a[n-1-i] 【参考答案】将一个由八进制数字字符组成的字符串转换成十进制整数 (1)n= *p-'0'; (2)n=n*8+*p-'0'; 【参考答案】:函数返回该学号的学生数据,指定的学号在主函数中输入 。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1, STREC fun( STREC *a, char *b ) {int i; STREC str={\若没找到指定的学号,在结构体变量中给学 号置空串,给成绩置-1*/ for(i=0;i if(strcmp(a[i].num,b)==0) /*找到指定学号的学生数据*/ str=a[i]; return str; /*返回学生记录*/ } 二级 C_第49套上机题 【参考答案】把形参a所指数组中的最大值放在a[0]中,接着求出a所指数 组中的最小值放在a[1]中,再把a所指数组元素中的次大值放在a[2]中, (1) a[] (2) 2 (3) i+1 【参考答案】 (1)sum=0.0; (2)if((i+1)%5==0) 按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个 元素求一个平均值, 【参考答案】把低于平均分的学生数据放入b所指的数组中,低于平均分 的学生人数通过形参n传回,平均分通过函数值返回。 double fun( STREC *a, STREC *b, int *n ) { int i,j=0; double av=0.0; for(i=0;i av=av/N; /*求平均值*/ for(i=0;i if(a[i].s *n=j; /*指针传回低于平均值的学生人数*/ return av; /*返回平均值*/ } 二级 C_第50套上机题 【参考答案】把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1] 、a[2]、……中,把偶数从数组中删除 (1)1 (2) j++ (3)j 【参考答案】求两个非零正整数的最大公约数,并作为函数值返回。 (1)t=a;a=b;b=t; (2)return(b);或return b; 【参考答案】删除字符串中所有的*号。编写函数时,不得使用C语言提供 的字符串函数 void fun( char *a ) { int i,j=0; for(i=0;a[i]!='\\0';i++) if(a[i]!='*') a[j++]=a[i];/*若不是要删除的字符'*'则留下*/ a[j]='\\0'; } 二级 C_第51套上机题 【参考答案】计算N×N矩阵的主对角线元素和反向对角线元素之和,并作 为函数值返回 (1) sum=0 (2) t[i][i] (3) 1 【参考答案】用二分法求方程 的一个根,并要求绝对误差不超过0.001。 (1)double r ; (2)while (fabs(n-m) >0.001) 【参考答案】除了字符串前导和尾部的*号外,将串中其它的*号全部删除 。 void fun( char *a, char *h,char *p ) { int i=0; char *q=a; while(q { a[i]=*q; q++;i++;} while(q while(*q) { a[i]=*q; i++; q++;} a[i]='\\0'; } 二级 C_第52套上机题 【参考答案】将N×N矩阵主对角线元素的值与反向对角线对应位置上元素 的值进行交换。 (1) t[][N] (2) i=0;i 回其下标值;否则,返回-1。 (1)int fun(int a[],int m)或fun(int a[],int m) (2)else if(m>a[mid]) 【参考答案】除了尾部的*号之外,将字符中的其它的*号全部删除 void fun( char *a, char *p ) { char *t=a; for(;t<=p;t++) if(*t!='*') *(a++)=*t; for(;*t!='\\0';t++) *(a++)=*t; *a='\\0'; /*在字符串最后加上字符串结束标识*/ } 二级 C_第53套上机题 【参考答案】判断形参s所指字符串是否是\回文\,若是, 函数返回值为1;不是,函数返回值为0 (1)s (2)-- (3)return 0 【参考答案】若n=5,则应输出8.391667。 (1)double fun(int n) (2)s=s+(double)a/b; 【参考答案】将大于整数m且紧靠m的k个素数存入所指的数组中。 例如,若输入17,5,则应输出19、23、29、31、37。 void fun(int m,int k,int xx[]) { int i,j,n; for(i=m+1,n=0;n k个素数*/ {for(j=2;j 环,判断下一个数*/ if(i%j==0) break; if(j>=i) /*如果是素数,放入数组xx中*/ xx[n++]=i; } } 二级 C_第54套上机题 【参考答案】:找出100~999之间(含100和999)所有整数中各位上数字之 和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回 。 (1) 999 (2) t/10 (3) x 【参考答案】从低位开始依次取出长整型变量s中偶数位上的数,构成一 个新数放在t中。高位仍在高位,低位仍在低位 (1)void fun(long s,long *t) (2)while(s>0) 【参考答案】按分数降序排列学生的记录,高分在前,低分在后。 void fun( STREC a[] ) { int i,j; STREC t; for(i=1;i 高分在前*/ } 二级 C_第55套上机题 【参考答案】把形参a所指数组中的最小值放在元素a[0]中,接着把a所指 数组中的最大值放在a[1]元素中 (1) a[i] (2) a[j] (3) a[j] 【参考答案】用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐 波拉契数列为:1、1、2、3、5、8、13、21、…… 例如,若给n输入7,则该项的斐波拉契数值为13。 (1)去掉分号 (2)case 1:case 2:return 1; 【参考答案】求出该学生的平均分,并放入记录的ave成员中。 void fun(STREC *a) { int i; a->ave=0.0; for(i=0;i a->ave=a->ave+a->s[i]; /*求各门成绩的总和*/ a->ave/=N;/*求平均分*/ } 二级 C_第56套上机题 【参考答案】把形参s所指字符串中最右边的n个字符复制到形参t所指字 符数组中,形成一个新串。 (1)t,s (2)s[i] (3)0或'\\0' 【参考答案】找出一个大于给定整数m且紧随m的素数,并作为函数值返回 。 (1)if(i%k==0) (2)if(k==i) 【参考答案】根据以下公式求P的值,结果由函数值带回。m与n为两个正 整数且要求m>n。 例如:m=12,n=8时,运行结果为495.000000 long jc(int m) { long s=1; int i ; for(i=1;i<=m;i++) s=s*i ; return s; } float fun(int m, int n) { float p; p=1.0*jc(m)/jc(n)/jc(m-n) ; return p; } 二级 C_第60套上机题 【参考答案】将形参s所指字符串中的数字字符转换成对应的数值,计算 出这些数值的累加和作为函数值返回 (1)48 (2)s++ (3)sum 【参考答案】计算并输出k以内最大的10个能被13或17整除的自然数之和 。k的值由主函数传入 (1)if((k==0)||(k==0)) (2)} 【参考答案】求小于形参n同时能被3与7整除的所有自然数之和的平方根 ,并作为函数值返回。 double fun( int n) { double sum=0.0; int i; for(i=21; i<=n; i++) if((i % 3==0) && (i % 7==0)) sum+=i; return sqrt(sum); } 二级 C_第61套上机题 【参考答案】 (1)*s (2)1 (3)k[n] 找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出 其出现的次数。 【参考答案】求S的值。 S=(22/(1×3))×(42/(3×5))×(62/(5×7))×…×(2k)2/((2k-1)× (2k+1)) (1)double fun(int k) (2)return s ; 【参考答案】计算并输出下列多项式的值。 S=1/(1×2)+1/(2×3)+…+1/(n×(n+1)) double fun(int n) { int i; double s=0.0; for(i=1;i<=n;i++) s=s+1.0/(i*(i+1)); /*求级数的和*/ return s; } 二级 C_第62套上机题 【参考答案】将形参a所指结构体变量中的数据赋给函数中的结构体变量b ,并修改b中的学号和姓名,最后输出修改后的数据。 (1) a (2) b.name (3) score[i] 【参考答案】删除s所指字符中所有的小写字母c 。 请改正程序中的错误,使它能得出正确的结果。 (1)s[j++]=s[i];或{s[j]=s[i];j++;} (2)s[j]= '\\0'; 【参考答案】将字符串中的前导*号全部移到字符串的尾部。 void fun( char *a ) { int i=0,n=0; char *p; p=a; while (*p=='*') /*判断*p是否是*号,并统计*号的个数*/ { n++;p++; } while(*p) /*将前导*号后的字符传递给a*/ { a[i]=*p;i++;p++; } while(n!=0) { a[i]='*';i++;n--; } a[i]='\\0'; } 二级 C_第63套上机题 【参考答案】若x=2.5,n=15时,函数值为1.917914。 (1)1.0 (2)-1 (3)t 【参考答案】从3个红球、5个白球、6个黑球中任意取出8个作为一组,进 行输出。在每组中,可以没有黑球,但必须要有红球和白球。 (1)for(i=1;i<=3;i++) (2)if(k>=0&&k<=6) 【参考答案】Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! 例如,若主函数从键盘给n输入15,则输出为S=2.718282。 double fun(int n) { double t,sn=1.0; int i,j; for(i=1;i<=n;i++) { t=1.0; for(j=1;j<=i;j++) t*=j; sn+=1.0/t; } return sn; } 二级 C_64套上机题 【参考答案】将a所指4×3矩阵中第k行的元素与第0行元素交换。 (1)k (2)N (3)a[k][i] 【参考答案】读入一个字符串(长度<20),将该字符串中的所有字符按 ASCII码值升序排序后输出。 (1)for(i=strlen(t)-1; i; i--) 或 for(i=strlen(t)-1; i>0; i--) (2)if (t[j] > t[j+1]) 【参考答案】将ss所指字符串中所有下标为奇数位置的字母转换为大写( 若该位置上不是字母,则不转换)。 void fun(char *ss) { int i; for(i=0;ss[i]!='\\0';i++) if(i%2==1&&ss[i]>='a'&&ss[i]<='z') ss[i]=ss[i]-32; } 二级 C_65套上机题 【参考答案】当形参n的值为10时,函数返回:-0.204491。 (1) 1 (2) 2*i (3) (-1) 【参考答案】判断一个整数是否为素数,若是素数返回1,否则返回0。 (1)k++; (2)if(m==k) 【参考答案】找出一维整型数组元素中最大的值及其所在的下标,并通过 形参传回。数组元素中的值已在主函数中赋予 void fun(int a[],int n, int *max, int *d) { int i; *max=a[0]; *d=0; for(i=0;i 二级 C_第66套上机题 【参考答案】找出100到x(x≤999)之间各位上的数字之和为15的所有整数 ,并在屏幕输出 (1) 0 (2) x (3) t++ 【参考答案】先将s所指字符串中的字符按逆序存放到t所指字符串中,然 后把s所指串中的字符按正序连接到t所指串之后。 (1)int i, sl; (2)t[i]=s[sl-i-1]; 【参考答案】将a、b的两个两位正整数合并成一个新的整数放在c中。合 并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中 的十位和个位数依次放在变量c的千位和十位上 void fun(int a, int b, long *c) { *c=a+(b)*10+(a/10)*100+(b/10)*1000; }
正在阅读:
计算机二级c语言上机题库 绝对好用05-09
北京大学GIS历年考题讲解10-16
管道吊架计算书 - 图文04-03
请假条模板02-17
精品青岛版一年级上册数学期末试卷11-07
服装公司工作总结_工作总结08-08
红领巾作文07-16
聚苯颗粒水泥夹芯复合条板施工方案03-08
婴儿辅食Livrede173recettesbabycook12-08
医院感染知识考试试题及答案03-29
- 2010全国高考数学(理)考试大纲
- 2016-2017学年江苏省无锡市高三(上)期末数学试卷和答案
- 2013年河南省专升本经济学考试真题
- 珠海万利达保护整定示例
- 60kV厂用电进线电源二次回路设计(1)(DOC) - 图文
- 2017最新二年级数学教师家长会发言稿
- 医院地震应急预案
- 小学化倾向在幼儿教育中的问题及对策
- 软件测试毕设论文 - 图文
- 2016年贵州省普通高中学业水平物理模拟试卷(解析版)
- 用友java面试题(附答案)
- 2005-2013年上海市大同中学杯初中物理竞赛初赛试卷及答案 - 图文
- 深圳市国家税务局办税指南
- 进出口货物征税管理办法条文及释义
- 科目一理论考试题900道 - 图文
- 机械制造与自动化本科毕业设计论文-数控车床的改造
- 2016年五年级上册写字教案完整通过版
- 涉外谈判与国内谈判有何异同点,简要说明。(出自第七单元)
- 小学班主任培训讲稿
- 2011届高考复习最新6年高考4年模拟分类汇编:专题二十一+
- 好用
- 上机
- 题库
- 二级
- 语言
- 绝对
- 计算机