搜档网
当前位置:搜档网 › 2012年9月全国计算机二级C语言上机题库(全)

2012年9月全国计算机二级C语言上机题库(全)

2012年9月全国计算机二级C语言上机题库(全)
2012年9月全国计算机二级C语言上机题库(全)

2012年9月全国计算机等级考试二级C语言上机题库及答案

第1套

一、填空

给定函数的功能是调用fun 函数建立班级通

讯录。通讯录记录每位学生的编号,姓名和

电话号码。班级的人数和学生的信息从键盘

读入,每个人的信息作为一个数据块写到名

为答案yfile5.dat 的二进制文件中。

答案:1. STYPE 2. FILE 3. fp

二、修改

先将在字符串s 中的字符按正序存放到t

串中,然后把s 中的字符按逆序连接到t

串后面。

答案:1. for(i = 0 ; i < sl ; i++) 2. t[2*sl] =` 0`; 三、程序

将两个两位数的正整数a,答案合并成一个

整数放在c 中。合并的方式是:将a 数的十

位和个位数依次放在 c 数的千位和十位上,答案数的十位和个位数依次放在c 数的百

位和个位上。

答案:*c=(a/10)*1000+(b/10)*100+(a%10)*10

+(b%10);

第 2 套

一、填空

从键盘输入若干行文本(每行不超过80 个字

符),写到文件答案yfile4.txt 中,用-1 作

为字符串输入结束的标记。然后将文件的内

容读出显示在屏幕上。文件的读写分别有自

定义函数ReadText 和WriteText 实现。

答案:*fw str str

二、修改

从低位开始取出长整形变量s 中的奇数位

上的数,依次构成一个新数放在t 中,高位

仍放在高位,低位仍放在低位。

答案:long *t ,sl = sl*10;

三、程序

将两个两位数的正整数a,答案合并成一个

整数放在c 中。合并的方式:将 a 数的十位

和个位数依次放在 c 数的千位和十位上,答

案数的十位和个位数依次放在 c 数的百位

和个位上。

*c=(b/10)*1000+(a%10)*100+(b%10)*10

+(a/10);

第3 套

一、填空

将自然数1~10 以及它们的平方根写到名为

答案yfile3txt 的文本文档中,然后再顺序读

出显示在屏幕上。

答案:(1)fp (2)fclose(fp) (3)fname

二、修改

将n 个无序整数从小到大排序。

答案:for(i=j+1;i

三、程序

将两个两位数的正整数a,答案合并成一个

整数放在c 中。合并的方式是:将a 数的十

位和个位数依次放在 c 数的千位和十位上,

答案数的十位和个位数依次放在c 数的百

位和个位上

*c=(b%10)*1000+(a%10)*100+(b/10)*10

+(a/10);

第4套

一、填空

调用函数fun 将指定源文件中的内容复制

到指定的目标文件中,复制成功时函数返回

值为1,失败时返回值为0,在复制的过

程中,把复制的内容输出到终端屏幕。主函

数中源文件名放在变量sfname 中,目标文件

名放在变量tfname 中

答案:“r”fs ft

二、修改

将长整形数中每一位上为偶数的数依次取出,构成一个新数放在t 中。高位仍在高位仍在

低位。

答案:if(d%2==0) s /= 10;

三、程序

将两个两位数的正整数a,答案合并成一个

整数放在c 中。合并的方式是:将a 数的十

位和个位数依次放在 c 数的千位和十位上,

答案数的十位和个位数依次放在c 数的百

位和个位上。

答案:*c=(a%10)*1000+(b/10)*100+(a/10)*10

+(b%10);

第 5 套

一、填空

把形参x 的值放入一个新结点并插入到链

表中,插入后结点数据域的值仍保持递增有

序。

答案:x p s

二、修改

计算正整数num 的各位上的数字之积。

答案:long k=1; num/=10 ;

三、程序

计算n 门课程的平均分,计算结果作为函数

值返回。

答案:int i; float ave=0.0; for(i=0; i

ave=ave+a[i] ; ave=ave/n; return ave;

第 6 套

一、填空

给定程序中已建立一个带有头结点的单向链

表,在答案ain 函数中将多次调用fun 函数,没调用一次fun 函数,输出链表尾部结点中

的数据,并释放该节点,是链表缩短。

答案: next t->data t

二、修改

将字符串中的字符按逆序输出,单补改变字

符串中的内容。

答案:void fun (char *a) printf("%c", *a) ;

三、程序

比较两个字符串的长度(不得调用c 语言提

供的求字符串长度的函数)函数返,回较

长的字符串。若两个字符串长度相同,则返

回第一个字符串。

答案:int i; char *p=s , *q=t; int n=0,m=0;

while(*p) {n++;p++;} while(*q) {m++;q++;}

if(n>=m) p=s; else p=t; return p;

第7 套

一、填空

删除链表中数据域值相同的结点,使之只保

留一个

答案: q next next

二、修改

用选择法对数组中的n 个元素按从小到大

的顺序进行排序。

答案: p = j; p=i;

三、程序

求出1 到答案之间(含答案)能被7 或11

整除的所有整数放在数组a 中,通过n 返回

这些数的个数。

答案: int i ,j=0; *n=0 ; for(i=1 ; i<=m; i++)

if(i%7==0|| i% 11 == 0) { a[j]=i; j++;} *n=j;

第8 套

一、填空

在带有头结点的单向链表中,查找数据域中值为ch 的结点。找到后通过函数值返回改结点在链表中所处的顺序号;不存在,函数返回0 值

答案: NULL n head ,ch

二、修改

删除p 所指字符串中的所有空白字符, 输入字符串是用“#”结束输入。

答案: for(i=0,t=0;p[i];i++) c[t]='\0';

三、程序

将ss 所指字符串中所有下标为奇数位置上

的字母转换成大写

答案: int i ; for(i=1;i< strlen(ss) ; i+=2)

{if(ss[i] >='a'&&ss[i] <= 'z') ss[i] - =32 ;}

同时ASCII 值也为偶数的字符外,其余的全部删除:串中剩余字符所形成的一个新串放在t 所指的数组中

答案: int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i += 2) if(s*i+ % 2 == 0) t*j+++ = s*i+ ; t*j+ =’\ 0’ ;

第9 套

一、填空

统计出带有头结点的单向链表中的个数,存放在形参n 所指的存储单元中。

答案: *n next head

二、修改

求出s 所指字符串中最后一次出现的t 所指子字符串的地址,通过函数返回值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL

答案: a = NULL; if(* r ==*p)

三、程序

将s 所指字符串中除了下标问为偶数,同时ASCII 值也为偶数的字符外,其余的全部删除:串中剩余字符所形成的一个新串放在t所指的数组中

答案:int i,j=0; for(i=0; I

(s[i]%2==0) t[j++]=s[i]; t[j]=‘\0’;

第10 套

一填空

计算出带有头结点的单向链表中各结点数据域中值之和作为函数的返回值。

答案: data next head

二、修改

将s 所指字符串中出现的与t1 所指字符

串相同的字串全部替换成t2 所指字符串,

所形成的新串放在w 所指的数组中,在此

处,要求t1 和t2 所指字符串的长度相同。

答案: while(*r) *a=*r ;a++; r++;

三、程序

将s 所指字符串下标为偶数的字符删除,串

中剩余字符形成的新串放在t 所指的数组

答案: int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2)

t[j++] = s[i] ; t[j] =`\ 0 `;

第11 套

一填空

找出指定编号人员的数据作为函数值返回,

由主函数输出,若指定编号不存在,返回数

据中的编号为空串

答案: STU std[i].num std[i]

二、修改

从s 所指字符串中,找出与t 所指字符串

相同的字串的个数作为函数返回值

答案: r++; p++;if(*r==’\0’ )

三、程序

将s 所指字符串中ASCII 值为偶数的字符

删除,串中剩余字符形成一个新串放在t 所

指的数组中

答案: int i, j = 0 ; for(i = 0 ; i < strlen(s); i++)

if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ;

第12 套.

一、填空

找出指定出生年份的人员,将数据放在

形参k 所指的数组,由主函数输出,有

函数值返回满足指定条件的人数

答案: std[i].year std[i] n

二、修改

读入一个整数k(2《k《1000),打印她的所有因子

答案: 分号去掉or Isprime (int n) if (!( n%i ))

三、设计

找出成绩最高的学生记录,通过形参指针传回主函数

答案: int i, max = a[0].s, j = 0; for(i = 1 ; i < N ; i++)

if(max < a[i].s) { j = i ; max = a[i].s ; } *s = a[j] ; 第13 套.一、填空

给定程序。将该学生的各科成绩都乘。以一个系数 a

答案: STU score[i] &std

二、修改

求k!(k<13),所求阶乘的值作为函数值返回,

答案: if ( k>0) else if(k= =0)

三、程序

使数组左下三角元素的值乘以n

答案: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] *= n ;

第14 套

一、.填空将形参所指结构体数组中的三个元素按num 成员进行升序排列

答案: *std PERSON std

二、修改

将m 个字符串连接起来组成一个新串,放入pt 所指存储区中

答案: int k,q,i; pt[i]=str[k][i];

