全国计算机等级考试二级C语言最新上机考试题库及答案

更新时间:2023-03-10 17:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第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+(b);

第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)*100+(b)*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)*1000+(a)*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)*1000+(b/10)*100+(a/10)*10+(b);

第5套 一、填空

把形参x的值放入一个新结点并插入到链表中,插入后结点数据域的值仍保持递增有序。

答案: x p s 二、修改

计算正整数num的各位上的数字之积。 答案:long k=1; num/=10 ; 三、程序

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

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

第6套 一、填空

给定程序中已建立一个带有头结点的单向链表,在答案ain函数中将多次调用fun函数,没调用一次fun函数,输出链表尾部结点中的数据,并释放该节点,是链表缩短。

答案: next t->data t

二、修改

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

:void

fun

(char

*a)

printf(\

三、程序

比较两个字符串的长度(不得调用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++)

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

答案: data next head 二、修改

将s所指字符串中出现的与t1所指字符串相同的字串全部替换成t2所指字符串,c[t]='\\0';

三、程序

将ss所指字符串中所有下标为奇数位置上的字母转换成大写

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

{if(ss[i] >='a'&&ss[i] <= 'z')

ss[i] - =32 ;}

第9套 一、填空

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

答案: *n next head 二、修改

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

答案: a = NULL; if(* r ==*p) 三、程序

将s所指字符串中除了下标问为偶数,同时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’ ;

第10套 一 填空

所形成的新串放在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),打印她的所有因子

答案: *std PERSON std 二、修改

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

:

int

k,q,i;

pt[i]=str[k][i];

三、程序

答案: 分号去掉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成员进行升序排列

使数组左下三角元素中的值全部值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 max.name 二、修改

实现两个整数的交换

答案:void fun( int *a,int*b) t t= *b; *b= *a ; *a = t;

三、程序

请编写一个函数、、tt指向一个M行N列的二维数组,求二维数组每列中最小元

素,并以此放入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; 三、程序

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

答案: unsigned t,s=0, s1=1,p=0; t=w; while(t>10) {if(t/10) p=t; 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 = 答案:int i,j; int t=0; for

1 ; i < num-2;i++) (i=2;i

{t=s[i]; s[i]=s[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传回

{j =2; while (j

(i%j==0){xx[t]=i; t++;break; } j++;}

*k=t;}

第22套 一、.填空

将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] ; 三、程序

请编写一个函数。。。统计在tt所指字

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;

符串中’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

if(p!=n)

{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; 三 设计

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

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

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;

第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 ;

除了尾部的*号外,将字符串中的*号全 答案: int j=0; char *q=a; while(*q &&q

*p++ ; a[j] = ‘\\0’;

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

第33套 一.填空

计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回,

答案: sum=0 t[i][i] 1 二 修改

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

:

double

r; while(fabs(n-m)>0.001)

三 设计

第34套 一.填空

把形参a所指数组中的奇数按原顺序依

次存放到a【0】,a【1】?.中,偶数从数组

中删除,奇数个数通过函数值返回 答案: 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

{a[i]=*p;i++;p++;}a[i]=’\\0’;}

第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所指数组中的最大值放在a【1】中,按着求出a所指数组中的最小值放在a【1】数组中;把a所指数组元素的次大值放在a【2】中,把a数组元素中的次小值放在a【3】中;其余以此类推。

答案: *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

第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;

答案: b[k]=*p; b[k++]=’ ’; 三 设计

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

for(i = 1; i < N; i++) if(max < a[i].s) max = a[i].s ; for(i = 0; i < N; i++) 答案: STREC *p=h->next; double 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,1转换为8,2转换为7?9转换为0;其他字符则保持不变;转换后的结果作为函数值返回

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

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

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; 第45套 一.填空

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个数的方差

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

计算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 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+(a);

第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(“M”,xx[i][j]); 三 设计

将ab中的两个两位正整数合并形成一个新的正整数放在c中,合并方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位数和各位数一次放在变量c的千位和十位上 *c=(a/10)*1000+(b)*100+(a)*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*n-1)*(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) 答案: 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=s+(double)a/b;

三 设计

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

答案: int i, j, max=a[0][0];

for(i=0; i<2; i++) for(j=0; j

if(max

max;

第59.套 一 填空

给定程序中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所指的数组

第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

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[0][i];

tot+=a[M-1][i]} for(i=1;i

第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=strlen(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)*1000+(b)*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;iscore[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;

请编写函数fun。求出数组中最大元素在数组中的下标并存放在k所指的存储单元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=temp)

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

break;}}

第76套 一 填空

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

答案: n++ 0 s++ 二 修改

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

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

中。

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

第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==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 b.name 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) 三 设计

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

二 修改

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

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

三 设计

将a、b中的两个两位正整数合并形成

答案: 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 a.name

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;ia[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

一个新的整数放在c中。合并的方式是:将

a中的十位和个位数依次放在变量c的百位

和个位上,b中的十位和个位数依次放在变

量c的十位和千位上。

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

10+a;

第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

if(str[i]==str[n-1-i]);

else

{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

第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

第98套 一.填空

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

答案: FILE * fclose(fp) fp 二 修改

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

;

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

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

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所指的文件中,覆盖原来的文件内容。

答案: \二 修改

在字符串的最前端加入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]>=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=`a`&&s[i]<=`z`&&s[i+1]==` `||s[i+1]==’\\0’) n++;}

return n;

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

Top