【最新】全国计算机等级考试2级C语言上机题库

下面程序的运行结果是 : 【 1 0 】 。

fun(int t[],int n)

{ int i,m;

if(n==1)return t[0];

else

if(n>=2){m=fun(t,n-1); return m; }

}

main()

{ int a[]={11,4,6,3,8,2,3,5,9,2};

printf(" % d\n",fun(a,10));

}


正确答案:
(10) 【 10 】 11
解析 : 此题涉及函数的调用和 if 语句 。 程序先执行第二个 if 语句 , 然后在执行第一个 if 语句 ,最后用 return 返回数值。


下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。

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

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

试题程序:

include <conio.h>

include <stdio.h>

define N 20

void fun(int *a,int n)

{

int i, m,t,k;

/*************found**************/

for(i=O; i<n; i++)

{

m==i;

for(k=i; k<n; k++)

if(a[k]<a[m])

/*************found**************/

k=m;

t=a[i];

a[i]=a[m];

a[m]=t;

}

}

main()

{

int x,b[N]={11,5,12,0,3,6,9,7,10,8},

n=10,i;

clrscr();

for(i=0; i<n; i++)

printf("%d",b[i]);

printf("\n");

fun(b,n);

for(i=0; i<n; i++)

printf("%d",b[i]);

printf("\n");

}


正确答案:(1) 错误: for(i=0;in;i++) 正确:for(i=0;i2;i++) (2) 错误:k=m; 正确:m=k;
(1) 错误: for(i=0;in;i++) 正确:for(i=0;i2;i++) (2) 错误:k=m; 正确:m=k; 解析:错误1:由于题目要求将最小数和次最小数分别与a[0]和a[1]中的数对调,因此这层循环只需循环两次。错误2:赋值语句的执行方向是从右向左,即把右边的值赋给左边的变量。


请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。

例如:当x[10]={15.6, 19.9, 16.7, 15.2, 18.3, 12.1, 15.5,11.0, 10.0, 16.0},结果为:avg=15.030000。

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

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

试题程序:

include<stdio.h>

include<conio.h>

double fun(double x[10])

{

int i;

long t;

double avg=0.0;

double sum=0.0;

for(i=0;i<l0;i++)

【 】;

avg=sum/10;

avg=【 】;

t=【 】;

avg=(double)t/100;

return avg;

}

main()

{

double avg,x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0};

int i;

clrscr();

printf(“\nThe original data is:\n”);

for(i=0;i<l0;i++)

printf("%6.lf",x[i]);

printf(“\n\n”);

avg=fun(x);

printf(“average=%f\n\n”,avg);

}


正确答案:sum+=x[i] avg*1000 (avg+5)/10
sum+=x[i] avg*1000 (avg+5)/10 解析:第一空:通过for循环求出10个数的累加和,存于变量sum中。第二空:为了实现四舍五入保留两位小数的功能,应将平均值先扩大1000倍。第三空:将平均值加上5,再除以10,实现四舍五入的功能。


请补充函数fun(),该函数的功能是:计算N×N维矩阵元素的方差,结果由函数返回。维数N在主函数中输入。例如:

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

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

试题程序:

include <stdio.h>

include <conio.h>

include <stdlib.h>

include <math.h>

define N 20

double fun(【 】,int n)

{

int i,j;

int k;

double s=0.0;

double f=0.0;

double aver=0.0;

double sd=0.0;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

s+=a[i][j];

aver=【 】;

for(i=0;i<n;i++)

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

f+=(a[i][j]-aver)*(a[i][j]-aver);

f/(n*n);

sd=【 】;

return sd;

}

main()

{

int a[N][N];

int n;

int i,j;

double s;

clrscr();

printf("***+Input the dimension of

array N*****\n");

scanf("%d",&n);

printf("***** The array *****\n");

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

{

a[i][j]=rand()%50;

while(a[i][j]=0)

a[i][j]=rand()%60;

printf("%4d",a[i][j]);

}

printf("\n\n");

}

s=fun(a,n);

printf("******* THE RESULT *******\n");

printf("%4.3f\n",s);

}


