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

内容发布更新时间 : 2024/11/6 8:38:39星期一 下面是文章的全部内容请认真阅读。

例如:n为1000时,函数值应为s=96.979379。 注意:部分源程序给出如下。

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

#include #include #include double fun(int n)

{ } main()

{ int n=1000;

printf(\%f\\n\,fun(1000));

} 第4套

填空题:给定程序的功能是判断字符ch是否与串str中的某个字符相同;若相同,什么也不做,若不同,则插在串的最后。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 试题程序:

#include #include

void fun(char*str, char ch )

{ while ( *str && *str != ch ) str++;

if( *str 【1】 ch ) {str[0] =ch; 【2】= 0; }

} main( )

{ char s[81],c;

printf( \gets ( s ); printf (\c = getchar(); fun(【3】) ;

printf( \is %s\\n\,s);

}

改错题:下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。 例如:输入352,则输出应该是38;若输入328,则输出应该是77。 请改正程序中的错误,使它能得到正确结果。

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

#include

long fun(long num)

/*************found**************/ { long k=1; do

{ k+=(num%10)*(num%10); num/=10;

/*************found**************/ }while(num) return(k); } main()

{ long n;

printf(\:\; scanf(\%ld\,an);

printf(\%ld\\n\,fun(n));

}

编程题:请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。其中Fibonacai数列F(n)的定义为:

F(0)=0,F【1】=1,…… F(n)=F(n-1)+F(n-2) 例如:t=1000时,函数值为987。 注意:部分源程序给出如下:

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

#include #include #include int fun(int t) { } main()

{ int n; n=1000;

printf(\%d,f=%d\\n\,n,fun(n)); }

第5套

填空题 :请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串strl后面。 例如:strl=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。 注意:部分源程序给出如下。

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

试题程序:

#include #include #define N 40

void fun(char *strl,char *str2) { int i=0, j=0, k=0, n;

char ch,*pl=strl,*p2=str2; while (* (pl+i)) i++;

while (* (p2+j) ) j++; n= 【1】 ;

for (; k<=j/2; k++, j--) { ch=* (p2+k);

* (p2+k) =* (p2+j); * (p2+j) =ch; } 【2】 ;

for(; 【3】 ;i++) * (pl+i)=*p2++; * (pl+i) =' \\0'; }

main ( )

{ char strl [N], str2 [N]; int m, n, k;

printf (\ printf (\: \ gets (strl);

printf (\: \ gets (str2);

printf (\ puts (strl); puts (str2); fun(str1,str2);

printf(“***The new string***\\n”); puts(str1); }

改错题:下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。

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

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

试题程序:

#include #define N 100

int fun(int *s, int n) { int i, j=0, k,a,b,c; for(i=100; i

********************************** { k=n; a=k; k/=10; b=k; c=k/10; if (a==b+c)

********************************** s [j]=i; }

return j; }

main ( )

{ int a[N], n,num=0, i; do

{ printf(\:\ scanf (\ }

while(n > 1000); num= fun (a, n);

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

printf (\ printf (\ }

编程题:程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是使数组左下半三角元素中的值加上n。

例如:若n的值为3,a数组中的值为 a=2 5 4 1 6 9 5 3 7

则返回主程序后a数组中的值应为 5 5 4 4 9 9 8 6 10

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

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

试题程序:

#include #include #include #define N 5

fun(int a[][N], int n) {

}

main ()

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

printf(\

for(i=0; i

{ a[i] [j]=rand();

printf(\ }

printf (\ } do

{ n=rand () ;

while (n>=5); /*产生一个小于5的随机数n* / printf (\

fun (a, n);

printf (\ for(i=0; i

{ for (j=0; j

printf (\ printf (\ } } } 第6套

填空题 :请补充函数fun(),该函数的功能是:按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。注意:不能使用字符串库函数。 例如:输入“x=112385713.456+0.909*bc”,结果为:1=3,3=2,5=2,7=1,9=2。 注意:部分源程序给出如下。

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

试题程序:

#include #define N 1000

void fun(char *tt,int num[]) { int i,j,bb[10]; char *p=tt;

for (i=0; i<10; i++) { num[i]=0; bb[i]=0; }

while( 【1】 )

{ if (*p>=' 0' &&*p<=' 9' ) 【2】 ;