全国计算机等级考试二级C语言上机考试试题详解 下载本文

printf(\

printf(\}

编程题:下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a数组中的值为

a=0 1 2 7 9 1 11 21 5 5 2 21 6 1l 1 9 7 9 10 2 5 4 1 4 1

则返回主程序后s的值应为310。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include #include #include #define N 5

int fun (int w[] [N]) { } main()

{ int a[N][N]={0,1,2,7,9,1,11,21,5,5,2, 21,6,11,1,9,7,9,10,2,5,4,1,4,1}; int i, j, s;

printf(\ for (i=0; i

{printf(\ printf(\ }

s=fun(a);

printf(\ printf(\:%d\\n \}

第12套

填空题:请补充函数fun(),函数fun()的功能是求7的阶乘。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include long fun(int n) { if (【1】 )

return (n*fun (【2】); else if(【3】) return 1; }

main ( ) { int k=7;

printf (\}

改错题:下列给定程序中,函数fun()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入\,cD\,则输出\,cd\。 请改正函数fun()中的错误,使它能得出正确的结果。

注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include #include #include char *fun (char tt[]) { int i;

for (i=0;tt[i];i++)

**********************************

{ if((' A' <=tt[i]|| (tt[i]<= ' Z' )) tt [i] +=32;

}

return (tt); }

main ( ) { int i;

char tt[81];

printf(\: \ gets (tt);

printf(\:\\n%s\ fun(tt); }

编程题:请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入abc4Efg,则应输出aBc4EFg。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

#include #include #include void fun (char *ss)

{ }

main ( )

{ char tt[81];

printf (\:\\n\ gets (tt);

printf (\ fun (tt);

printf (\}

第13套

填空题:请补充函数fun(),该函数的功能是:把字符下标能被2或3整除的字符从字符串sb中删除,把剩余的字符重新保存在字符串sb中。字符串sb从键盘输入,其长度作为参数传入函数fun()。

例如,输入“abcdefghijk”,输出“bfh”。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include #define N 80

void fun(char s[], int n) { int i, k; 【1】 ;

for(i=0; i

{ int i=0, strlen=0; char str [N];

printf (\:\\n\ gets (str);

while (str [i] !='\\0') { strlen++; i++; }

fun (str, strlen);

printf(\ puts (str); }

改错题:下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

请改正函数fun()中的错误,使它能得出正确的结果。 试题程序:

#include #define SIZE 20

fun (double *s,double *w) { int k,i; double sum;

for (k=2, i=0; i

for (k=0, i=0; i

********************************** if (i+1%5==0)

{w[k]=sum/5; sum=0;k++;} } return k; }

main ( )

{ double a[SIZE],b[SIZE/5]; int i, k; k=fun (a,b);

printf (\:\\n\ for (i=0; i

{ if(i%5==0) printf(\ printf (\ }

printf (\:\\n\ for(i=0;i

printf(\

printf ( \ }

编程题:请编写一个函数fun(),它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序: #define M 4

#include fun (int a[][M])

{ }

main ( )

{ int arr[2] [M]={5,8,3,45,76,-4,12,82}; printf (\} 第14套

填空题:给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输

出。例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。 试题程序:

#include

void fun(int m,int k) { int aa[20],i; for(i=0;m;i++) { aa[i]【1】; m/=【2】; }

for(;i;i- -)printf(\%d\【3】[i-1]); } main()

{ int b,n;

printf(\:\n\; scanf(\%d%d\,&b); fun(n'b); }

改错题:下列给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。

例如,若输入:I am a student to take the examination 则应输出:I aM A studenT tO takE thE examinatioN 请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include void fun(char *p) { int k=0;

for (;*p;p++) if (k)

********************************** { if (p==' ')