三、程序

使数组左下三角元素中的值全部值0

答案: int i, j; for(i = 0 ; i < N ; i++) for(j = 0 ; j <= i; j++) a[i][j] =0;

第15 套

一、.填空

将形参std 所指结构体数组中年龄最大者的数

据作为函数值返回,并在主函数中输出

答案: *std std[i].age https://www.sodocs.net/doc/6d11415946.html,

二、修改

实现两个整数的交换

答案:void fun( int *a,int*b) t t= *b; *b= *a ; *a = t; 三、程序

请编写一个函数、指向一个M 行N 、tt 列的二维数组,求二维数组每列中最小元素,并以此放入pp 所指一维数组中。二维数组中的数已在主函数中赋予

答案: int i,j, min, k ; for(i = 0 ; i tt[j][i])

{ min=tt[j][i] ; k = j ; } pp[i] = tt[k][i] ; }

第16 套

一、.填空

程序通过定义。输出这位学生的信息

答案: tt tt.score[i] std

二、修改

求出数组中最大数和次大数,并把最大数和a【0】中的数对调,次最大数和a 【1】中的书对调

答案: m=i; if(a[k]>a[m] )m=k;

三、程序请编写一个程序。是一个大与10 的。w 无符号整数,若w 是n 为的整数,函数求出w 的低n-1 位的数作为函数值返回

答案: unsigned t,s=0, s1=1,p=0; t=w; while(t>10)

{if(t/10) p=t%10; s=s+p*s1; s1=s1*10; t=t/10;} return s;

第17 套

一、.填空

对形参ss 所指字符串数组中的M 个字符串按长度由短到长进行排序。ss 所指字符串数组中共有M 个字符串,且串长《N

答案: i+1 k=j t

二、修改判断ch 中字符是否与str 所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后

答案: void fun(char *str,char ch) if(*str != ch)

str*1+=’\0’;

三、设计

请编写一个函数把s 所指字符串中的内容逆值

答案: char b[N] ; int i = 0, j ; memset(b,0,N); for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ; strcpy(s,b);

第18 套

一、填空

求出形参ss 所指的字符串数组中最长字符串的长度,其余字符串左边用字符* 补齐,使其与最长的字符串等长,字符串数组中共有M 个字符串答案: k len ss[i][j]

二、修改计算整数n 的阶乘

答案: result*=n--; return result;

三、程序

从s 所指的字符串中删除给定字符。同一个字母的大小写按不同字符处理

答案: char*p=s; int i = 0; while(*p) {if(*p!= c) s[i++] = *p ; p++;} s[i] =’\ 0 ‘;

第19 套

一、.填空

求出形参ss 所指字符串数组中最长字符串的长度,将其余字符串右边用字符* 补齐,使其与最长的字符串等长。Ss 所指的字符串数组中共有M 个字符串

答案: ss[i] n+j 1 二、修改

将p 所指字符串中每个单词的最后一个字母改成大写

答案:if(*p==’ ’) *(p-1)=toupper(*(p-1));

三、程序请编写函数fun 对长多为7 个字符的字符串,除首,尾字符外,将其余5 个字符按ASCII 降序排列

答案: char t ; int i, j ; for(i = 1 ; i < num-2;i++)

for(j=i+1;j

s[j]=t ;}

第20 套

一、.填空

求ss 所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n 所指变量中。Ss 所指字符串数组中共有M 个字符串

答案: [N] len *n=len

二、修改

根据形参答案,计算如下公式的值

答案: t +=1.0/i; return t;

三、程序

编写一个函数。该函数可以统计一个长度为2 的字符串在另个字符串中出现的次数

答案: int cnt = 0; char *p = str, *q ;

while(*p){q=strstr(p,substr); if(q==NULL)break;

p=q+strlen(substr); cnt++; } return cnt ;

第21 套

一、.填空

求ss 所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n 所指变量中

答案: M < k

二、修改

将tt 所指字符串中的小写字母都改为对应的大写字母,其他字符不变答

案:if((‘a’<=tt*i+)&&(tt*i+<=’z’)) tt*i+ -= 32;

三、程序

将大于1 小于整数m 的非素数存入xx 所指数组中非素数的个数通过k 传回