正确答案:int a[][N] s/(n*n) sqrt(f)
int a[][N] s/(n*n) sqrt(f) 解析:第一空;由主函数main()中对函数fun()的调用格式,可以知道,函数fun()的第一个参数是N×N的二维整型数组。第二空:平均值等于所有元素的累加和除以个数。第三空;根据公式,方差sd等于对变量f开平方,这里注意对数学库函数的调用。


请补充函数fun,其功能是:计算并输出给定10个数的方差:

例如,给定的10个数为15.0,19.0,16.0,15.0,18.0,12.0, 15.0,11.0,10.0,16.0,输出为s=2.758623。

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

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

试题程序:

include<stdio.h>

include<math. h>

double fun (double x[10])

{

int i;

double avg=0.0;

double sum=0.0;

double abs=0.0;

double sd;

for (i=0; i<10; i++)

【 】;

avg=sum/10;

for(i=0;i<10;i++)

【 】;

sd=【 】;

return sd;

}

main()

{

double s,x[10]={15.0,19.0,16.0,15.0,

18.0,12.0,15.0,11.0,10.0,16.0};

int i;

printf("\nThe original data is :\n");

for(i=0;i<10;i++)

printf("%6.1f",x[i]);

printf("\n\n");

s=fun(x);

printf("s=%f\n\n",s);

}


正确答案:sum+=x[i] abs+=(x[i]-avg)*(x[i]-avg) sqrt(abs/10)
sum+=x[i] abs+=(x[i]-avg)*(x[i]-avg) sqrt(abs/10) 解析:第一空:根据求方差的公式可知,首先要求出10个数的平均值,此处是利用for循环对10个数求累加和。第二空:使用for循环求出每个数与平均值之差的平方和。第三空:通过开方,求出10个数的方差,此处需要注意对库函数sqrt()的调用。


