计算机二级C语言考试试题与答案解析6

考试难度:
9人已考
  • 卷面总分:100
  • 试卷类型:模拟试题
  • 测试费用: 免费
  • 关注人数:166
  • 作答时间:120分钟
  • 解析:
关闭
试卷简介:
计算机二级C语言考试试题与答案解析6
试题类型:
  • 程序填空题
  • 程序修改题
  • 程序设计题
试卷预览
  • 程序填空题
  • 程序修改题
  • 程序设计题
1
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是计算下式前n项的和,并将结果作为函数值返回。例如,当形参n的值为10时,函数返回-0.204491。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>double fun(int n){int i, k; double s, t;s=0;/********* found *********/k=【1】;for (i=l; i<=n; i + + ) {/********* found ********* /t=【2】;s=s+k*(2*i-l)*(2*i +1)/(t*t);/********* found ********* /k=k *【3】;}return s;}main (){int n=-1;while (n<0 ){ printf (“Please input (n>0) : ”) ;scanf(“%d”,&n); }printf (“\nThe result is:% f\n”, fun (n));}
2
使用VC升2010打开考生文件夹下析blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序的主函数中,已给出由结构体构成的链表节点a、b、c,各节点的数据域中均存入字符,函数fun()的功能是将a、b、c3个节点链接成一个单向链表,并输出链表节点中的数据。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:
3
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是将自然数1~10及其平方根写到名为myfile3.txt的文本文件中,然后再顺序读出并显示在屏幕上。请在程序下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include <math.h>#include <stdio.h>int fun(char * fname){FILE *fp; int i,n; float x;if ( (fp=fopen (fname, “w”))==NULL)return 0 ;for(i=1;i<=10;i + + )/********* found *********/fprintf (【1】,“%d%f\n”, i, sqrt((double)i));printf (“\nSucceed!!\n”);/********* found *********/【2】;printf (“\nThe data in file :\n”);/ ********* found *********/if ((fp=fopen(【3】,“r”))==NULL)return 0;fscanf(fp,“%d%f”,&n,&x);while (!feof(fp)){printf (“%d %f\n”,n,x);fscanf (fp, “%d%f”, &n,&x); }fclose(fp);return 1;}main (){char fname[ ]=“myfile3.txt”;fun(fname);}
4
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是用函数指针指向要调用的函数,并进行调用。规定在【2】处使f指向函数f1,在【3】处使f指向函数f2。当调用正确时,程序输出:X1=5.000000,X2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:1 1 #include < stdio.h >2 double f1(double x)3 { return x * x; }4 double f2(double x, double y)5 { return x * y; }6 double fun(double a,double b)7 {8 /********* found ********* /9 【1】(* f) ();10 double r1, r2 ;11 /********* found ********* /12 f =【2】;13 r1 = f (a);14 /********* found *********/15 f =【3】;16 r2 = ( * f) (a, b);17 return r1+ r2;18 }19 main ()20 { double x1= 5, x2 = 3, r;21   r = fun (x1, x2);22 printf ("\nxl =%f, x2 =%f, x1* x1+ x1 * x2 = % f \n", x1, x2, r);23 }
5
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun()的功能是利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排列,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序在文件blank1.c中。不得增行或删行,也不得更改程序的结构!试题程序:
6
1
使用VC ++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c在此程序中,函数fun()的功能是用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <math.h>#include <stdio.h>float fun (float num){int s;float n, t, pi;t=1; pi=0 ; n=1; s=1;/********* found *********/while (t>=num){pi=pi+t;n=n+2 ;s=-s;/********* found *********/t=s%n;}pi=pi*4;return pi;}void main (){float n1, n2;system(“CLS”);printf(“Enter a float number:”);scanf (“%f”, &n1);n2=fun(n1);printf(“%6.4 f\n”,n2);}
2
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是依次取出字符串中所有的数字字符,形成 新的字符串,并取代原字符串。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <stdio.h>#include <conio.h>void fun (char *s){int i, j;for (i=0,j=0; s[ i] !=‘0’; i++)if (s[i] >=‘0’&&s[i]<=‘9’)/********* found ********* /s[j]=s [i];/********* found ********* /s[j]=“\0”;}void main (){char item[80];system(“CLS”);printf (“\nEnter a string:”);gets (item);printf (“\n\nThe string is : %s\n”, item);fun(item);printf (“\n\nThe string of changing is: %s\n”, item);}
3
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是求出如下分数序列的前n项之和,和值通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <conio.h>#include <stdio.h>/******** found ******** /void fun (int n){int a=2 , b=1, c, k;double s=0.0;for (k=1;k<=n;k++){/******** found ******** /s=s +(Double)a/b;c=a; a=a+b; b=c;}return (s);}void main (){int n=5;system(“CLS”);printf (“\nThe value of function is:%lf\n”, fun(n));}
4
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是将m(1≤m≤10)个字符串连接起来,组成一个新字符串,放入pt所指存储区中。如把3个字符串“abc”“CD”“EF”连接起来,结果是“abcCDEF”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>#include <string.h>void fun(char str[ ] [10], int m, char *pt ){/********* found ********* /int k, q, i;for ( k=0; k< m; k++){q=strlen( str[k]);for (i=0; i< q; i++)/********** found ********* /pt[i]=str[k,i];pt +=q;pt[0]=0;}}main (){int m, h;char s[10][10], p[120];printf (“Please enter m:”);scanf (“%d”, &m) ; gets(s[0]);printf(“Please enter %d string:”, m);for(h=0; h
5
使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun()的功能是计算并输出下列级数的前N项和SN,直到SN+1的值大于q为止,q的值通过形参传入。例如,若q的值为50. 0,则函数值应为49.3949480请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>double fun(double q){int n;double s, t;n=2;s=2.0;while (s<=q){t=s;/********* found ********* /s=s+ (n+1)/n;n++;}printf (“n=%d\n”, n);/********* found ********/return s;}main (){printf(“%f\n”,fun(50));}
6
1
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),该函数的功能是统计一行字符串中单词的个数,并将其作为函数值返回。字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1 #include < string.h >2 #include < stdio.h >3 #define N 804 int fun (char * s)5 {67 }8 void main ()9 {10 FILE * wf ;11 char line[N];12 int num = 0 ;13 printf("Enter a string:\n ");14 gets(line);15 num = fun (line);16 printf (" The number of words is:% d\n\n ",num);17 /********* found *********/18 wf = fopen ("out. dat", "w");19 fprintf (wf, "% d", fun ( " a big car"));20 fclose(wf);21 /********* found ********* /22 }
2
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将M行N列的二维数组中的数据,按列的顺序依次存放到一维数组中,将一维数组中数据的个数存放在形参n所指的存储单元中。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include <stdio.h>void fun (int (*s) [10] , int *b, int *n, int mm, int nn){}main (){int w[10][10]={{33,33,33,33},{44,44,44,44 }, {55,55,55,55}},i,j;int a[100]={0},n=0;printf(“The matrix:\n”);for (i=0;i<3;i++){for(j=0;j<4;j ++)printf (“%3d”,w[i][j]);printf (“\n”);}fun(w,a, &n,3,4);printf(“The A array:\n”);for(i=0;i
3
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun()的功能是将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指字符串中剩余的字符形成的新字符串存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCⅡ值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCⅡ值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDH2345”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序::
4
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1. c。在此程序中,编写函数fun(),其功能是求斐波那契数列中大于t的最小的数,结果由函数返回。斐波那契数列F(n)的定义为F(0)=0,F(1)=1F(n)=F(n-1) +F(n-2)例如,当t=1000时,函数值为1597。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include <conio.h>#include <math.h>#include <stdio.h>int fun (int t){}main (){int n;n=1000 ;printf (“n=%d, f=%d\n”,n,fun(n));}