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

scanf (\ fun(m, n, zz);

for (m=0; m

printf (\ printf (\}

第9套 填空题:请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符strl中,把字符串strl中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则str2=“cegi”。 注意:部分源程序给出如下。

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

# include< stdio, h> # include #define LEN 80 main ( )

{ char str1 [LEN] ,str2 [LEN]; char *pl=str1, *p2=str2; int i=0, j=0;

printf (\: \\n\ scanf ( 【1】 );

printf (\ while (* (pl+j) )

{ printf (\【2】 \ j++; }

for (i=0; i

printf (\:%s\\n\【3】 ); }

改错题:在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。 例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。

请改正程序中的错误,使它能得到正确结果。

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

#include #include double fun(int x[ ]) { double sum=0.0;

int c=0, i=0;

********************************** while (x[i]==0) { if (x[i]<0)

{ sum=sum+x[i] c++; } i++; }

********************************** sum=sum\\c; return sum; }

main ( )

{ int x[1000]; i=0;

printf (\:\ do

{ scanf (\ }while (x [i++] !=0); printf (\}

编程题:请编写一个函数int fun(int*s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:234 345 753 134 436 458 100 321 135 760 则输出结果为6,100。

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

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

试题程序:

#include #include

int fun(int *s,int t, int *k) { }

main ( )

{ int a[10]={234,345,753,134,436,458,100,321,135,760},k; fun(a, 10, &k);

printf(\} 第10套

填空题:请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,strl指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。 例如:当strl=“cdefghij”,然后输入4,则str2=“cdef”。

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

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

试题程序:

#include #include #define LEN 80 main ( )

{ char str1 [LEN], str2 [LEN]; int n, i;

printf (\:In\ gets (strl);

printf (\: \ scanf ( 【1】 ); for (i=0; i

printf (\:%s\\n\【3】 ); }

改错题:下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。

请改正程序中的错误,使它能得到正确结果。

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

试题程序:

#include #include void fun(char *s) { int i,j;

for(i=0,j=0; s[i]!= '\\0'; i++) **********************************

if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>='a'&&s [i]<= 'z')) s [j++]=s [i];

********************************** s[j]= \}

main ( )

{ char item[80];

printf(\: \ gets (item);

printf (\: \\%s\\n\ fun (item);

printf (\:\\%s\\n\}

编程题:下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int

a[][N]),该函数的功能是使数组右上半三角元素中的值全部置成0。例如a数组中的值为 a=4 5 6 1 7 9 3 2 6

则返回主程序后a数组中的值应为 0 0 0 1 0 0 3 2 0

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

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

试题程序:

#include #include #include #define N 5

int fun (int a[] [N]) { }

main ( )

{ int a[N] [N],i,j;

printf (\

for (i=0; i

{ a[i] [j ]=rand() ; printf(\ }

printf (\ } fun (a);

printf (\ for (i=0; i

{ for (j=0; j

printf(\ printf (\ } } 第11套

填空题:请补充函数fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!”,否则返回“no!”。 注意;部分源程序给出如下。

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

试题程序:

include #include

char *fun(int n) { int g,s,b; g=n; s=n/10; b= 【1】 ;

if((g+b)==s) return 【2】 ; else return 【3】 ; main ()

{ int num=0;

printf(\ scanf(\ printf{\

printf(\ printf(\}

改错题:下列给定的程序中。函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。

请改正程序中的错误,使它能得到正确结果。

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

试题程序:

#lnclude #define N 20

void fun(int a[],int n) { int i,j,t,p;

********************************** for(j=0;j

for(i=j;ia[p]) p=i;

t=a[p]; a[p]=a[j];

********************************** a[p]=t; } } main()

{ int a[N]={ll,32,-5,2,14},i,m=5; printf{'排序前的数据:\ for(i=0;i

printf(\ printf(\

fun(a,m);

printf(\排序后的顺序 \for(i=0;i

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4