答案:int i,j; int t=0; for (i=2;i

将s 所指字符串中的所有数字字符转移到所有非数字字符之后,并保持数字字符和非数字字符

串原有的前后次序

答案: j++ s[i]=t1[i] j

二、修改

用冒泡法对6 个字符串由小到大的顺序进行排序

答案: for(j=i+1 ;j<6 ;j++)*(pstr + i)= *(pstr + j);

三程序

求出ss 所指字符串中指定字符的个数,并返回此值

答案: int cnt = 0 ; char *p= ss ; while(*p) { if(*p == c) cnt++ ; p++ ;} return cnt;

第23 套

一、填空

在形参所指字符串中的每个数字字符之后插入一个*号

答案: && 0 s[j]

二、修改

根据整形形参m,计算如下公式的值

答案:for(i=2;i <=m;i++) y+=1.0/(i*i);

三程序

实现B=A+A’ 即把矩阵A 加上A 的转置,存放到B 中

答案: int c[3][3] ; int i, j ; for(i = 0 ; i < 3 ; i++) for(j =

0 ; j < 3 ; j++) { c[i][j] = a[j][i] ; b[i][j] = a[i][j] + c[i][j] ; } 第24 套

一、填空

统计形参s 所指字符串中数字字符出现的次数,并存放在形参t 所指的变量中,最后在主函数中输出。

答案: s*i+ ‘9’ *t=n

二、修改

通过某种方式实现俩个变量值的交换,规定不予许增加语句和表达式

答案: t = *x ; *x = y ; return(t) ;

三、程序

求出1 到1000 之间能被7 或11 整除,但不能同时被7 和11 整除的所有整数并将他们放在 a 所指的数组中,通过n 返回这些数的个数答案: int i ; *n = 0 ; for(i = 7 ; i < 1000 ; i++) if(((i % 7) == 0 || (i % 11) == 0) && (i % 77) != 0) a[(*n)++] = i ; 第25 套

一、填空

把形参s 所指字符串中下标为奇数的字符右移

到下一个奇数的位置,最后边被移除字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动

答案: 1 s[k] c

二、修改

求s=aa…aa-….aaa-aa-a

答案: long s=0, t=0; t=t/10;

三、程序

请编写一个函数。。统计在tt 所指字符。串中’a’到’z’26 个小写字母各自出现的次数,并依次放在pp 所指数组中

答案: char *p = tt ; int i ; for(i = 0 ; i < 26 ; i++) pp[i] =

0 ; while(*p ) { if(*p >= 'a' && *p <= 'z') pp[*p - 'a'] +=

1 ;p++ ; }

第26 套

一、填空.

对形参s 所指字符串中下标为奇数的字符按ascii 码大小递增排序,并将排序后下标为基数的字符取出,存入形参p 所指字符数组中,形成一个新串

答案: t=I i 0

二、填空

用下面公式求π的近似值,直到最后一项的绝对值小于指定的数为止

答案: while (fabs(t)>=num) t=s/n;

三、程序

删除一个字符串中指定下标的字符,其中,a 指向原字符,删除指定字符后的字符串存在 b 所指的数组中,n 中存放指定下标

答案: int p,m=0; for(p=0;p

,b*m+=a*p+; m++;- b*m+=’\0’;

第27 套

一填空

在形参所指字符串中寻找一个字符串与参数 c

相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理

答案: 0 0 c

二修改

计算数组元素中值为正数的平均值

答案: double sum=0.0; sum/=c;

三设计

根据以下公式s,计算结果作为函数返回值,n 通过形参传入

答案: int k; float str =1.0, sum=1.0; for(k=2;k<=n; k++) { sum =sum+k; str =str+1/sum;} return str; 第28 套

一填空

有N*N 的矩阵,根据给定的m 的值,左将每行元素中的值均右移m 个位置,边置为0

答案: i++ m m

二修改

计算并输出high 以内最大的10 个素数之和。High 的值由主函数传给fun 函数

答案: while((2<=high) && (n<10)) yes=0; break;

三设计

利用一下所示的简单迭代方法求方程:

答案: float x0, x1=0.0; do{x0=x1;

x1=cos(x0);}while(fabs(x0-x1)>0.000001 ); return x1; 第29套

一填空

将N*N 的矩阵中元素值按列右移1 个位置,右边被移出矩阵的元素绕回左边

答案: N N-1 0

二修改

计算并输出下列的前N 项之和Sn,Sn+1 大于q 为止,q 的值通过形参传入

答案: s=s+(n+1.)/n; return t;

三设计

求Fibon….数列中大于t 的最小的一个数,结果由函数返回,

答案: int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ;

第30 套

一填空

有N*N 矩阵,将矩阵的外围元素顺时针逆转,操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行。临时数组中的元素成为最后一列

答案: 0 j- - j

二修改

计算s=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f( n)的值,答案: double f(double x) return s ;

三设计

编写函数fun,他的功能是计算s=ln(1)+ln(2.)..ln(m)开根号

答案: double s = 0.0 ; int i ; for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ; s = sqrt(s) ; return s ;

第31 套

一填空有N*N 矩阵,以主对角线为对称线,对称元素

相加并将结构存放在左下三角元

素中,右上三角元素之位0

答案: [N] t[i][j] t[j][i]

二修改计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)

的值。其中x 和y 的值不等,z 和y 的值不等答案: ((m)/(n)) return (value);

三设计将字符串中的前导*号全部删除,中间和尾部的*号不删除答案: int j=0; char *p = a ;

while(*p == '*') p++ ; while(*p) {a[j++] = *p;p++; }

a*j+=’\0’ ;

第32 套

一填空

将N*N 矩阵主对角线元素中的值域反向对角线

对应位置上的元素中的值交换

答案: t[ ][N] i=0;i

二修改

利用折半查找法查找整数答案在整数数组的位置。若找到,返回其下标;反之,返回-1

答案: int fun(int a[],int m) else if (m>a[mid])

三设计

除了尾部的*号外,将字符串中的*号全部删除,形参p 以指向字符串中最后的一个字符,答案: char *q=a; int j=0; while(*q && q

a*j+++ = *q;q++ ; - while(*p) a*j+++=*p++; a*j+=’\0’;

第33 套

一填空

计算N*N 矩阵的主对角线元素和反向对角线元

素之和,并作为函数值返回,

答案: sum=0 t[i][i] 1

二修改

用二分法求方程的一个根,并要求绝对误差不超过0.001

答案: double r; while(fabs(n-m)>0.001)

三设计

除了尾部的*号外,将字符串中的*号全

答案: int j=0; char *q=a; while(*q &&q

*q++ ; while(*h&&*p &&h < p) { if(*h != '*') a[j++] =

*h ; h++;- while(*p) a*j+++ = *p++ ; a*j+ = ‘\0’;

第34 套

一填空

把形参a 所指数组中的奇数按原顺序依,a【1】….中,偶数从次存放到a【0】数组中删除,奇数个数通过函数值返回

答案: 1 j++ j

二修改

求出连个非零正整数的最大公约数,并作为函数值返回

答案: t=a;a=b;b=t; return (b);

三设计

除了尾部的*号外,将字符串中的*号全部删除,形参答案以指向字符串中最后的一个字母,答案: int j =0 ; char *p=a; while(*p) {if(*p!='*')

a[j++]=*p;p++; } a[j]=`\0`;

第35 套

一填空

把形参所指数组中的偶数按原顺序依次存放到a 【0】、a【1】,…中,奇数从数组中删去,偶数个数通过函数值返回

答案: a[i]%2 a[j] j

二修改

按一下递归公式求函数值

答案: int fun(int n ) if(n==1)

三设计

使字符串尾部的*号不得多于n 个;若多于n 个,则删除多于的*号,若少于n 个,则什么也不做,字符串中间和前面的*号不删除

答案:int i=0,j=0; char *p,*t; p=t=a; While(*t) t++; t--;while(*t==’*’){j++;t--;}t++; if(j>n)

,while(*p&&p

第36 套

一填空

把形参a 所指数组中的最小值放在元素a【0】中,按着把形参a 所指数组中的最大值放在a【1】元素中;在把a 所指数组中的次小元素放在a 【2】所指的数组中,把a 所指的数组元素中的次大放在a【3】;其余以此类推

答案: a[i] a[j] a[j]

二修改

用递归算法计算非波拉且数列中第n 项的值,答案:switch(g) case 1:return 1;case 2:return 1;

三设计

求学生的平均分放在记录的ave 成员中

答案: int i ; for(i =0 ; i < N ; i++) a->ave =

a->ave+a->s[i] ; a->ave /= N ;

第37 套

一填空

把形参a 所指数组中的最大值放在【1】 a 中,按着求出a 所指数组中的最小值放在a【1】数

组中;把a 所指数组元素的次大值放在a【2】中,把a 数组元素中【3】中;其余以此类推。的次小值放在a

答案: *a 2 i+1

二修改

按顺序给s 所指数组中的元素赋予从2 开始的

偶数,在按顺序对每五个元素求个一平均值,并将这些值依次存放在w 所指的数组中,若s 所

指数组元素的个数不是5 的倍数,多于部分忽略不计

答案: sum=0.0; if((i+1)%5==0)

三设计

把低于平均分的学生数据放在答案所指的数组中,低于平均分的学生人数通过形参n 传回,平均分通过函数值返回

答案: int i ; double ave = 0.0 ; *n = 0 ; for(i = 0; i < N ;

i++) ave = ave + a[i].s ;

ave/=N;for(i=0;i

n]=a[i];(*n)++;} return ave ;

第38 套

一填空

将形参a 所指的数组中的前半部分元素中的值

和后半部分元素中的值兑换,形参n 中存放数组中数据的个数,若n 为奇数,则中间的元素不动答案: 1 i a[p+i]

二修改

把主函数中输入的3 个数,最大的放在 a 中,最小的放在c 中,中间的放在 b 中答案: float k;

if(*a<*c) 三设计把分数最高的学生的数据放在

h 所指数组中,

答案: int i, max = a[0].s, n=0; for(i = 1; i < N; i++)

if(max < a[i].s) max = a[i].s ; for(i = 0; i < N; i++)

if(max==a[i].s) b[n++] = a[i] ; return n;

第39 套

一填空

逆置数组元素中的值。

答案: n/2 i a[n-1-i]

二修改将一个由八进制数字字符组成的字符串

转换为与其面值相等的十进制整数,规定输入的字符串最多只能包含5 为八进制数字字符

答案: n=*p-`0`: n=n*8+*p-‘0’;

三设计

函数返回指定学生的学生数据,指定的学号在主

函数中输入,若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回

答案: STREC c ; int i ; c.num[0] = '\0' ; c.s = -1 ; for(i =

0 ; i < N ; i++) if(strcmp(a[i].num,b)==0)

{ strcpy(c.num, a[i].num);c.s=a[i].s; break ; } return c ; 第40 套

一填空

函数fun 的功能。进行数字字符转换,若形参ch 中是数字字符0-9,则0 转换为9,转换为8,转换为7…9 转换为1 2 0;其他字符则保持不变;转换后的结果作为函数值返回

答案: char ch<='9' ‘0’

二修改

将p 所指字符串中的所有字符复制到b 中,每复制三个字符有插入一个空格

答案: b*k+=*p; b*k+++=’ ’;

三设计

求出平均分,由函数值返回

答案: STREC *p=h->next; double av=0.0;int n =

0 ;while(p!=NULL) {av=av+p->s ; p=p->next; n++; } av /= n ; return av;

第41 套

一填空函数fun 的功能。进行字母转换,其他

字符则保持不变,

答案: && 'A' ch

二修改

给一维数组a 输入任意4 个整数,并按下列的规律输入

答案:void fun(int *a) a[j]=a[j-1];

三设计

计算并输出给定整数n 的所有因子之和,规定n 的值不大于1000

答案: int s = 0, i ; for(i = 2 ; i < n ; i++) if(n % i == 0) s

+=i ; return s ;

第42套

一填空

计算f(x)=1+x-x2/2…(-1)n-1xn/n!前n 项

答案: 1 -1 t

二修改从3 个红球,5个白球,6个黑球中任意取出8 个作为一组,进行输出。每组,可以没有黑球,但必须有红球和白球,

答案: for(i=1; i<=3; i++) if(k>=0 && k<=6)

三设计

计算Sn=1+1/1!+1/2!...+1/n! 答案:double s=1;long t=1;int i; for(i=1;i<=n;i++) {t=t*i; s+=1./t; } return s;

第43 套

一填空

计算f(x)=1+x-x2/2!..(-1)xn/n! 至到|xn/n!|<10-6 答案: x n fabs(t)

二修改

求整数x 的y 次方的低3 为的值,

答案: <= %

三设计

计算并输出x《0.97 时下列多项式的值

答案: int n=1; double sn=1, double xn=1;xn1=0; while(fabs(xn-xn1)>=0.000001){xn=xn*

x*(0.5-n+1)/n; n+=1; sn+=xn; } return(sn);

第44 套

一填空

计算f(x)=1+x+x2/2!...xn/n! 的前n 项,

答案: 1 1 i

二修改

找出100 至n 之间三位数字相等的所有整数,把这些整数放在s 所指数组中,个数作为函数值返回

答案: k=i; c=k%10;

三设计

计算并输出给定10 个数的方差

答案: int i; double avg=0.0, sum=0.0,abs=0.0, fc; for (i=0;i<10;i++) sum+=x[i];avg=sum/10;for (i=0;i<10;i++) abs+=(x[i]-avg)*(x[i]-avg); fc=sqrt(abs/10) ; return fc; 第45 套

一填空

计算f(x)=1+x+x2/2!+..xn/n!至到|xn/n!|<10-6

答案: x n t

二修改

计算n 的5 次方的值,通过形参指针传回主函数;计算该值的个位,十位,百位上数字之和作为函数值返回

答案: d=1; s=0; d=d/10;

三设计

计算并输出给定数组中每相邻两个元素之平均值的平方根之和

答案:int i; double avg=0.0,sum=0.0;

for(i=0;i<8;i++){avg=(x[i]+x[i+1])/2; sum+=sqrt(avg);} return sum;

第46 套

一填空

统计所有小于等于n 的素数的个数,素数的个数作为函数值返回

答案: j=3 i j

二修改

计算前n 项的累加和;没累加一次把被4 除后余2 的当前累加值放入数组中,

答案: sum=0;j=0; if(sum%4==2)

三设计

计算Sn=1-2/2+1/3-1/4..+1/2n-1-1-1/2n

答案: int i; double sum=0.0; if (n>1 && n<=100) { for(i=1; i<=n; i++) sum+=1.0/(2*i-1)-1.0/(2*i);} return sum;

第47 套

一填空

统计长整形数n 的各个位上出现数字1、2、3 的次数,并通过外部变量c1、c2、c3 返回主函数答案: n%10 break break

二修改

统计一个无符号整数中各个数字值为零的个数,通过形参传回主函数,把整数中最大的数字值作为函数值返回

答案:if( t==0) *zero=count;

三设计

计算S=1+1/1*2+1/1*2*3…

答案: double s=0, t=1; int i ; for(i=1; i<=n; i++) {t *= i; s+= 1./t;} return s;

第48 套

一填空

首先从素数2 开始。用筛选法可得到2-n 之间的所有素数,方法是:首先从素数2 开始,将所有2 的倍数的数……

答案: a[i] a[i] 0

二修改

为一个偶数寻找两个素数。这两个素数之和等于该偶数,并将各两个素数通过形参指针传回主函数

答案: y=1; d=a-i;

三设计

计算并输出n 以内的能被5 或9 整除的所有自然数的倒数之和

答案: 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; 第49 套一填空甲乙丙丁四人同时开始放鞭炮,甲每个t1 秒放一次……

答案: i t++ count

二修改

根据输入的三个边长,判断能否构成三角形,构成的是等边三角形,还是等腰三角形。若能构成等边三角形,函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0

答案: int fun(int a,int b,int c) else return 1;

三设计

计算3 到n 之间所有素数的平方根之和

答案: int i,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j

第50 套

一填空

从三个形参中找出中间的那个数,作为函数值返回

答案: a a b

二修改

首先将大写字母转换为对应的小写字母,若小写字母为a-u 字将其转换为其后的第5 个字母,若小写字母为v-z,使其值减21.转换后的小写字母作为函数值返回

答案: c=c+32; c=c+5;

三设计

计算S=1+(1+|2|)+(1+|2|+|3|)…(!+|2|..|n|)

答案: int i; double fac=1.0; double

sum=1.0;for(i=2;i<=n;i++) { fac+=sqrt(i); sum+=fac; } return sum;

第51 套

一填空

找出1000 至x 之间个位上数字之和为15 的所有整数,然后输出:符合条件的整数个数作为函数值返回

答案: 0 x t++

二修改

先将s 所指字符串中的字符按逆序存放到t 所指字符串中,然后把s 所指字符正序连接到t 所指串的后面

答案: int i,s1; t[i] = s[sl-i-1];

三设计

将ab 中的两个两位正整数合并形成一个新的正

整数放在c 中,合并方式是:将 a 中的十位和个位数依次放在变量c 的百位和个位上,b 中的十位数和各位数一次放在变量 c 的千位和十位上

答案:*c=(b/10)*1000+(a/10)*100+(b%10)*10+ (a%10);

第52 套

一填空

找出100-999 之间所有整数中各位上数字之和为x 的整数,然后输出,符合条

答案: 999 t/10 x

二修改

从低位开始取出长整形变量s 中的偶数为上的数,依次构成一个新数放在t 中,

答案: void fun(long s,long *t) while(s>0)

三设计

按分数的高低排列学生记录,高分在前

答案: STREC tmp; int i,j; for(i = 0; i < N; i++)for(j = i+1; j < N; j++) if(a[i].s

第53 套

一填空

将形参n 中,各位上位偶数的数取出,并按原来从高到低的顺序组成一个新的数,并作为函数值返回

答案: 1 s i*10

二修改

输出M 行M 列的整数方阵,然后求两条对角线上元素之和,返回此和数

答案:int fun(int n,int xx*+*M+) Printf(“%4d”,xx*i+*j+); 三设计

将ab 中的两个两位正整数合并形成一个新的正整数放在c 中,合并方式是:将 a 中的十位和个位数依次放在变量c 的百位和个位上,b 中的十位数和各位数一次放在变量 c 的千位和十位上

答案:*c=(a/10)*1000+(b%10)*100+(a%10)*10

+(b/10);

第54 套

一填空

将形参n 中,个位上位偶数的书取出,并按原来从高到低相反的顺序组成一个新的数,并作为函数值返回

答案: 0 x*10 n/10 二修改

将长整形数种每一位上为奇数的依次取出,构成一个新数放在t 中,高位仍在高位,低位仍在低位

答案: *t=0; if(d%2!=0)

三设计

实现两个字符串的连接把答案2 所指的字符串

连接到答案1 所指的字符串后

答案: char *p=p1; while(*p)p++; while(*p2)

*p++=*p2++; *p=0;

第55 套

一填空

将形参n 所指变量中,各位上位偶数的数去除,剩余的书按原来从高到底的顺序组成一个新的数,并通过形参指针n 传回所指变量

答案: 10 0 x

二修改

计算n!

答案: if (n == 0) result *=n--;

三设计

将一个数字字符串转换为一个整数

答案:long s=0,t; int i=0,j,n=strlen(p),k,s1; if(p[0]==`-`) i++; for(j=I;j<=n-1;j++) {t=p[j]-`0`; s1=10;

for(k=j;k

第56 套

一填空

计算S=1*3/22…(2*n-1)*(2*n+1)/(2*n)2

答案: 0 n (t*t)

二修改

统计substr 所指子字符串在str 所指字符串中

出现的次数

答案: for(i=0;str*i+;i++) if(substr*k+1+==’\0’)

三设计根据以下pi 的值

II/2=1+1/3+1*2/3*5*7+1*2*3*4/3*%*7*

9…+1*2..*n/3*5..*(2n+1) 求II 的值

答案: double s; float n,t,pi; t=1;pi=0;n=1.0;s=1.0; while((fabs(s))>=eps) { pi+=s;t=n/(2*n+1);s*=t;n++:}

pi=pi*2; return pi;

第57 套

一填空

计算下式前n 项的和作为函数值返回

S=1*3/22-3*5/42+5*7/62…+(-1)n-1(2*n1)*(2*n+1)/(

2*n)2.

答案: 1 2*i (-1)

二修改

判断一个数是否为素数若是返回1 否则返回0 答案:k++ ; if (m==k)

三设计找出一维整形数组元素中最大值和他所在的下标,最大的值和他所在的下标通

答案: int i ; *max=a[0];*d = 0 ; for(i= 1; i < n; i++)

if(*max < a[i]) {*max=a[i]; *d = i;}

第58 套

一填空

给定程序中。

S=3/22-5/42+7/62…(-1)n-1(2n+1)/(2n)2 至

[(2n+1)/(2n)2]<=10-3} 求S

答案: 3. > (2*i+1)

二修改

求下列分数序列前n 项和,结果通过函数值返回主函数

答案: double fun(int n) s=s+(double)a/b;

三设计

求去一个2*答案整型二维数组中最大元素的值,并将此值返回调用函数

答案: int i, j, max=a[0][0]; for(i=0; i<2; i++) for(j=0;

j

一填空

给定程序中

S=1/22+3/22-5/42+7/62…(-1)n-1(2n+1)/( 2n)2 至[(2n+1)/(2n)2]<=10-3} 求S

答案: 0 i++ 2.0*i

二修改

将s 所指字符串的正序和反序进行连接,形成一个新串放在t 所指的数组中

答案: void fun (char *s, char *t) t[2*d] = '\0';

三设计

将s 所指字符串中除了下标为奇数,同事ASCII 值也为奇数的字符之外,其余的所以有字符都删除,串中剩余字符所形成的一个新串放在t 所指的数组中

答案: int i, j = 0 ; for(i = 1 ; i < strlen(s) ; i += 2) if(i% 2==0&& s*i+%2)t*j+++ = s*i+ ; t*j+ = ‘\0’ ;

第60 套

一填空

将形参s 坐直字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回

答案: s[i] k 0

二修改

将s 所指字符串中最后一次出现的与t1 所指字符串相同的字串替换成t2 所指字符串,所形成的新串放在w 所指的数组

答案: while(*w) if(*r==*p)

三设计

将s 所指字符串中ASCII 值为奇数的字符删除,串中剩余字符形成新串放在t 所

答案: int i, j = 0 ; for(i = 1 ; i < strlen(s); i+=2) if(s[i] % 2==0) t[j++] = s*i+ ;t*j+ =’\0’;

第61套

一填空

将形参s 所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理有新字符串的首地址作为函数值返回

答案: j k p

二修改

首先把b 所指字符串中的字符按逆序存放,然后将 a 所指字符串中的字符和答案所指字符串中的字符。按排列的顺序交叉合并到 c 所指数组中,答案: while(i

三设计

将s 所指字符串中下标为偶数同时ASCII 值为奇数的字符删除,所指串中s

答案: int i, j = 0 ; for(i = 0 ; i < strlen(s) ; i++) if(!((i % 2) ==0 && (s*i+ % 2))) t*j+++ = s*i+ ; t*j+ = ‘\0’ ; 第62 套一填空计算形参x 所指数组中N 个数的平均答案: 0 x[i]/N j++

二修改

根据整型变量m,计算如下公式

答案: double fun(int m) for(i=100;i<=m;i+=100)

三设计找出成绩最低的学生记录,通过形参返回主函数

答案: int i, min = a[0].s, j = 0; for(i = 1 ; i < N ; i++)

if(min > a[i].s) { j = i ; min = a[i].s ; } *s = a[j] ;

第63 套

一填空

计算x 所指数组中N 个数的平均值,平均值通过形参返回主函数,将小于平均值的最接近平均值的数作为函数值返回,在主函数中输出

答案: *av i x[j]

二修改

根据整形形参n,计算如下公式

答案: float fun(int n) for(i=2;i<=n;i++)

三设计

使数组右上三角元素中的值乘以m

答案: int i, j; for(i = 0 ; i < N ; i++) for(j= i ; j< N ; j++) a[i][j] *= m ;

第64 套

一填空

计算形参x 所指数组中N 个数的平均值,将所指数组中大于平均值的数据移至数组前部,小于等于平均值的数据移至x 所指数组的后部,平均值作为函数值返回,在函数中输出平均值和移动和后的数据。

答案:s/N j++ -1

二修改

读入一个英文文本行,将其每个单词的第一个字母改写成大写,然后输出文本。

答案:#include upfst(char *p)

三设计

求出数组周边元素的平均值并作为函数值返给主函数中的s.

答案;int i,j,n=0; double sum=0;

for(i=0;i

n+=2;}for(i=1;i<=N-1;i++){sum+=w[i][0 ]+w[i][N-1];n+ =2;}return sum/n;

第65 套

一填空

计算形参x 所指数组中N个数的平均值,将所指数组中小于平均值的数据移至数组前部,大于等于平均值的数据移至x 所指数组的后部,平均值作为函数值返回,在函数中输出平均值和移动和后的数据。

答案:x[i]/N j++ i++

二修改

统计字符串中个元音字母的个数。

答案:num[k]=0; switch(*s)

三设计

请编写函数fun 求出二维数组周边元素之和,作为函数返回值,

答案:int tot=0, i, j; for(i=0;i

tot+=a[i][N-1];} return tot;

第66 套

一填空给定程序中将a 和b 所指的两个字符串转换成面值相同的整数,进行相加作为函数值返回,规定字符串中只含9 个以下数字字符。

答案; `0` s++ ctod(a)+ctod(b)

二修改分别统计字符串中大写字母和小写字母的个数。

答案:void fun(char *s,int *a,int *b) *a=*a+1

*b=*b+1

三设计

请编写一个函数fun 使实型数保留2 位小数,并对第三位进行四舍五入

答案:long w ; w=h*1000+5; return(float)w/1000;

第67 套

一填空

调用随机函数产生20 个互不相同的整数放在形参 a 所指数组中

答案:N break n

二修改

先从键盘上输入一个3 行3 列矩阵的各个元素的值,然后输出主对角线元素和。

答案:sum=0 scanf(“%d,”,&a*i+[j]);

三设计

编写程序实现矩阵转置。

答案:int i, j,arr[3][3];

memcpy(arr,array,9*sizeof(int)); for(i=0;i<3;i++)

for(j=0;j<3;j++) array[i][j]=array[j][i];

第68 套

一填空

找出N*N 矩阵中每列元素中最大值,按顺序依次存放于形参b 所指的一维数据

答案:a[0][i] < x,y

二修改

交换主函数中的两个变量值

答案void fun (int*x,int*y) t=*x;*x=*y;*y=t;

三设计

编写函数fun。求出小于或等于lim 的所有素数并放在aa 数组中,函数返回所求出的素数个数。答案:int i, j,k=0; for(i=2;i<=lim;i++)

{for(j=2;j<=(i/2);j++) if(i%j==0) break;

if(j>(i/2))aa[k++]= i ;} return k ;

第69 套

一填空

最外层元素全为1。建立一个N*N 矩阵,矩阵元素的过程规律是:最外层的元素的值全部为1;从

外向内第2 层元素全部为2…以此类推

答案:[N] i i+1

二修改将十进制正整数m 转换成看k进制数。并按高位到低位顺序输出。

答案:aa*i+=m%k ; printf(“%d”,aa*i-1]) ;

三设计

编写一个函数fun 从num 个字符串中找出最长的一个字符串,并通过形参指针max 传回该串地址。

答案int i,k=0,maxlen;maxlen=strlen(a[k]);

for(i=1;imaxlen ){maxlen=str len(a[i]);k=i;}} *max=a[k] ;

第70 套

一填空

判定形参a 所指的N*N 的矩阵是否是幻方,若是,函数返回值是1,暴怒是,函数返回至是0。答案; 0 || 1

二修改

更具整型形参m,计算如下公式的值

T=1-1/2-1/3…-1/m

答案:t=t-1.0/i; return t ;

三设计

请编写一个函数。删除字符串中的所有空格

答案: char *p=str ; int i=0; while(*p)

,f(*p!=’ ’)str*i+++=*p; p+=; - str*i+=0;

第71 套

一填空

将 a 所指4*3 矩阵中第k 行的元素与第0 行元素交换。

答案:k N a[k][i]

二修改

读入一个字符串,将该字符串中的所有字符按ASCII 码升序排序后输出。

答案: for(i=strlen(t)-1;i;i--) if(t[j]>t[j+1])

三设计

将ss 所指字符串中的所有下标权威奇数位置上

的字母转换为大写。

答案:char *p=ss; int i=0; while(*p)

{if((i%2)&&(*p>=`a`&&*p<=`z`)) *p-=32; p++; i++;}

第72 套

一填空

将 a 所指3*5 矩阵中第k 列的元素左移到0 列,第k 列以后的每列元素行依次左移,原来左边的各列依次绕到右边。答案:k N-1 temp

二修改

根据形参m 的值,在m 行m 列的二维数组中存放如下所示规律的数据,

答案:void fun(int a[][M],int m) a[j][k]=(k+1)*(j+1); 三设计

将a,中的两个两位正整数合并形成一b个整新的书放在c 中,合并的方式是: 将 a 数的十位和个位数依次放在c 数的十位和千位上,b 中的十位和个位依次放在 c 数的个位和百位上。

答案:*c=(a%10)*1000+(b%10)*100+(a/10)*10

+(b/10);

第73 套

一填空

在3*4 矩阵中找出在行上最大,在列上最小的那个元素,若没有符合条件的元素,则输出相应信息。

答案:j 0 i++

二修改

根据整形形参m 的值,计算如下公式的值。

T=1-1/2*2-1/3*3…-1/m*m

答案:for(i=2;i<=m;i++) y-=1.0/(i*i);

三设计

将低于平均分的人数作为函数值返回,将低于平均数的分数放在below 所指的数组中。

答案:float av=0.0;int i,j=0;for(i=0;i

av+=score[i];av/=m;for(i=0;i

if(av>score[i])below[j++]=score[i]; return j;

第74 套

一填空

把形参s 所指字符串中最右边的n个字符复制到形参t 所指字符数组中,形成一个新串,若s 所指字符串的长度小于n,则将整个字符串复制到形参t 所指字符数组中。

答案:t,s s[i] 0

二修改

找出一个大于形参m 且紧随m 的素数,并作为函数值返回。

答案:if(i%k==0) if(k>=i)

三设计

求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,除数的个数通过形参n返回。

答案:int i ; *n=0; for(i=1;i<=x;i++)

if((x%i==0)&&(i%2))pp[(*n)++]=i;

第75 套

一填空

判断形参s 所指字符串是否是回文,若是,函数值返回1,不是,函数值返回0,回文是正读和反读都一样的字符串。

答案:s -- return 0

二修改

求出一下分数序列的前n 项和2/1,3/2,5/3,8/5…和值通过函数值返回

答案:double fun(int n) c=a;a+=b;b=c;

三设计

将大于形参m 且紧靠m 的k 个元素存入xx 所指的数组中。

答案:int r=0,temp,p,sign=1;

for(temp=m+1;temp

{for(p=2;p

else{sign=0;break}} if(sign==1&&p>=temp)

{if(k>=0){xx[r++]=temp;k--;} else break;}}

第76 套

一填空

计算形参s 所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。

答案:n++ 0 s++

二修改

从n 个学生的成绩中统计出低于平均分的学生人数,此人数有函数值返回,平均分存放在形参aver 所指的存放单元中。

答案:t+=s[k]; *aver=ave;

三设计

请编写函数fun。求出数组中最大元素在数组中的下标并存放在k 所指的存储单元中。

答案:int i ,pos=0,max=*s; for(i=1;i

{if(max<*(s+i)) {max=*(s+i); pos=i;}} *k=pos;

第77 套

一填空

将形参s 所指的字符串中所有ASCII 码制小于97 的字符存放形参t 所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。

答案:*s s++ n

二修改

由形参给定n 个实数,输出平均值,并统计在平均值以上的实数个数。

答案:int j,c=0; double xa=0.0; if(x[j]>=xa)

三设计

根据以下公式求P 的值,结果由函数值带回,M 于n 为两个正整数且要求m>n,P=m!/n!(m-n)!.

答案:float result,temp=1.0; int i ;

for(i=1;i<=m;i++)temp=temp*i;

result=temp;for(temp=1.0,i=1;i<=n;i++)

temp=temp*i; result=result/temp; for(temp

=1.0,i=1;i<=m-n;i++) temp =temp *i; result

=result/temp; return result;

第78 套

一填空

将形参s 所指字符串中的数字字符串转换成对应的数值,计算出这些数值的累加和作为函数值返回。

答案:48 s++ sum

二修改

计算小于形参k 的最大的10 个能被13 或17 整出的自然数之和,

答案:if((k%13==0)||(k%7==0)) }

三设计

求小于形参n 同时能被3或7整出的所有自然数之和的平方根,

答案:double sum=0.0; int i ;

for(i=21;i<=n;i++)if((i%3==0)&&(i%7= =0)) sum+=I; return sqrt(sum);

第79 套

一填空

找出形参s 所指字符串中出现频率最高的字母,并统计出现的次数。

答案;*s 1 k[n]

二修改

求S 的值。S=22/1*3*42/3*5…(2k)2/(2k-1)*(2k+1) 答案:double fun(int k) return s;

三设计

计算并输出下列级数和S=1/1*2+1/2*3…+1/n(n+1) 答案:double s=0.0; int i; for(i=1;i<=n;i++)

s=s+1.0/(i*(i+1)); return s;

第80 套

一填空

利用指针数组对形参ss 所指字符串数组中的字符串按由长到短的顺序排序。并输出排序结果。Ss 所指字符串数组中共有N个字符,且串长小于M。

答案:i ps[j] tp

二修改

计算并输出该数列前n 项的平方根之和。N 的

值通过形参传入。

答案; double fun(int n) return sum;

三设计

编写函数fun 计算下列级数和,和值由函数值返回。S1+x+x2/2!+x3/3!+..+xn/n!

答案:double s=1.0, y=x; int i; long k=1;

for(i=1;i<=n;i++) {k*=i; s+=y/k; y*=x;} return s;

第81 套

一填空

在形参ss…..将形参ss 所指字符串数组中查找与

形参t 所指字符串相同的串,

答案; N I -1

二修改

从整数1 到55 之间,选出能被3整除,且有一位上的书是5的那些数,

答案:a2=k/10; return i;

三设计

将字符串尾部的*号全部删除,前面和中间的*号不删除。

答案:int i=0; char *p,*q; p=q=a; while(*p) p++;p--; while(*p==`*`) p--; while(q<=p) {a[i]=*q; i++; q++;}

a[i]=`\0`;第82 套

一填空

在形参ss 所指字符串数组中,删除所有串长超过k的字符串。函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。

答案:N k ss[i]

二修改

逐个比较p,所指两个字符串对应位置q中的字符,把ASCII值大或等于的字符依次存放到c所指数组中,形成一个新的字符串。

答案:int k=0; while(*p||*q)

三设计

除了字符串前导的*号之外,将串中其他*号全部删除。

答案;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`;

第83套

一填空

在形参ss…..将形参ss 所指字符串数组中,查找含有形参su 答案str 所指子串的所有字符串并输出,若没找到则输出相应信息。ss 所指字符串数组共有N个字符串,且串长小于M

答案: N substr 0

二修改

求三个数的最小公倍数。

答案: int fun(int x,int y, int z ) return j;

三设计

只删除字符串中前导和尾部的*号,串中字母之间的*号都不删除。形参n 给出了字符串的长度,形参h 给出了字符串中前导*号的个数,形参e 给出了字符串中最后*号的个数。

答案: char *p=a ; int j=0,len=0; while(*p) {p++;

len++;} while(j

第84套

一填空

在形参ss….将形参ss 所指字符串数组中,将所有串长超过k 的字符串中右边的字符删除,只保留左边的k 个字符。ss 所指字符串数组中共有N个字符串,串长小于M

答案: [M] N 0

二修改

根据公式求π值,并作为函数值返回。

答案: t=1; return(2*s);

三设计

使字母串中的前导*号不得多于n 个,若多于n 个,则删除多余的*号,若少于或

答案: int i=0,k=0; char *t=a; while (*t==`*`) {k++;t++;} t=a; if(k>n)t=a+k-n; while(*t){a[i]=*t;

i++;t++;}a[i]=`\0`;

第85 套

一填空

程序将形参a 所指结构体变量中的。数据赋给函数中的结构体变量b,并修。

答案: a https://www.sodocs.net/doc/6d11415946.html, score[i]

二修改

从s 字符串中删除所有小写字母c。

答案: s[j++]=s[i]; s[j]='\0';

三设计

将使字母串中的前导*号全部移到字符串的尾部。答案: int i=0,n=0; char *p; p=a; while (*p==`*`)

{n++;p++;} while (*p) {a[i]=*p;i++; p++;} while(n!=0) {a[i]=`*`i++; n--;}a[i]=`\0`;

第86套

一填空

对形参b 所指结构体变量中的数据进行修改,最后主函数中输出修改后的数据。

答案: ->sno ->name &t

二修改

应用递归算法求形参a 的平方根。

答案: double fun(double a,double x0)

if(fabs(x1-x0)>0.00001)

三设计

将字符串中的前导*号全部移到尾部。

答案: double t=0 ; int i ; *n = 0 ; for(i = 0 ; i < N ; i++)t = t + a[i].s ; t = t / N ; for(i = 0 ; i < N ; i++) if(a[i].s > t) b[(*n)++] = a[i] ; return t ;

第87 套

一填空

程序将形参a 中的数据进行修改,把修改后的数据作为函数值返回主函数进

答案: struct student https://www.sodocs.net/doc/6d11415946.html, a.score[i]

二修改

应用递归算法算。删除数列中值为x 的元素。n 中存放的是数列中元素的个数。

答案: if(p==n)return -1; a[i]=a[i+1];

三设计

把分数最低的学生数据放在b数组中,

答案: int i,j=0,min=a[0].s; for(i=1;i

{ if(min>a[i].s) { j=0; b[j++]=a[i]; min=a[i].s; } else if (min==a[i].s) b[j++]=a[i];} return j;

第88 套

一填空

程序将形参a 所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。

答案: struct student * a->score[i] a

二修改

从N 个字符串中找出最长的那个串,并将其地址作为函数返回。

答案: char *fun(char(*sq)[M]) return sp

三设计

将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a 中的十位和个位数依次放在变量c 的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。

答案:*c=(b%10)*1000+(a/10)*100+(b/10)*10+ a%10; 第89 套

一填空

程序将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。

答案: struct student n-1 a[i].name,a[j].name

二修改

在p所指的字符串找出ASCII 码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

答案: q=p+i; while(q>p)

三设计

把指定分数范围内的学生数据放在答案所指的数组中,分数范围内的学生人数由函数值返回。

答案: int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= l && a[i].s <= h) b[j++] = a[i] ; return j ;

第90 套

一填空

程序指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3 分,修改后重写文件中该学生的数据,答案: fp == fp

二修改

利用插入排序法对字符串中的字符按从小到大的顺序进行排序。

答案: n=strlen( aa ); ch=aa[i];

三设计

找出学生的最高分,由函数值返回。

答案: double max=h->s; STREC *p; p=h->next; while(p) { if(p->s>max ) max=p->s; p=p->next; } return max;

第91 套

一填空

给定程序中,用函数指针指向要调用的函数

答案: double f1 f2

二修改

给定程序中将单向链表结点(不包括头结点)数据域为偶数的值累加起来,

答案: p=h->next; p=p->next;

三设计

判断字符串是否为回文?若是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。

答案: int i,n=0,flag=1; flag=1 char*p=str; while(*p) { n++;p++;} for(i=0;i

{flag=0;break;}return flag;

第92 套

一填空

给定程序中将带头结点的单向链表结点数据域中的数据从小到大排序。

答案: h->next p->next >=

二修改

给定程序求出单向链表结点数据域中的最大值,并且作为函数值返回。

答案: p=h->next; p=p->next

三设计

将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中的数据的个数存放在形参n 的所指的存储单元中。

答案: int i,j; for(i=0;i

{b[*n]=*(*(s+i)+j);*n=*n+1;}

第93 套

一填空

给定程序,将不带头结点的单向链表逆置。

答案: NODE* next r

二修改

将s 所指字符串中位于奇数位置的字符或ASCII

码为偶数的字符放入t 所指的数组中

答案:if(i%2||s[i]%2==0) t[j]=`\0`

三设计

将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

答案: int i,j;for(j= 0 ; j < nn ; j++) for(i = 0 ; i< mm ; i++) { b[*n] = *(*(s+i)+j); *n+=1;

第94套

一填空

给定程序中将带头结点的单向链表逆置。

答案: next 0 r

二修改

计算s所指。把s所指的字符串中含有t 的指字符串的数目,并作为函数值返回。

答案: r=t ; if(*r== 0)

三设计

将放在字符串数组中的M个字符串,按顺序合并组成一个新的字符串。

答案: int i ,j,k=0; for(i=0;i

if(*(*(a+i)+j)) {b[k]=*(*(a+i)+j); k++;} else break;

b[k]=`\0`;}

第95套一填空

给定程序中将不带头结点的单向链表结点数据域中的数据从小到大排序。

答案: p->next q p->next

二修改

将s 所指的字符串中的字母转换为按字母序列

的后续字母,其它字符不变。

答案: while(*s) s++;

三设计

移动一维数组中的内容,若数组中有n 个整数,要求把下标从0 到p 的数组元素平移到数组的

最后。答案: int i, j = 0, b[N] ; for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ; for(i = 0 ; i <= p ; i++) b[j++] = w[i] ; for(i = 0 ; i < n ; i++) w[i]= b[i] ;

第96套

一填空

给定程序中,根据形参i的值返回某个函数的值。答案: double f1 f2

二修改

比较两个字符串,将长的那个字符串的首地址作为函数值返回。

答案: char *fun(char *s,char *t)ss++; tt++;

三设计

移动字符串中的内容,移动的规则如下:把第1 到第m 个字符,平移到字符串的最后,把第m+1

到最后的字符移到字符串的前部。

答案: int i; for(i = 0 ; i < m ; i++)fun1(w);

第97套

一填空

给定程序中。将参数给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。

答案: FILE* fp ch

二修改

依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

答案: s[j++]=s[i]; s[j]=`\0`;

三设计将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中;

答案: int i,j; n=0; for(i=0;i

,for(j=0;j

第98 套

一填空

给定程序中。将参数给定的字符串、整数、浮点

数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi 和atof 将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。

答案: FILE * fclose(fp) fp

二修改

对N 名学生的成绩,按从高到低的顺序找出前m 名学生来,并将这些学生数据存入在一个动态分配的连续存储区中,些存储区的首地址作为函数值返回。

答案: t=(STU *)calloc(sizeof(STU),m) ; t[k]=b[j];

三设计

删去一维数组中所有相同的数,使只剩一个。数组中数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

答案: int i, t,j=0,*p=a; t=p[0]; for (i=0;i<=n;i++)

if(t==p[i]); else {a[j]=t; t=p[i]; j++;} if (i>=n) a[j]=t ; return j;

第99套

一填空

程序通过从形参filename 所指文件中读入学生数据,并按照学号从小到大排序,再用二进制方式把排序后的学生数据输出到filename 所指的文件中,覆盖原来的文件内容。

答案: "rb" > fwrite

二修改

在字符串的最前端加入n个*号,形成新串,并且覆盖原串。

答案: p=s; while(*p++) ;

三设计

统计各年龄段的人数。N 个年龄通过调用随机函数获得,并放在主函数的age

答案: int i, j ; for(j = 0 ; j< M ; j++) b[j] = 0 ; for(i = 0 ; i < N ; i++) if(a[i]>=0&&a[i]<=9) b[0]+=1; else

if(a[i]>=10$$a[i]<=19) b[1]+=1; else

if(a[i]>=20$$a[i]<=29) b[2]+=1; else

if(a[i]>=30$$a[i]<=39) b[3]+=1; else

if(a[i]>=40$$a[i]<=49) b[4]+=1; else

if(a[i]>=50$$a[i]<=59) b[5]+=1; else

if(a[i]>=60$$a[i]<=69) b[6]+=1; else

if(a[i]>=70$$a[i]<=79) b[7]+=1; else

if(a[i]>=80$$a[i]<=89) b[8]+=1; else

if(a[i]>=90$$a[i]<=99) b[9]+=1; else b[10]+=1;

第100套一填空

程序重写形参filena 答案e 所指文件中最后一

个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。

答案: filename fp fp

二修改

创建带头结点的单向链表,并为各结点数据域0 到答案-1 的值。

答案:p=( NODE *)malloc(sizeof(NODE)); return h;

三设计

统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。

答案:int i,n=0; for(i=0;i

{ if(s[i]>=`a`&&s[i]<=`z`&& s*i+1+==` `||s*i+1+==’\0’)

n++;} return n;

西工大C语言上机考试题库

1:2:3 #include #include int main() { int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0; for(i=1;i<=3;i++) { for(j=1;j<=9;j++) { if(i!=j) { for(k=1;k<=9;k++) { if(k!=j&&i!=k) { a=i*100+j*10+k; b=a*2; c=a*3; l=b%10,d=c%10; m=(b%100)/10,p=(c%100)/10; n=b/100,q=c/100; if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0) if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q) if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q) printf("%d %d %d\n",a,b,c); } }

} } } return 0; } 8 #include"stdio.h" int main() { int a,b[10],m=0,n=0,p; int i,j,k; scanf("%d",&a); for(i=1;i<=a;i++) { m=0; n=0; p=i; for(j=0;p!=0;j++) { b[j]=p%10; p=p/10; } for(k=0;k

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

历年二级C语言笔试真题及答案

1 2009年9月全国计算机等级考试二级笔试 试卷 1)下列数据结构中,属于非线性结构的是 A )循环队列 B) 带链队列 C) 二叉树 D )带链栈 2)下列数据结果中,能够按照“先进后出”原则存取数据的是 A) 循环队列 B) 栈 C)队列 D)二叉树 3)对于循环队列,下列叙述中正确的是 A )队头指针是固定不变的 B )队头指针一定大于队尾指针 C )队头指针一定小于队尾指针 D )队头指针可以大于队尾指针,也可以小于队尾指针 4)算法的空间复杂度是指 A )算法在执行过程中所需要的计算机存储空间 B )算法所处理的数据量 C )算法程序中的语句或指令条数 D )算法在执行过程中所需要的临时工作单元数 5)软件设计中划分模块的一个准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 6)下列选项中不属于结构化程序设计原则的是 A) 可封装 B) 自顶向下 C) 模块化 D) 逐步求精 7)软件详细设计产生的图如下: 该图是 A) N-S 图 B) PAD 图 C) 程序流程图 D) E-R 图 8)数据库管理系统是 A )操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统 D) 一种操作系统 9)在E-R 图中,用来表示实体联系的图形是 A) 椭圆图B) 矩形C) 菱形D) 三角形 10)有三个关系R ,S 和T 如下: 其中关系T 由关系R 和S 通过某种操作得到,该操作为 A) 选择 B) 投影 C) 交 D) 并 11)以下叙述中正确的是 A )程序设计的任务就是编写程序代码并上机 B )程序设计的任务就是确定所用数据结 构 C )程序设计的任务就是确定所用算法 D )以上三种说法都不完整 12)以下选项中,能用作用户标识符的是 A )void B )8_8 C )_0_ D )unsigned 13)阅读以下程序 #include main() { int case; float printF; printf(“请输入2个数:”); scanf(“%d %f”,&case,&pjrintF); printf(“%d %f \n”,case,printF); } 该程序编译时产生错误,其出错原因是 A )定义语句出错,case 是关键字,不能 用作用户自定义标识符B )定义语句出错,printF 不能用作用户自定义标识符 C )定义语句无错,scanf 不能作为输入函 数使用 D )定义语句无错,printf 不能输出case 的值 14)表达式:(int)((double)9/2)-(9)%2的值是 A )0 B )3 C )4 D )5 15)若有定义语句:int x=10;,则表达式 x-=x+x 的值为 A )-20 B )-10 C )0 D )10 16)有以下程序 #include main() { int a=1,b=0; printf(“%d,”,b=a+b); printf(“%d \n”,a=2*b); } 程序运行后的输出结果是 A )0,0 B )1,0 C )3,2 D )1,2 17)设有定义:int a=1,b=2,c=3;,以下语 句中执行效果与其它三个不同的是 A )if(a>b) c=a,a=b,b=c; B )if(a>b) {c=a,a=b,b=c;} C ) if(a>b) c=a;a=b;b=c; D ) if(a>b) {c=a;a=b;b =c;} 18)有以下程序 #include main() { int c=0,k; for (k=1;k<3;k++) switch (k) {default: c+=k case 2: c++;break; case 4: c+=2;break; } printf(“%d \n”,c); } 程序运行后的输出结果是 A )3 B )5 C )7 D )9 19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A )if((a>b)&&(b>c)) k=1;else k=0; B )if((a>b)||(b>c) k=1;else k=0; C )if(a<=b) k=0;else if(b<=c) k=1; D )if(a>b) k=1;else if(b>c) k=1; else k=0; 20)有以下程序 #include main() { char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]>=?a?&&s[i]<=?z?) n++; printf(“%d \n”,n); } 程序运行后的输出结果是 A )0 B )2 C )3 D )5 21)有以下程序 #include main() { int n=2,k=0; while(k++&&n++>2); printf(“%d %d \n”,k,n); } 程序运行后的输出结果是 A )0 2 B )1 3 C )5 7 D )1 2 22)有以下定义语句,编译时会出现编译错误的是 A )char a=?a? B )char a=?\n?; C )char a=?aa?; D )char a=?\x2d?; 23)有以下程序 #include main() { char c1,c2; c1=?A?+?8?-…4?; c2=?A?+?8?-…5?; printf(“%c,%d \n”,c1,c2); } 已知字母A 的ASCII 码为65,程序运行后的输出结果是

C语言上机题库百科园第2章!南信大!

第二章 若有数学式3ae bc,则不正确的C语言表达式是() A.3*a*e/b*c B.a/b/c*e*3 C.3*a*e/b/c D.a*e/c/b*3 设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为()。 A.4 B.3 C.2 D.1 下列表达式中,不满足"当x的值为偶数时值为真,为奇数时值为假"的要求的是() A.(x/2*2-x)==0 B.!(x%2) C.!(x%2==0) D.x%2==0 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A.char B.double C.不确定 D.float 在C语言中,要求运算数必须是整型的运算符是( ) A.% B./ C.++ D.!= 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。 A.4

C.16 D.52 C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A.必须为下划线 B.必须为字母 C.可以是字母、数字和下划线中的任意一种 D.必须为字母或下划线 若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是( ) A.不知道a的值,不能确定 B.0 C.2 D.1 判断字符型变量c1是否为数字字符的正确表达式为( ) A.(c1>='0')&&(c1<='9') B.(c1>=0)&&(c1<=9) C.('0'>=c1)||('9'<=c1) D.'0'<=c1<='9' 下面四个选项中,均是合法的用户标识符的选项是()。 A._123 temp INT B.A p_o do C.b-a goto int D.float lao _A 以下关于C语言数据类型使用的叙述中错误的是( ) A.若要处理如"人员工资"的相关数据,单精度类型 B.若只处理"真"和"假"两种逻辑值,应使用逻辑类型 C.若要保存带有多位小数的数据,应使用双精度类型 D.若要准确无误差的表示自然数,应使用整数类型 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。 A.7 B.8 C.6 D.2 下面正确的字符常量是()

C语言上机题库

C语言习题集 3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。 输入格式: B 输出格式: 26 #include int main(void) { char ch; int sum; ch=getchar(); sum=ch-'A'+10+15; printf("%d\n",sum); return 0; } 3.12输入三个整数,求其平均值。 输入格式: 3 5 7 输出格式: 5 #include int main(void) { int a,b,c,aver; scanf("%d %d %d",&a,&b,&c); aver=(a+b+c)/3; printf("%d\n",aver); return 0; } 3.13根据c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。 输入格式: 80.0 输出格式: 26.67 #include int main(void) { float f,c; scanf("%f",&f); c=5.0/9*(f-32); printf("%.2f\n",c); return 0; } 3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。 输入格式: 1357 输出格式: 16 #include int main(void) { int num; int a,b,c,d,total; scanf("%d",&num); a=num/1000; b=(num-a*1000)/100; c=(num-a*1000-b*100)/10; d=num-a*1000-b*100-c*10; total=a+b+c+d; printf("%d\n",total); return 0; } 3.15输入一大写字母,输出对应的小写字母。 输入格式: A 输出格式: a #include int main(void) { char c1,c2;

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

c语言上机题库 (1)

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 2、编写程序求无理数e 的值并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。

11、请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列 中最大元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。 12、编写函数fun用比较法对主程序中用户输入的具有10 个数据的数组a按由大到小排序,并在主程序中输出 排序结果。 13、编写main程序调用函数fact求解从m个元素选n 个元 素的组合数的个数。计算公式是:组合数=m!/(n!.(m-n)!)。 要求:m不能小于n,否则应有容错处理。 说明:函数fact(x)的功能是求x!。 14、找出一批正整数中的最大的偶数。 15、实现两个整数的交换。 例如:给a和b分别输入:60和65,输入为: a=65 b=60 16、将字符串中的小写字母转换为对应的大写字母, 其它字符不变。 17、求一个四位数的各位数字的立方和。 18、求一组数中大于平均值的数的个数。 例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。 19、对任意输入的x,用下式计算并输出y 的值。 5 x<10 y= 0 x=10 -5 x>10 20、求给定正整数m以内的素数之和。 例如:当m=20时,函数值为77。 21、判断整数x是否是同构数。若是同构数,函数返回1; 否则返回0。x的值由主函数从键盘读入,要求不大

2017年全国计算机等级考试二级C语言上机题库

2017年全国计算机等级考试二级 C语言上机题库 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i0) 2程序修改 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。 /**found**/ q=p+i; /**found**/ while(q>p) 3程序设计 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; for(i=0;i=1&&a[i].s<=h) b[j++]=a[i]; return j; } 第二套 1.程序填空 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处free(q); 第二处q=p->next; 第三处q=q->next; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。 /**found**/ p=j; /**found**/ p=i; 3. 程序设计 请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;i

2020年9月全国计算机等级考试二级C语言上机题库(共60套全)

2020年9月全国计算机等级考试二级C语言上机题库(共60 套全) 第一套 1 程序填空 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指出的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。第1处if (std[i].year==year) 第2处k[n++]=std[i]; 第3处return (n); 1程序修改 给定程序MODI1.C中函数fun的功能是:读入一个整数k(2≤k≤10000)打印它的所有质因子(即所有为素数的因子)。 /**found**/ IsPrime (int n) /**found**/ if (!(n%i)) 2程序设计 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写给函数fun,函数的功能是:找出成绩最高的学生的记录,通过形参指针传回主函数(规定只有一个最高分),已给出函数的首部,请完成函数。 fun(STU a[],STU *s) { int i, max = a[0]. s, j=0; for (i=1; i

1 2 3 4 5 6 7 8 9 交换后: 3 2 1 4 5 6 9 8 7 第1处void fun (int t [] [N], int n) 第2处for (i=0; ia [mid]) 3 程序设计 假定输入的字符串中只包含字母和*号,请编写函数fun,它的的功能是:除了尾部的*号之外,将字符串中其他*全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 void fun (char *a,char *p) { char *q=a; int j=0; while (*q&&q

c语言上机考试训练题库及答案

上机考试习题集 1.编写程序,一次输入5个学生的3门课成绩,每输入一个学生的3门成绩后,立即统计并输出该学生的总分和平均分。 #include "stdio.h" void main() { int score[5][3], i,j; float sum[5],average[5]; printf("请分别输入三个学生的成绩:\n"); for(i=0;i<5;i++) { sum[i]=0; for(j=0;j<3;j++) {scanf("%d",&score[i][j]); average[i]=0; sum[i]+=score[i][j]; average[i]=sum[i]/5; } } for(i=0;i<5;i++) printf("第%d个学生的总分为:%f,平均成绩为:%f\n",i+1,sum[i],average[i]); } 2 、编写程序,提示用户从键盘输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后在显示器上输出此数,以便验证处理是否正确。 #include #include double rounding(double x,int n); void main() { double x,x1; int n; printf("请输入一个浮点数:\n"); scanf("%lf",&x); printf("请输入给定的小数位:\n"); scanf("%d",&n); x1=rounding(x,n); printf("圆整后的数为:\n%.*lf\n",n,x1); } double rounding(double x,int n)

计算机二级c语言题库及答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 或35 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 :m联系 :n联系 :1联系 :l联系

6.右两个关系R和S如下: 则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译

2020年全国计算机等级考试二级c语言上机精选题库(共80套)

2020年全国计算机等级考试二级c语言上机精选题库(共80套) 第1套试题 第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include #define N 4 fun(int t[][N], int n) { int i, sum; ___1___; for (i=0; i

第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。 ,11=A ,1112A +=A ,1123A +=A … ,1 11-A +=A n n 例如,若n=10,则应输出0.617978。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构! #include #include /********found********/ fun(int n) { double A = 1; int i; /********found********/ for(i=2;i #include void fun (int a, int b, long *c) { }

计算机二级C语言编程题库(100题)

2011,____年上机题100题库 1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。

答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: 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++; }

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机考试二级C语言上机试题下[23]

计算机考试二级C语言上机试题下[23] 第 53套 试题说明 *********************************** 第一题(30分) 给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中 从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结 果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! *********************************** 第二题(30分) 给定程序MODI1.C中函数fun的功能是: 将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。 例如, 字符串中的数据为: AABBCCDDEEFF, 则输出应当是:ABBCDDEFF。 请改正函数fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! *********************************** 第三题(40分) 请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的顺序依次放到一维数组中。 例如, 二维数组中的数据为: 33 33 33 33 44 44 44 44

55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

二级C语言上机题库及答案

第一套题 上机填空: #include double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=__1__/4; /**********found**********/ while(x __2__ e) { s=s+k*x; k=k* (-1); t=2*i; /**********found**********/ x=__3__/(t*t); i++; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); 第一处答案:3.0 第二处答案:> 第三处答案:(2*i+1)或者(t+1) 上机改错题: #include /************found************/ void fun ( int n )

{ int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include double fun(int n) { int i; double s, t; /**********found**********/ s=__1__; /**********found**********/ for(i=1; i<=__2__; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); }

相关主题