第一套: 1.1 填空 给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶函数的数去 除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变 量。 void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; while(*n) /*found*/ t=*n % 10 ; /*found*/ if(t%2!= 0) x=x+t*i; i=i*10; *n =*n /10; /*found*/ *n=x; 1.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:计算 n!。 double fun ( int n ) double result = 1.0 ; /*found*/ if (n = 0) return 1.0 ; while( n 1 return result ; 1.3 程序 请编写一个函数 fun,它的功能是:将一个数字字符串转换为一个整数(不得调用 C 语言提供的将字符串转换为整数的函数)。 long fun ( char *p) /* 以下代码仅供参考 */ int i, len, t; /* len 为串长,t为正负标识 */ long x=0; len=strlen(p); if(p0=-) t=-1; len-; p+; else t=1; /* 以下完成数字字符串转换为一个数字 */ while(*p) x = x*10-48+(*p+); return x*t; 第二套: 2.1 填空 给定程序中,函数 fun 的功能是将形参给定的字符串、整数、浮点数些到文本文件 中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 void fun(char *s, int a, double f) /*found*/ FILE * fp; char ch; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f); fclose(fp); fp = fopen(file1.txt, r); printf(nThe result :nn); ch = fgetc(fp); /*found*/ while (!feof(fp) /*found*/ putchar(ch); ch = fgetc(fp); putchar(n); fclose(fp); 2.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:依次取出字符串中所有数字字符,形成 新的字符串,并取代原字符串。请改正函数fun 中指定部位的错误,使它能得出正确的结果。 #include void fun(char *s) int i,j; for(i=0,j=0; si!=0; i+) if(si=0 /*found*/ sj=0; 2.3 程序 请编写函数 fun,函数的功能是:将 M 行 N 列的二维数组中的字符数据,按列的顺 序依次放到一个字符串中。 void fun(char sN, char *b) int i,j,n=0; for(i=0; i N;i+) /* 请填写相应语句完成其功能 */ for(j = 0 ; j next=NULL; for(i=1; idata=rand()%m; s-next=p-next; p-next=s; p=p-next; /*found*/ return h; 3.3 程序 请编写函数 fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。 一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开 一行的开始没有空格。(有问题) int fun( char *s) int k = 1 ; while(*s) if (*s = ) k+ ; s+ ; return k ; 第四套: 4.1 填空 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3门课的成绩。所有学 生数据均以二进制方式输出到文件中。函数fun 的功能是从形参 filename 所指的文件中读入 学生数据,并按照学号从小到大排列后,再用二进制方式把排序后的学生数据输出到 filename 所指的文件中,覆盖原来的文件内容。 #define N 5 typedef struct student long sno; char name10; float score3; STU; void fun(char *filename) FILE *fp; int i, j; STU sN, t; /*found*/ fp = fopen(filename, rb); fread(s, sizeof(STU), N, fp); fclose(fp); for (i=0; iN-1; i+) for (j=i+1; jsj.sno) t = si; si = sj; sj = t; fp = fopen(filename, wb); /*found*/ fwrite(s, sizeof(STU), N, fp); fclose(fp); 4.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:在字符串的最前端假如 n 个*号,形成 新串,并且覆盖原串。注意:字符串的长度最长允许为 79。 void fun ( char s, int n ) char a80 , *p; int i; /*found*/ p=s; for(i=0; in; i+) ai=*; do ai=*p; i+; /*found*/ while(*p+); ai=0; strcpy(s,a); 4.3 程序 请编写函数 fun,函数的功能是:统计各年龄段的人数。N 个年龄通过调用随机函数 获得,并放在主函数的 age 数组中;要求函数把 0 至 9 岁年龄段的人数放在 d0中,把 10 至 19 岁年龄段的认输放在 d1中,把 20 至 29 岁年龄段的人数放在 d2中,期于依此类推, 把100 岁(含100)以上年龄的人数都放在 d10中。结果在主函数中输出。 void fun( int *a, int *b) int i, j ; for(i = 0 ; i M ; i+) bi = 0 ; for(i = 0 ; i 10) bM - 1+ ; else bj+ ; 第五套: 5.1 填空 给定程序中,函数 fun 的功能是将参数给定的字符串、整数、浮点数写到文本文件 中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi 和 atof 将字符串转换成 响应的整数、浮点数,然后将其显示在屏幕上。 void fun(char *s, int a, double f) /*found*/ FILE * fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f); /*found*/ fclose(fp) ; fp = fopen(file1.txt, r); /*found*/ fscanf(fp,%s%s%s, str, str1, str2); fclose(fp); a1 = atoi(str1); f1 = atof(str2); printf(nThe result :nn%s %d %fn, str, a1, f1); 5.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:对 N 名学生的学习成绩按从高到低的顺 序找出前 m(10)名学生出来,并将这些学生数据存放在一个动态分配的连续存储区中,此 存储区的首笛子作为函数值返回。 typedef struct ss char num10; int s; STU; STU *fun(STU a, int m) STU bN, *t; int i,j,k; /*found*/ t=(STU *)calloc(sizeof(STU),m); for(i=0; iN; i+) bi=ai; for(k=0; km; k+) for(i=j=0; i bj.s) j=i; /*found*/ tk=bj; bj.s=0; return t; 5.3 程序 请编写函数 fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数 组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,一维数组中 的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。 删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。 int fun(int a, int n) int i, j = 1, k = a0 ; for(i = 1 ; i sl) return t; else return s; 6.3 程序 请编写函数 fun 函数的功能是:移动字符串中的内容,移动的规则如下:把第 1 到第 m个字符,平移到字符串的最后,把第 m+1 到最后的字符移动到字符串的前部。例如, 字符串中原由的内容为:ABCDEFGHIJK,m 的值为 3,则移动后,字符串中的内容应该是 DEFGHIJKABC。 void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */ int i; char t; t=w0; for(i=0;istrlen(w)-1;i+) wi=wi+1; wstrlen(w)-1=t; void fun(char *w, int m) /* 可调用fun1 函数左移字符 */ int i; for(i = 0 ; i m ; i+) fun1(w); 第七套: 7.1 填空 程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数 fun 的功能是输出这位学生的信息。 typedef struct int num; char name9; char sex; struct int year,month,day ; birthday; float score3; STU; /*found*/ void show(STU tt) int i; printf(n%d %s %c %d-%d-%d, tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.m

下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。

y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)

