计算机二级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 /*如果分数低于平均分,则将此分数放入below数组中*/ below[j++]=score[i]; return j;

/*返回低于平均分的人数*/ }

二级 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二级 C_第41套上机题

【参考答案】将形参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(maxs) max=h->s; h=h->next; }

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 {t=a[j];a[j]=a[j+1];a[j+1]=t;} /*按分数的高低排列学生的记录,

高分在前*/ }

二级 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 {*max=a[i];*d=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; }

本文来源:https://www.bwwdw.com/article/2a8g.html

Top