例如:m中的值为5,则应输出0.838611。

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

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

试题程序:

include <conio.h>

include <stdio.h>

double fun(int m)

{double y=1.0;

/**********found*************/

int j=1;

int i;

for(i=2;i<=m;i++)

{

j=-1*j;

/****************found*******+******/

y+=1/(i*i);

}

return(y);

}

main()

{

int n=5;

clrscr();

printf("\n The result is %lf\n",fun(n));

}


正确答案:(1)错误:int j=1 正确:double j=1.0; (2)错误:y+=1/(i*i); 正确:y+=j/(i*i);
(1)错误:int j=1 正确:double j=1.0; (2)错误:y+=1/(i*i); 正确:y+=j/(i*i); 解析:错误1:为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整数。错误2:题中公式是加减相间的运算,通过来实现。


下列给定程序中,函数fun()的功能是:根据整型形参n,计算如下公式的值。

A1=1,A2=1/(5+A1),A3=1/(5+A2),…,An=1/(5+A(n-1))

例如,若n=l0,则应输出0.192582。

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

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

试题程序:

include <conio.h>

include <stdio.h>

float fun(int n)

{

/***********found*************/

int A=1;

int i;

/*************found*************/

for(i=1;i<=n;i++)

A=1.0/(5+A);

return A;

}

main()

{

int n;

clrscr();

printf("\nPlease enter n:");

scanf("%d",&n);

printf("A%d=%lf\n”,n,fun(n));

}


正确答案:(1)错误:int A=1; 正确:float A=1 (2) 错误:for(i=l;i=n;i++) 正确:for(i=2;i=n;i++)
(1)错误:int A=1; 正确:float A=1 (2) 错误:for(i=l;i=n;i++) 正确:for(i=2;i=n;i++) 解析:错误1:A为实型数,应定义为float类型。错误2:由题意,AI=1,从A2开始,An=l/(5+A(n-1)),所以循环应从 2开始。


下列给定程序中函数fun()的功能是:计算n!。例如,给 n输入5,则输出120.000000。

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

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

试题程序:

include <stdio.h>

include <conio.h>

double fun (int n)

{ double result=l.0;

/*************found**************/

if n==0

return 1.0;

while (n>l&&n<170)

/*************found**************/

result *=n--

return result;

}

main ( )

{ int n;

printf ("Input N: ");

scanf ( "%d" &n);

printf ("\n\n%d!=%lf\n\n",n, fun(n));

}


正确答案:(1)错误:if n==0 正确:if(n==0) (2)错误:result*=n-- 正确:result*=n--;
(1)错误:if n==0 正确:if(n==0) (2)错误:result*=n-- 正确:result*=n--; 解析:在做这道题之前,我们首先应该明白一个数学上的概念,一般判卷人员先要执行程序,如果结果正确,得满分,否则错一个扣分,再错再扣,本题考查5! 即5!=5×4×3×2×1=120,要求输出double型结果。


下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。

t=-1+1/2+1/3+1/4+…+1/m

例如,若输入5,则应输出2.283333。

请改正程序中的错误,使它能计算出正确的结果。

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

试题程序:

include <conio.h>

include <stdio.h>

double fun(int m)

{

double t=1.0;

int i;

for(i=2;i<=m;i++)

/*************found**************/

t+=1.0/k;

/*************found**************/

return i;

}

main()

{int m;

clrscr();

printf("\nPlease enter linteger number:");

scanf("%d",&m);

printf("\nThe result is%1f\n", fun(m));

}


正确答案:(1)错误:t+=1.0/k; 正确:t+=1.0/i; (2) 错误:return i; 正确:return t;
(1)错误:t+=1.0/k; 正确:t+=1.0/i; (2) 错误:return i; 正确:return t; 解析:该题目考查分母成等差数列递增的一个数学公式,我们先看看循环条件for(i=2;i<=m;i++),i是从2开始递增到m,所以t的值应该由1.0/i的值逐步循环叠加后的结果,而不是t+=1.0/k;,return i;考查对程序的解读能力,当循环结束后(由输入 m的值决定),函数值返回当前t的值。


下列给定程序中,函数fun()的功能是:计算整数n的阶乘。

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

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

试题程序:

include <stdio.h>

double fun(int n)

{

double result=l.0;

whil (n>l&&n<170)

/**************found********************/

result*=--n;

/**************found********************/

return;

main()

{int. n;

clrscr();

printf("Enter an integer: ");

scanf("%d",&n);

printf("\n\n%d!=%lg\n\n ",n, fun(n));

}


正确答案:(1)错误:result*=--n; 正确:result*=n--; (2)错误:return; 正确:return result;
(1)错误:result*=--n; 正确:result*=n--; (2)错误:return; 正确:return result; 解析:该题采用循环语句计算n的阶乘。当n大于1且小于170时,令result与n相乘,同时n自动减1,循环至n=2(n=1时无需相乘):注意:o和1的阶乘都等于1,可用条件语句和循环语句实现上述功能。

更多 “【最新】全国计算机等级考试2级C语言上机题库” 相关考题
考题 使用VC6打开考生文件夹下的工程RevProj10。此工程包含一个源程序文件RevMain10.cpp。在该文件中,函数fun的功能是:计算出数组x中的最小值与次最小值,并分别将其与x[0]、x[1]交换。请改正程序中的错误,使它能得到正确结果。注意,不要改动主函数,不得删行或增行,也不得更改程序的结构。源程序文件RevMain10.cpp中的程序清单如下://RevMain10.cppinclude <iostream>using namespace std;define N 30int fun(int *x, int n);int main (){int h[N]={4,7, 6, 5, 1, 7,3, 8,0,2,3};int i;for (i=0; i<11; i++)cout<<h [i] << " " ;cout <<"/n";fun(h, 11);for (i=0; i<n; i++)cout<<h [i]<<" ";cout<<' \n';return 0;}int fun(int *x, int n){int i,t;int a1=0, a2=0,min1=32767,min2=32676;/* * * * *FOUND * * * * */for(i=1;i<n;i++){if (x [i]<min1){min2=min1;a2=a1;min1=x [i];a1=i;}else if (x [i] <min2){min2=x [i];a2=i;}}/* * * * *FOUND * * * * */t=x[0];x[a1]=x[0];x[a1]=t;/* * * * *FOUND * * * * */t=x[1] ;x[a2]=x[1];x[a2]=t;}正确答案:

考题 下列给定程序中,函数fun()的功能是找出100~n(n不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include<stdio.h>define N 100int fun(int *s,int n){int i,j,k,a,b,c;j=0;for(i=100;i<n;i++){/*************found***********/k=n;a=k%10;k/=10;b=k%10;c=k/10;if(a==b+c)/************found**************/s[j]=i;}return j;}main(){int a[N],n,num=0,i;do{printf("\nEnter n(<=1000):”);scanf("%d",&n);}while(n>1000);num=fun(a,n);printf("\n\nThe result:\n”);for(i=0;i<num;i++)printf("%5d",a[i]);printf("\n\n");}正确答案:(1) 错误:k=n; 正确:k=i;(2) 错误:s[j]=i; 正确:s[j++]=i;(1) 错误:k=n; 正确:k=i;(2) 错误:s[j]=i; 正确:s[j++]=i; 解析:错误1:k就是当前要被判断的数,是随着i值的变化而变化的。错误2:在循环中,j是数组的下标要递增。

考题 下面程序的运行结果是:[ ]。fun(int t[],int n){ int i,m;if(n=1) return t[0];elseif(n>=2) {m=fun(t,n-1);return m;}}main(){ int a[]={11,4,6,3,8,2,3,5,9,2};printf("%d\n",fun(a,10));}正确答案:1111 解析:此题主要考核的知识点是数组名作为函数参数及函数调用牙口参数的传递。调用实参可知n=10,形参数组t指向实参a的首地址t[0]=11。执行fun()函数的if-else语句,因为n=10所以执行else语句,在满足if(n>=2)的条件下:m=fun(t[0],9), m=fun(t[0],8), m=fun(t[0],7),......m=fun(t[0],2), .m=fun(t[0],1),当n=1时满足if(n=1)的条件,所以执行此处的return语句,返回数组首地址指向的值t[0],所以答案为11。

考题 有以下程序:include fun( char p[] [10]){int n=0,i; for(i=0;i有以下程序:#include <stdio.h>fun( char p[] [10]){ int n=0,i; for(i=0;i<7;i ++) if(p[i][0] =='T') n++; return n;}main( ){ char sir[] [10] = { "Mon" ,"Tue" ,"Wed" ,"Thu" ,"Fri" ,"Sat" ,"Sun" }; prlnff(" % d\n" ,fun(str) );}程序执行后的输出结果是( )。A.1B.2C.3D.0正确答案:B解析:数组名str作为函数参数将实参数组的起始地址传给形参数组p,当形参数组发生变化时主函数中的实参数组中的值也随之发生变化。调用fun函数执行for循环语句后,n为2,返回给main函数输出。

考题 下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值。t=1-1/(2×2)-1/(3×3)-…-l/(m×m)请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <conio.h>include <stdio.h>double fun(int m){ double y=1.O;int i;/*************found**************/for(i=2;i<m;i++)/************found**************/y-=1/ (i*i);return(y);}main(){ int n=5;clrscr();printf("\nThe result is %1f\n", fun(n));}正确答案:(1)错误:for(i=2;im;i++) 正确:for(i=2;i=m;i++)(2) 错误:y-=1/(i*i); 正确:y-=1.0/(i*i);(1)错误:for(i=2;im;i++) 正确:for(i=2;i=m;i++)(2) 错误:y-=1/(i*i); 正确:y-=1.0/(i*i); 解析:该题是一道简单的计算题,循环条件for(i=2;im;i++)中忽略了i=m时的一种情况,因为题目中i是从2到m的一个计算公式,y-=1/(i*i);的错误很明显,是语法错误,由定义double y=1.0可知,应该是y-=1.0/(i*i);,而非y-=1/(i*i);。

考题 假定a=3,下列程序的运行结果是()。ineludeint fun(int n);void main(){cout假定a=3,下列程序的运行结果是( )。 #inelude<iostream.h> int fun(int n); void main() { cout<<"Please input a number:"; int a,result=0; cin>>a; result=fun(a); tout<<result<<end1; } intfun(int n) { int p=1,result=0; for(int i=1;i<=n;i++) { p*=i; result+=p; } return result; )A.4B.8C.9D.20正确答案:C解析:由程序main主函数入手,调用fun函数获得返回值result输出。题目中假定a=3,即调用语句fun(a)中的输入参数为a,进入fun函数,在for循环中当i小于等于n,即输入参数3时,循环3次执行“p*=5;result+=p;”语句。即执行三次p=p*i,result=result+p,result的结果为9。返回的fun函数结果为9,即“coutresultend1;”输出9。

考题 请补充函数fun(),该函数的功能是:输出一个N×N矩阵,N由键盘输入,矩阵元素的值为随机数,并计算出该矩阵四周边元素的平均值,结果由函数返回。例如:当N=4时:注章:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序;include<stdio.h>include<conio.h>include<stdlib.h>define N 20double fun(int a[ ][N],int n){int i,j;int k;double s=0.0;double aver=0.0;printf("*****The array*****\n");for(i=0;i<n;i++){for(j=0;j<n;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);if(【 】)s+=a[i][j];}printf("\n");}k=【 】;aver=【 】;return aver;}main( ){int a[N][N];int n;double S;Clrscr( );printf("*****Input the dimension Of array N*****\n");scanf(“%d”,&n);S=fun(a,n);printf(“***** THE RESULT *****\n”);printf(“The average is %2,3f\n”,S);}正确答案:i==0||i==n-1||j==0||j==n—14*n-4s/ki==0||i==n-1||j==0||j==n—14*n-4s/k 解析:第一空:用二维数组表示n×n矩阵时,周边元素是行下标为0或n-1,列下标为0或n-1的元素,判断时四个条件中只要有一个条件满足,则该元素就是周边元素,所以用“厂运算符。第二空:变量k记录周边元素的个数,在四个顶角上的元素会重复加入,所以要减去4。第三空:变量s保存周边元素的累加和,平均值等于周边元素的累加和除以个数。

考题 试题2本程序中,函数fun的功能是计算整数n的阶乘。程序中存在若干错误,请找出并改正。(注意:不改动程序的结构,不得增行或删行。)#include <stdio.h>double fun(int n){ double result=1.0;while (n>1 && n<170)result*=- -n;return;}main(){ int n;clrscr ();printf(“Enter an integer:”) ;scanf(“%d”,&n);printf(“\n\n%d!=%lg\n\n”,n,fun(n)) ;nono ();{int n,i;FILE *rf, *wf ;rf = fopen (“g03.in”,“r”) ;wf = fopen(“g03.out”,“w”) ;for (i=1; i<=10;i++){ fscanf(rf, “%d”,&n) ;fprintf (wf, “%lg\n”,fun( n ) );}fclose (rf) ;fclose (wf) ;}正确答案:试题2分析**********************本题中函数的功能是计算整数n的阶乘,result存放阶乘的结果,result*=- -n;是先将n的值减1,然后在于result相乘,此举并没有将n本身计算进去。最后返回的时候,返回的应该是result。试题2答案*************************[1] 第5行的result*=--n改为result*=n--;[2] 第6行的return后面加上返回值(result)。

考题 下列给定程序中函数fun()的功能是计算1/n!的值。例如:给n输入5,则输出0.0083330请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:include <stdio.h>include <conio.h>/******+****found*************/int fun(int n){double result=1.0;if(n==0)return 1.0;while(n>1 && n<170)/**********found************/result *=n++;result=1/result;return result;}main(){int n;printf("Input N:");scanf("%d",&n);printf("\n1/%d!=%If\n",n,fun(n));}正确答案:(1)错误:int fun(int n) 正确:double fun(int n)(2)错误:result*=n++; 正确:result*=n--;(1)错误:int fun(int n) 正确:double fun(int n)(2)错误:result*=n++; 正确:result*=n--; 解析:错误1:函数的返回值为实型数据,所以函数的返回类型应为double。错误2:根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。

考题 以下程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果,请填空。int fun( int n){ int m=0,f=1,i; for(i=1;i<=n;i++) { m+=i*f; f=-f; } return m;}main{ printf("m=%d\\n",); }正确答案:fun(10)在本题中,题目给出了程序的功能是调用函数fun计算m=1-2+3-4+…+9-10,并输出结果。在程序中,首先定义了fun函数,该函数带有一个整型变量的形参,在函数体中,定义三个整型变量m、f和i,变量m用来存放计算的结果,变量i作为循环变量,变量f用来控制数据的正负。程序运行for循环。当循环变量i=1时,m=0+1*1=1,然后将变量f变为-1。当循环变量i=2时,m=1+2*(-1),然后将变量f变为1。当循环变量i=3时,m=1+2*(-1)+3*1,然后将变量f变为-1。以此类推,直到循环结束,可以实现m=1-2+3-4+…+9-10。最后通过return语句返回m的结果。在主函数中,只有一条输出语句,本题的空就是输出语句的输出表达式,从题目的要求可以知道,此空是调用fun计算m=1-2+3-4+…+9-10,从上面对fun的分析可以,形参n就是要计算数的最大数。因此,此空需要填写的内容为fun(10)。