计算机考试C语言题库整理浩神

以下函数按每行 8 个输出数组中的数据

void fun(int *w,int n)

{ int i;

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

{ ____________

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

}

printf("\n");

}

下划线出应填入的语句是

A)if(i/8==0) printf("\n");

B)if(i/8==0) continue;

C)if(i%8==0) printf("\n");

D)if(i%8==0) continue;


正确答案:C


编写函数jsValue,它的功能是:求Hofstadter数列中的第m项H(m)(m<1000),结果由函数返回。其中数列H(n)的定义为:

H(1)=H(2)=1

H(n)=H(n-H(n-1))+H(n-H(n-2))(n>2)

最后调用函数writeDat()读取50个数据m,分别得出结果且把结果输出到文件out.dat中。

例如:当t=997时,函数值为605。

部分源程序已给出。

请勿改动主函数main()和写函数writeDat()的内容。

include<stdio. h>

int jsValue(int m)

{

main ( )

{

int m;

m=300;

printf ("m=%d, k-%d\n", m, jsValue (m));

writeDat ( );

writeDat ( )

{

FILE *in, *out;

int i,m,s;

in= fopen ( "in. dar" , "r" );

ut=f open ( "out. dar" , "w" );

for (i=0; i<50; i++) {

fscanf (in, "%d", &m);

s=jsValue (m);

printf( "%d\n", s );

fprintf (out, "%d\n" , s );

}

fclose (in);

fclose (out);


正确答案:int jsVelue(int m) { if (m0) return -1; /*参数错误正常运行不会出现*/ if(m==1 || m==2) return 1; /*初值H[1]:H[2]=1*/ else return jsValue (m-jsValue (m-1)) +jsValue (m-jsValue (m-2)); /*调用jsValue递归计算H[k]*/ } /*解法二递推*/ int jsValue(int m) { int H[1000] i; H[1]=1;H[2]=1; /*初值H[1]=H[2]=1*/ for (i=3;i=m;i++) { H[i] = H[i-H[i-1)] +H[i-H[i-2]]; /*H(k)(ki)的值都己计算完成直接使用*/ } return H[m]; /*返回所求的值*/ }
int jsVelue(int m) { if (m0) return -1; /*参数错误,正常运行不会出现*/ if(m==1 || m==2) return 1; /*初值H[1]:H[2]=1*/ else return jsValue (m-jsValue (m-1)) +jsValue (m-jsValue (m-2)); /*调用jsValue递归计算H[k]*/ } /*解法二,递推*/ int jsValue(int m) { int H[1000], i; H[1]=1;H[2]=1; /*初值H[1]=H[2]=1*/ for (i=3;i=m;i++) { H[i] = H[i-H[i-1)] +H[i-H[i-2]]; /*H(k)(ki)的值都己计算完成,直接使用*/ } return H[m]; /*返回所求的值*/ } 解析:类型:序列计算。
关键点:分析序列定义,选择合适的方法生成和存储序列或序列中的特定值。
此题有两种解法:
1.按照定义编写递归函数;(计算量大,容易超时,慎用)。
2.保存所有值,从小到大递推求解。


请补充完整程序,使得程序能实现以下功能:

从文件IN.dat中读取200个整数至数组number中,求出最大数max及最大数的个数cnt和数组number中能被3整除或能被7整除的算术平均值ave(保留2位小数)。把结果max、 cnt、ave输出到OUT. dat文件中。

注意:部分程序、读数据函数read_ dat (int number[200])及输出格式已给出。

include <conio. h>

include <stdio. h>

define N 200

void read_ dat(int number[N])

{ int i, j;

FILE *fp;

fp = fopen("IN. dat", "r");

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

{ for (j=0; j<10; j++)

{ fscanf(fp, "%d,", &number[i*10+j]);

printf("%d ", number[i*10+j]);

}

printf ("\n");

}

fclose (fp);

}

void main ()

{ int cnt, number[N], max;

float ave;

FILE *fw;

int i, k; '

long j = 0;

fw = fopen("OUT.dat", "w");

read_ dat (number);

/ ************************************************ /

/ ************************************************ /

printf("\n\nmax=%d, cnt=%d, ave=%6.2f\n", max, cnt, ave);

fprintf(fw, "%d\n%d\n%6.2f\n", max, cnt, ave);

fclose (fw);

}


正确答案:max = number[0]; for (i=1 k=0; iN; i++) { if (number[i] > max) max = number[i]; if (number[i]%3==0 || number[i]%7==0) { j += number[i]; k++; } } for (i=0 cnt=0; iN; i++) if (number[i] == max) cnt++; ave = (float) (j*100/k)/100; [解题思路] 用整型变量max保存数组number中元素的最大值首先把数组number的第一个元素number[0]存入max中;然后在for循环语句中当循环变量i从1递增到N-1时 对数组number中的每一个元素number[i]与max进行比较如果表达式number[i]>max成立则把数组元素number[i]的值存入变量max中;再用表达式number[i]%3==0|| number[i]%7==0判断number[i]能否被3或7整除如果表达式结果值为真则把数组元素 number[i]的值与变量j的值相加同时计数变量k加1。退出循环后变量max中的值就是数组number中元素的最大值再用for循环语句对数组number中的每一个元素与max的值进行相等的判断如果number[i]的值等于max则计数变量cnt加1。最后用表达式 (float)(j*100/k)/100求得数组number中能被3整除或能被7整除的算术平均值。
max = number[0]; for (i=1, k=0; iN; i++) { if (number[i] > max) max = number[i]; if (number[i]%3==0 || number[i]%7==0) { j += number[i]; k++; } } for (i=0, cnt=0; iN; i++) if (number[i] == max) cnt++; ave = (float) (j*100/k)/100; [解题思路] 用整型变量max保存数组number中元素的最大值,首先把数组number的第一个元素number[0]存入max中;然后在for循环语句中当循环变量i从1递增到N-1时, 对数组number中的每一个元素number[i]与max进行比较,如果表达式number[i]>max成立,则把数组元素number[i]的值存入变量max中;再用表达式number[i]%3==0|| number[i]%7==0判断number[i]能否被3或7整除,如果表达式结果值为真,则把数组元素 number[i]的值与变量j的值相加,同时计数变量k加1。退出循环后,变量max中的值就是数组number中元素的最大值,再用for循环语句对数组number中的每一个元素与max的值进行相等的判断,如果number[i]的值等于max,则计数变量cnt加1。最后用表达式 (float)(j*100/k)/100求得数组number中能被3整除或能被7整除的算术平均值。


请编制程序,要求:将文件IN92.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out92.dar中。

部分程序、读函数read_dat(int xx[200])及输出格式已给出。

试题程序:

include<conio.h>

include<stdio.h>

define N 200

void read_dat(int xx[N])

{

int i,j;

FILE *fp;

fp=fopen("IN92.DAT","r");

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

{

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

{

fscanf(fp,"%d,",&xx[i*10+j]);

printf("%d",xx[i*10+j]);

}

printf("\n");

}

fclose(fp);

}

void main()

{

int i,k,cnt,xx[N],max;

float pj;

FILE *fw;

long j=0;

clrscr();

fw=fopen("out92.dat","w");

read_dat(xx);

printf("\n\nmax=%d,cnt=%d,pj=%6.2f/n",max,cnt,pj);

fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);

fclose(fw);

}


正确答案:void main ( ) { int ikcntxx[N]max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dar""w"); read_dar(xx); max=xx[0]; for(i=1k=0;iN;i++) { if(xx[i]>max) max=xx[i]; /*求出数组xx中最大数max*/ if(xx[i]%3==0 ||xx[i]%7==0) { j+=xx[i]; /*求出数组xx中值能被3整除或能被7整除的数的总和*/ k++; } } for(i=0cnt=0;iN;i++) if(xx[i]==max) cnt++; /*求出数组xx中最大数max的个数*/ pj=(float)(j*100/k)/100; /*求出数组xx中值能被3整除或被7整除的数的平均值*/ printf("\n\nmax=%dcnt=%dpj=%6.2f\n"maxcntpj); fprintf(fw"%d\n%d\n%6.2f\n"maxcntpj); fclose(fw); }
void main ( ) { int i,k,cnt,xx[N],max; float pj; FILE *fw; long j=0; clrscr(); fw=fopen("out92.dar","w"); read_dar(xx); max=xx[0]; for(i=1,k=0;iN;i++) { if(xx[i]>max) max=xx[i]; /*求出数组xx中最大数max*/ if(xx[i]%3==0 ||xx[i]%7==0) { j+=xx[i]; /*求出数组xx中值能被3整除或能被7整除的数的总和*/ k++; } } for(i=0,cnt=0;iN;i++) if(xx[i]==max) cnt++; /*求出数组xx中最大数max的个数*/ pj=(float)(j*100/k)/100; /*求出数组xx中值能被3整除或被7整除的数的平均值*/ printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj); fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj); fclose(fw); } 解析:本题考查的知识点如下:
(1)运算符“%”的使用。
(2)判断结构中多个条件的布尔运算。
首先,要找出数组中最大的元素。先定义第1个元素为最大的元素,然后依次和后面的元素比较,若后面的数中有大于第1个元素的,则将这个数定义为最大的元素。再和后面的数进行比较。一个数a除以b取余所得的数为0,则a能被b整除。根据题意可知,被3整除和被7整除两个条件满足一个即可,所以两个条件之间用“或”运算。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义了一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。


已知在文件IN42.DAT中存有N个实数(N<200),函数ReadDat()读取这N个实数并存入数组xx中。请编制程序CalValue(),其功能要求:

(1)求出这N个实数的平均值aver。

(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT42.DAT中。

注意;部分源程序已给出。

请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。

试题程序:

include<stdio.h>

include<conio.h>

define MAXNUM 200

float xx[MAXNUM];

int N=0;

double aver=0.0;

double sumint=0.0;

double sumdec=0.0;

int ReadDat( );

void WriteDat( );

void CalValue

{

}

void main( )

{

clrscr( );

if(ReadDat( ))

{

printf ("数据文件IN42.DAT不能打开! \007\n");

return;

}

CalValue ( );

printf ("文件IN42.DAT中共有实数%d个\n", N);

printf ("平均值=%.21f\n", aver);

printf ("整数部分=%.21f\n", sumint);

printf ("小数部分之和=%.21f\n", sumdec);

WriteDat( );

}

int ReadDat()

{

FILE *fp;

int j;

if((fp=fopen("in42.dat","r"))==NULL)

return 1;

while(!feof(fp))

{

fscanf (fp, "%f", &xx [N] );

if (xx[N] >0.001) N++;

}

fclose(fp);

return 0;

}

void WriteDat()

{

FILE *fp;

fp=fopen("OUT42.DAT","w");

fprintf(fP,"%d\n%.21f\n%.21f\n%.21f\n",N,aver,sumint,sumdec);

fclose(fp);

}


正确答案:void CalValue( ) { int i; double xsum=0; for(i=0;iN;i++) { sumint=sumint+(int)xx[i]; /*求整数部分之和*/ x=xx[i]-(int)xx[i]; /*求每个数的小数部分*/ sumdec=sumdec+x; /*求小数部分之和*/ sum=sum+xx[i]; /*求N个数之和*/ } aver=sum/N; /*求N个数的平均数*/ }
void CalValue( ) { int i; double x,sum=0; for(i=0;iN;i++) { sumint=sumint+(int)xx[i]; /*求整数部分之和*/ x=xx[i]-(int)xx[i]; /*求每个数的小数部分*/ sumdec=sumdec+x; /*求小数部分之和*/ sum=sum+xx[i]; /*求N个数之和*/ } aver=sum/N; /*求N个数的平均数*/ } 解析:本题考查的知识点如下:
(1)循环结构的使用。
(2)强制类型转换。
将一个实数的整数部分和小数部分分开,这里使用的方法是强制类型转换法。强制类型转换是按照要求将表达式的值转换成指定的类型。将一个实数强制转换成整型数之后,其小数部分被去掉(不是四舍五入,而是直接删除)。对数组中的200个实数求和及平均值,可以使用循环结构。


/*-【程序设计】-题目:用函数求一个N阶方阵右下三角元素的和(包括副 对角线上的元素)。 -*/#include #include #define N 3void wwjt(); int sum(int aN) /*Program*/ /* End */main() int aNN,i,j; for(i=0;iN;i+) for(j=0;jN;j+) aij=rand()%(10)+10; printf(%3d,aij); printf(n); printf(=n); printf(sum=%5dn,sum(a); wwjt();void wwjt() FILE *IN,*OUT; int m,n; int i33; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(m=0;m3;m+) for(n=0;n3;n+) fscanf(IN,%d,&imn); o=sum(i); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);【参考代码】 int i,j,k=0; for(i=0;iN;i+) for(j=N-1-i;jN;j+) k=k+aij; return(k);/*-【程序设计】-功能:删除所有值为y的元素。数组元素中的值和y的值由 主函数通过键盘输入。-*/#include #include#include#define M 20void wwjt(); void fun(int bb,int *n,int y) /*Program*/ /* End */main() int aaM,n,y,k; printf(nPlease enter n:);scanf(%d,&n); printf(nEnter %d positive number:n,n); for(k=0;kn;k+) scanf(%d,&aak); printf(The original data is:n); for(k=0;kn;k+) printf(%5d,aak); printf(nEnter a number to deletede:);scanf(%d,&y); fun(aa,&n,y); printf(The data after deleted %d:n,y); for(k=0;kn;k+) printf(%4d,aak); printf(n); wwjt();void wwjt() FILE *IN,*OUT; int n; int i10; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read FILE Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write FILE Error); for(n=0;n10;n+) fscanf(IN,%d,&in); fun(i,&n,3); for(o=0;on;o+) fprintf(OUT,%dn,io); fclose(IN); fclose(OUT);答案: int i,j; for(i=0;i*n;) if(bbi=y) for(j=i;j*n;j+) bbj=bbj+1; *n=*n-1; else i+; /*-【程序填空】-功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘 输入。-*/#include main() char str80,ch; int i,k=0; /*SPACE*/ gets(【?】); ch=getchar(); /*SPACE*/ for(i=0;【?】;i+) if(stri!=ch) /*SPACE*/ 【?】; k+; /*SPACE*/ 【?】; puts(str); 答案(1)str (2)stri!=0 (3) strk=stri (4)strk=0/*-【程序填空】-功能:对数组 A 中的N( 0 N100)个整数从小到大进行连续编 号,输出各个元素的编号。要求不能改变数组中元素的 顺序,且相同的整数要具有相同的编号。例如:数组是: A=(5,3,4,7,3,5,6) 则输出为:(3,1,2,5,1,3,4)-*/#include main() int i,j,k,n,m=1,r=1,a2100=0 ; printf(Please enter n:) ; scanf(%d,&n) ; for(i=0 ; in ; i+) printf(a%d= ,i) ; scanf(%d,&a0i) ; /*SPACE*/ while(【?】) for(i=0 ; in ; i+) if(a1i=0) /*SPACE*/ 【?】 ; k=i ; for(j=i ; jn ; j+) /*SPACE*/ if(a1j=0 & a0ja0k) 【?】 ; a1k=r+ ; m+ ; for(j=0 ; jn ; j+) if(a1j=0 & a0j=a0k) a1j=a1k ; m+ ; for(i=0 ; in ; i+) printf(a%d=%d, %dn,i,a0i,a1i) ;答案: 1). mm 2). break 3). k=j/*- 【程序改错】-功能:编写函数求2!+4!+6!+8!+10+12!+14!。-*/#include long sum(int n) /*FOUND*/ int i,j long t,s=0; /*FOUND*/ for(i=2;i=n;i+) t=1; for(j=1;j=i;j+) t=t*j; s=s+t; /*FOUND*/ return(t);main() printf(this sum=%ldn,sum(14);答案: 1). int i , j ; 2). printf(score %d., j + 1 ); 3). for(i=0;iN;i+)/*-【程序设计】-功能:求出菲波那契数列的前一项与后一项之比的极限的 近似值。例如:当误差为0.0001时,函数值为0.618056。-*/#include #include math.hvoid wwjt(); float fun() /*Program*/ /* End */、 main() printf(y=%fn,fun(); wwjt();void wwjt() FILE *IN,*OUT; float fOUT; IN=fopen(19.IN,r); if(IN=NULL) printf(Please Verify The Currernt Dir.it May Be Changed); OUT=fopen(19.out,w); if(OUT=NULL) printf(Please Verify The Current Dir. it May Be Changed); fOUT=fun(); fprintf(OUT,%fn,fOUT); fclose(IN)、; fclose(OUT);答案floatf1=1,f2=1,f3;floatr1=2,r2;dor2=r1;r1=f1/f2;f3=f1+f2;f1=f2;f2=f3;while(fabs(r1-r2)1e-4);returnr1;/*-【程序设计】-功能:编写函数fun计算下列分段函数的值: x2+x+6 x0且x-3 f(x)= x2-5x+6 0 x10且x2及x3 x2-x-1 其它-*/ /* End */main() float x,f; printf(input x=); scanf(%f,&x); f=fun(x); printf(x=%f,f(x)=%fn,x,f); ww

请补充main 函数,该函数的功能是:把文本文件B中的内容追加到文本文件A的内容之后。

例如,文佃的内容为“I’m ten.”,文件A的内容为“I’ m a student!”,追加之后文件A的内容为“I’m a student !I’m ten.”

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

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

试题程序:

include<stdio, h>

include<conio. h>

define N 80

main()

{

FILE *fp, * fp1, *fp2;

int i;

char c[N] ,t, ch;

clrscr ();

if ((fp=fopen ("A. dat ", "r") ) == NULL)

{

printf ("file A cannot be opened\n");

exit (0);

}

printf("\n A contents are : \n\n");

for (i=0; (ch=fgetc (fp)) !=EOF; i++)

{

C [i]=ch;

putchar (c [i]);

fclose (fp);

if((fp=fopen ("B. dat", "r") )==NULL)

{

printf ("file B cannot be opened\n");

exit (0);

}

printf("\n\n\nB contents are : \n\n");

for (i=0; (ch=fgetc (fp)) !=EOF; i++)

{

c [i] =ch;

putchar (c [i]);

}

fclose (fp);

if ( (fp1=fopen ("A.dat" ,"a"))【 】(fp2

=fopen ("B. dat", "r") ) )

{

while ( (ch=fgetc (fp2)) !=EOF)

【 】;

}

else

{

printf("Can not open A B !\n");

}

fclose (fp2);

fclose (fp1);

printf ("\n***new A contents***\n\n");

if ( ( fp=fopen ("A. dar", "r") )==NULL)

{

printf ("file A cannot be opened\n");

exit (0);

}

for (i=0; (ch=fgetc (fp)) !=EOF;i++)

{

c [i] =ch;

putchar (c [i] );

}

【 】;

}


正确答案:&& fputc (chfp1) fclose (fp)
&& fputc (ch,fp1) fclose (fp) 解析:第一空:当两个文件都被成功打开时,才能将文件B中的内容追加到文件A中,所以应该用“与”运算符——“&&”。第三空:fputc()函数用于将一个字符写到磁盘文件上去,调用形式为:fputc (要输出的字符,文件指针);。第三空:对一个文件进行操作后,应该关闭它,以防它再被误用。调用形式为:fclose(文件指针);。


下列程序的功能是:将大于整数m且紧靠m的k个被3除余1的素数存入数组xx。请编写函数num(int m,imt k,int xx[])实现程序的要求,最后调用函数readwriteDat()把结果输出到文件out.dat中。

例如:若输入17,5,则应输出:19,31,37,43,61。

部分源程序已给出。

请勿改动主函数main()和输出数据函数readwriteDat()的内容。

include <conio.h>

include <stdio.h>

void readwriteDat();

void num(int m, int k, int xx[])

{

}

main ( )

{

int m,n,xx[1000];

clrscr();

printf("\nPlease enter two integers:");

scanf(" %d%d" ,&m,&n);

num(m,n,xx);

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

printf(" %d" ,xx[m]);

printf("\n" );

readwriteDat();

}

viod readwriteDat()

{

int m,n, xx[1000], i;

FILE *rf,*wf;

rf=fopen("in.dat" ," r" );

wf=fopen(" out.dat" ," w" );

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

fscanf(rf," %d%d" ,&m,&n);

num(m,n,xx);

for(m=0;m<n;m++)fprintf(wf," %d" ,xx[m]

fprintf(wf,"\n" );

}

fclose(rf);

fclose(wf);

}


正确答案:int isP(int m) { int i; for ( i=2; im; i++) if(m % i==O)return 0; /*用小于m的所有整数去试除*/ /*除尽则m不是素数*/ /*此步有优化余地*/ return 1; } /*寻找满足条件的素数*/ void num(int m int k int xx[]) { int s=0; for (++m; k>0 ;m++) if (m%3==1 && isP(m) ) { xx[s++]=m; k--; } }
int isP(int m) { int i; for ( i=2; im; i++) if(m % i==O)return 0; /*用小于m的所有整数去试除*/ /*除尽则m不是素数*/ /*此步有优化余地*/ return 1; } /*寻找满足条件的素数*/ void num(int m, int k, int xx[]) { int s=0; for (++m; k>0 ;m++) if (m%3==1 && isP(m) ) { xx[s++]=m; k--; } } 解析:类型:素数判断与运算。
关键点:素数判定。
求素数的题,可以先定义一个求素数的函数,然后在程序中直接调用,这样简单而且不容易出错。
原程序如果给了求素数的函数,可以直接调用。


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

F(0)=0, F(1)=1

F(n)=F(n-1)+F(n-2)

最后调用函数writeDat(),把结果输出到文件OUT10.DAT中。

例如:当t=1000时,函数值为1597。

注意:部分源程序已给出。

请勿改动主函数main()和写函数WriteDat()的内容。

试题程序:

include<stdio.h>

int jsValue(int t)

{

}

main()

{

int n;

n=1000;

printf("n=%d, f=%d\n", n,jsValue(n));

writeDat();

}

writeDat()

{

FILE *in, *out;

int n,s;

ut = fopen("OUT10.DAT", "w");

s = jsValue(1000); printf("%d",s);

fprintf(out, "%d\n", s);

fclose(out);

}


正确答案:int jsValue(int t) { int f1=0f2=1fn; fn=f1+f2; while(fn=t) {f1=f2;f2=fn;fn=f1+f2;} /*如果当前的Fibonacci数不大于t则计算下一个 Fibonacci数*/ return fn; /*返回Fibonacci数列中大于t的最小的一个数*/ }
int jsValue(int t) { int f1=0,f2=1,fn; fn=f1+f2; while(fn=t) {f1=f2;f2=fn;fn=f1+f2;} /*如果当前的Fibonacci数不大于t,则计算下一个 Fibonacci数*/ return fn; /*返回Fibonacci数列中大于t的最小的一个数*/ } 解析:解答本题的关键是要充分理解题意,只有理解了题意本身的数学过程,才能把数学过程转化为程序逻辑。根据已知数列,我们不难发现:Fibonacci数列中,从第三项开始,每一项都可以拆分为前两项之和。本题要求找到该数列中“大于t的最小的一个数”。这里可以借助一个while循环来依次取数列中的数,直到出现某一项的值大于t,那么这一项就是“大于t的最小的一个数”。注意:在循环体内部,我们用变量f1始终来表示第n项的前面第二项,用变量f2来始终表示第n项的前面第一项。这就实现了变量的活用与巧用。


请编制程序,要求:将文件IN94.DAT中的200个整数读入数组xx中,求出数组xx中奇数的个数cnt1和偶数的个数cnt2,以及数组xx下标为奇数的元素值的算术平均值pj(保留两位小数),结果cnt1,cnt2,pj输出到OUT94.DAT中。

部分程序、读函数read_dat(int xx[200))及输出格式已给出。

试题程序:

include<conio:h>

include<stdio.h>

define N 200

void read_dar (int xx [N] )

{

int i,j;

FILE *fp;

fp=fopen("IN94.DAT","r");

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

{

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

{

fscanf(fp,"%d,,&xx[i*10+j]);

printf("%d",xx[i*10+j]);

}

printf("\n");

}

fclose(fp);

}

void main()

{

int cnt1,cnt2,xx[N];

float pj;

FILE *fw;

clrscr();

fw=fopen("out94.dat","w");

read_dat(xx);

printf("\n\ncnt1=%d, cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);

fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);

fclose(fw);

}


正确答案:void main() { int cnt1cnt2xx[N]; float pj; FILE *fw; int ik=0; long j=0; cnt1=0; cnt2=0; pi=0.0; clrscr(); fw=fopen("out94.dat""w"); read_dat(xx); for(i=0;iN;i++) { if(xx[i]%2) cnt1++; /*求出数组xx中奇数的个数cnt1*/ else cnt2++; /*求出数组xx中奇数的个数cnt2*/ if(i%2==1) { j+=xx[i]; /*求数组xx下标为奇数的元素值的总和*/ k++; } } pj=(float)(j*100/k)/100; /*求数组xx下标为奇数的元素值的算术平均值pj*/ printf("\n\ncnt1=%dcnt2=%dpj=%6.2f\n"cnt1cnt2pj); fprintf(fw"%d\n%d\n%6.2f\n"cnt1cnt2pj); fclose(fw); }
void main() { int cnt1,cnt2,xx[N]; float pj; FILE *fw; int i,k=0; long j=0; cnt1=0; cnt2=0; pi=0.0; clrscr(); fw=fopen("out94.dat","w"); read_dat(xx); for(i=0;iN;i++) { if(xx[i]%2) cnt1++; /*求出数组xx中奇数的个数cnt1*/ else cnt2++; /*求出数组xx中奇数的个数cnt2*/ if(i%2==1) { j+=xx[i]; /*求数组xx下标为奇数的元素值的总和*/ k++; } } pj=(float)(j*100/k)/100; /*求数组xx下标为奇数的元素值的算术平均值pj*/ printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj); fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj); fclose(fw); } 解析:本题考查的知识点如下:
(1)运算符“%”的使用。
(2)强制类型转换和小数位数的保留。
一个数除以2取余所得的数为1,则它是奇数,否则是偶数,取余使用运算符“%”。在本题中,要求算术平均值保留两位小数。使用的方法是:将和乘以100除以个数强制类型转换后再除以100。为了保证和有效,我们定义了一个长整型变量来记录和。因为个数也为整型,运算符“/”在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将和乘以100的结果转换为浮点类型,这样就可以实现保留两位小数。使用循环对所有数据进行访问。


下列程序的功能是:求出ss字符串中指定字符c的个数,并返回此值。请编写函数int num(*char ss,char c)以实现程序要求,最后调用函数readwriteDat(),把结果输出到文件out.dat中(注:大小写字母有区别)。例如:若输入字符串“ss="123412132" , c=’1’”,则输出“3”。部分源程序已给出。请勿改动主函数main()和输出数据函数writeDat()的内容。#include <conio.h>#include <stdio.h>#define M 81void readwriteDAT(); int num(char *ss,char c){ } main(){ char a[M],ch; clrscr(); printf("\nPlease enter a string:" );gets(a); printf("\nPlease enter a char;" );ch=getchar(); printf("\nThe number of the char is:%d\n" ,num(a,ch)); readwriteDAT();}viod readwriteDAT(){ int i; FILE *rf,*wf; char a[M],b[M],ch; rf=fopen("in.dat" ,"r" ); wf=fopen(" out.dat" ,"w" ); for(i=0;i<10;i++){ fscanf(rf," %s",a); fscanf(rf," %s" ,b); ch=*b; fprintf(wf," %c=%d\n:" ,ch,num(a,ch));} fclose(rf); fclose(wf);}


正确答案:请参考解析
【解析及答案】
本题的任务是把单词统计函数num(char *ss,char c) 补充完整,其中,ss是需统计的字符串,c是待统计的字符。
本题属于单个字符串统计问题,处理过程相对简单一些。首先,把计数器清零。然后,一边扫描字符串ss,一边统计字符c出现的次数,如果字符c出现1次,那么计数器的值自动增加1。最后,计数器的值就是字符c在字符串ss中出现的总次数。求解核心是字符c的匹配和计数器的计数。综上所述,完整的统计函数num(char *ss,char c) 如下。
 int num(char *ss,char c)
{
  int i=0;
  while(*ss!=0)
  if(*ss++==c) i++;
  return i;
}

更多 “计算机考试C语言题库整理浩神” 相关考题
考题 下列程序的主要功能是()。  #include   main( ) {      FILE *in,*out;      char ch,infile[10],outfile[10];      printf(“Enter the infile name:/n”);      scanf(“%s”,infile);      printf(“Enter the outfile name:/n”);      scanf(“%s”,outfile);      if((in=fopen(infile, “r”))==NULL){          printf(“Cannot open infile/n”);          exit(0);      }  if((out=fopen(outfile, “w”))==NULL){          printf(“Cannot open outfile/n”);          exit(0);      }      while(!feof(in))          fputc(fgetc(in),out);      fclose(in);      fclose(out);  }正确答案:将一个磁盘文件复制到另一个磁盘文件中

考题 请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDAT()的内容。试题程序:include<conio.h>include<stdio.h>void countValue(int *a, int *n){}main ( ){int aa[1000],n, k;clrscr();countValue (aa, &n);for(k=0;k<n; k++)if((k+1) %10 ==0){printf("%5d",aa[k]);printf("\n");}else printf("%5d",aa[k]);writeDAT();}writeDAT ( ){int aa[1000],n, k;FILE *fp;fp=fopen("out79.dat","w");countValue(aa,&n);for(k=0; k<n; k++)if((k+1)%10==0){fprintf(fp,"%5d",aa[k]);fprintf(fp,"\n");}else fprintf (fp,"%5d",aa[k]);fclose(fp);}正确答案:void countValue(int *a int *n){int i;*n=0;for(i=1;i=1000;i++)if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/{*a=i;*n-*n+1; /*统计个数*/a++;}else if (i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/{*a=i;*n=*n+1; /*统计个数*/a++;}}void countValue(int *a, int *n){int i;*n=0;for(i=1;i=1000;i++)if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/{*a=i;*n-*n+1; /*统计个数*/a++;}else if (i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/{*a=i;*n=*n+1; /*统计个数*/a++;}} 解析:本题考查的知识点如下:(1)指针的使用。(2)“%”运算符。(3)判断结构中多个条件的布尔运算。本题中,函数countValue()以指针为参数,这里就要涉及到指针的使用。a是指向数组的指针,初始时,指向数组的第一个元素。地址每加1时,依次指向后面的元素。一个数a若能被b整除,则a除以b取余得数为0。能被7或11整除,但不能被7和11同时整除,则有两种情况,能被7整除但不能被11整除,能被11整除但不能被7整除。这里就要用到多个条件的布尔运算。

考题 编写函数,isValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中 Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)最后调用函数writeDat(),把结果输出到文件OUTl0.DAT中。例如:当t=1000时,函数值为1597。注意:部分源程序已给出。请勿改动主函数main()和写函数WriteDat()的内容。include <stdio.h>int jsValue(int t){}main ( ){int n;n=1000;printf("n=%d, f=%d\n", n, jsValue(n));writeDat ();}writeDat (){FILE *in, *out;int n, s;ut = fopen ("OUT10.DAT", "w");s = jsValue(1O00); printf("% d",s);fprintf(out, "%d\n", s);fclose (out);}正确答案:int jsValue(int t){int f1=0f2=1fn;fn=f1+f2;while(fn=t) {f1=f2;f2=fn;fn=f1+f2;) /*如果当前的Fibonacci数不大于t则计算下一个Fibonacci数*/return fn; /*返回Fibonacci数列中大于t的最小的一个数*/}int jsValue(int t){int f1=0,f2=1,fn;fn=f1+f2;while(fn=t) {f1=f2;f2=fn;fn=f1+f2;) /*如果当前的Fibonacci数不大于t,则计算下一个Fibonacci数*/return fn; /*返回Fibonacci数列中大于t的最小的一个数*/} 解析:解答本题的关键是要充分理解题意,只有理解了题意本身的数学过程,才能把数学过程转化为程序逻辑。根据已知数列,我们不难发现:Fibonacci数列中,从第三项开始,每一项都可以拆分为前两项之和。本题要求找到该数列中“大于t的最小的一个数”。这里可以借助一个while循环来依次取数列中的数,直到出现某一项的值大于t,那么这一项就是“大于t的最小的一个数”。注意:在循环体内部,我们用变量f1始终来表示第n项的前面第二项,用变量侵来始终表示第n项的前面第一项。这就实现了变量的活用与巧用。

考题 已知在文件in.dat中存有若干个(个数<200)四位非零整数,函数readdat()读取这若干个整数并存入数组xx中。请编制函数calvflue(),其功能要求:①求出该文件中共有多少个正整数totnum;②求这些数右移1~6位,产生的一系列新数中含至少一个完全平方数(某个整数的平方)的个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数writedat()把所求的结果输出到文件out.dat中。部分源程序已给出。请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。include<stdio.h>include<conio.h>define MAXNUM 200int xx[MAXNUM];iht totnum=0;iht totcnt=0;double totpjz=0.0;int readdat(void);void writedat(void);void calvalue(void){}void main (){int i;clrscr ();for (i=0; i if (readdat ()){printf("Can't open the data file in.dat!\007\n");return;}calvalue ();printf ( "totnum=%d\n", totnum);printf ( "totcnt=%d\n" , totcnt );printf ( "totpj z=%. 21f\n", totpj z);writedat ();}int readdat (void){FILE *fp;int i=0;if( (fp=fopen ("in.dar", "r") )==NULL) return 1;while ( ! feof (fp))fscanf (fp, "%d, ", &xx [i++] ;fclose (fp);return 0;}void writedat (void){FILE *fp;fp=fopen ( "out. dar", "w" )fprint f ( fp, "%d\n%d\n%. 21 f\n", totnum, totcnt, totpjz);fclose (fp);}正确答案:#include math.h>void calvalue(void){int i j data sqt;for(i=0;i {if(!xx[i]) break; /*数据结束*/if(xx[i]>0) totnum++; /*计数*/for (j=1; j=6; j++){ data=(xx[i]>>); /*移位*/sqt =(int) (sqrt ( (double) data) +0.5); /*求平方根并四舍五入取整*/if(sqt*sqt == data) /*完全平方数*/{totcnt++;totpjz+=xx[i]; /*计数求和*/break;}}}totpjz/=totcnt;}#include math.h>void calvalue(void){int i, j, data, sqt;for(i=0;i {if(!xx[i]) break; /*数据结束*/if(xx[i]>0) totnum++; /*计数*/for (j=1; j=6; j++){ data=(xx[i]>>); /*移位*/sqt =(int) (sqrt ( (double) data) +0.5); /*求平方根并四舍五入取整*/if(sqt*sqt == data) /*完全平方数*/{totcnt++;totpjz+=xx[i]; /*计数,求和*/break;}}}totpjz/=totcnt;} 解析:类型:整数移位运算。关键点:(1)数据结束判断:分析main()和readdat(),得到xx[i]为有效数据的条件是0=xx[i]MAXNUM且xx[i]!=0。(2)移位运算:>>,注意运算符优先级。(3)完全平方数判断:可以开平方再平方与原数比较,也可以枚举出10000以内所有四位完全平方数再查表,解答中采用第一种,需要加上头文件math.h。

考题 编写函数jsvalue(),其功能是:求Fibonacci数列中大于t的最小的一个数,结果由该函数返回。其中,Fibonacci数列F(n)的定义如下。F(0)=0, F(1)=1F(n)=F(n-1)+F(n-2)最后,调用函数writeDat()读取10个数据t,分别得出结果,并把结果输出到文件out.dat中。例如:当t=1000时,函数值为1597。部分源程序已给出。请勿改动主函数main()和写函数writeDat()的内容。#include <stdio.h>int jsValue(int t){ }void writeDat(){ FILE *in, *out; int i, n, s; in = fopen("in.dat", "r"); out = fopen("out.dat", "w"); for (i=0; i<50; i++) { fscanf(in, "%d,", &n); s = jsValue(n); fprintf(out, "%d\n", s); } fclose(in); fclose(out);}main(){ int n; n = 1000; printf("t=%d,f=%d\n", n, jsValue(n)); writeDat();}正确答案:参考试题解析【解析及答案】本题属于按条件查找类型的题目,考核的知识点为:求解Fibonacci数列的第n项的值;查找满足条件的Fibonacci数列的第n项的值。本题的解题思路为:从第1项开始逐个求出Fibonacci数列的每一项的值,并且将其与给定的数据相比较,若找到第1个大于给定数据的值则将其返回。程序的流程为:调用jsvalue(n)函数处理数据,由writeDat()函数将数据写回到文件out.dat中。在jsvalue()函数中,根据题目给出的条件,Fibonacci数列中的每一项的值均为前两项之和。将Fibonacci数列的每一项的都初始化,然后通过while循环的条件进行判断:当Fn≤t,即第n项的值小于1000时,进入while循环体,计算Fn的值,每计算一个Fn的值就与t比较一次,直到fn>t,即找到大于t的最小的一个数时,循环结束。该while循环的功能就是查找比t大的Fn的值。while循环结束后,利用return语句返回Fn的值,函数结束。int jsvalue(int t) { int f1=0,f2=1,fn;fn=f1+f2;while(fn<=t){f1=f2;f2=fn;fn=f1+f2;}return fn;}

考题 下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数 cnt,以及满足此条件的所有SIX与NINE的和sum。请编写函数countValue()实现程序要求,最后调用函数 writeDAT()把结果cnt和sam输出到文件OUT51.DAT中。其中的S,L X,N,I,N,E各代表一个十进制数。注意:部分源程序已给出。请勿改动主函数main()和写函数writeDAT()的内容。试题程序:include<stdio. h>int cnt, sum;void countValue(){}void main (){cnt=sum=O;countValue ();printf ("满足条件的个数=%d\n", cnt);printf ("满足条件所有的SIX与NINE的和=%d\n", sum);writeDAT ();}writeDAT ( ){FILE *fp;fp=fopen("OUT51.DAT", "w");fprintf (fp, "%d\n%d\n", cnt, sum);fclose (fp);}正确答案:void countValue(){int i=100;while (1){if(3*i%2==0 && 3'i/2>=1000 && 3'i/2=9999)/*如果满足条件SIX+SIX+SIX=NINE+NINE*/{ /*即一个3位数乘3再除2余数为0且所得的数为4位数*/cnt++; /*统计满足条件的数的个数*/sum+=i+3*i/2; /*求满足上条件的所有SIX与NINE的和*/i++;}else i++; /*如果果不满足条件则取下一个数*/if(i>999 II 3'i/2>9999)break; /*当SIXP不为3位数或所得的数不为四位数时退出循环*/ }}}void countValue(){int i=100;while (1){if(3*i%2==0 && 3'i/2>=1000 && 3'i/2=9999)/*如果满足条件SIX+SIX+SIX=NINE+NINE*/{ /*即一个3位数乘3再除2余数为0,且所得的数为4位数*/cnt++; /*统计满足条件的数的个数*/sum+=i+3*i/2; /*求满足上条件的所有SIX与NINE的和*/i++;}else i++; /*如果果不满足条件,则取下一个数*/if(i>999 II 3'i/2>9999)break; /*当SIXP不为3位数或所得的数不为四位数时,退出循环*/ }}} 解析:本题二查的知识点如下: (1)循环与判断的嵌套使用。 (2)多条件的布尔运算。 (3)“%”与“/”运算符的使用。 根据题意,求的是满足3位数乘以3等于4位数乘以2的数的个数。我们可以使用循环结构对所有的3位数进行判断,若某个3位数乘以3整除2所得的数是4位整数,则这个3位数是满足条件的数。当判断的数不再是3位数或者进行处理后所得的数大于9999,则要退出循环。在这里,还要注意判断结构中,各条件之间是用“与”运算还是用“或”运算。

考题 有以下程序includemain(){FILE *fp;int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprint有以下程序 #include<stdio.h> main() {FILE *fp;int i=20,j=30,k,n; fp=fopen("d1.dat","w"); fprintf(fp,"%d\n",i;fprintf(fp,"%d\n",j); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n); fclose(fp);} 程序运行A.20 30B.20 50C.30 50D.30 20正确答案:A

考题 下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx中。请编写函数num(int m, int k, int xx[])实现程序的要求,最后调用函数readwriteDAT() 把结果输出到文件out.dat中。例如:若输入“17, 5”,则应输出“19, 23, 29, 31, 37”。注意:部分源程序已给出。请勿改动主函数main()和函数readwriteDAT()的内容。#include <conio.h>#include <stdio.h>void readwriteDat();void num(int m, int k, int xx[]){ }main(){ int m, n, xx[1000]; printf("\nPlease enter two integers:"); scanf("%d%d", &m, &n); num(m, n, xx); for (m=0; m<n; m++) printf("%d ", xx[m]); printf("\n"); readwriteDat();}void readwriteDat(){ int m, n, xx[1000], i; FILE *rf, *wf; rf = fopen("in.dat", "r"); wf = fopen("out.dat", "w"); for (i=0; i<10; i++) { fscanf(rf, "%d %d", &m, &n); num(m, n, xx); for (m=0; m<n; m++) fprintf(wf, "%d ", xx[m]); fprintf(wf, "\n"); } fclose(rf); fclose(wf);}正确答案:参考试题解析【解析及答案】该程序属于按条件查找类型的题目,考核的知识点主要为:判断一个数字是否为素数及统计素数的个数。本题的解题思路为:从整数m+1开始逐个判断一个整数是否为素数。若是素数,则将其存入数组xx中,直至找到连续的k个素数为止。判断一个整数是否为素数,可以通过将该整数分别除以2到该整数的1/2之间的所有整数来进行。例如,要判断17是否为素数,则将其分别除以2、3、4、5、6、7、8,若都不能整除,该整数就一定是素数。要寻找连续的k个素数,可以设置一个记录个数的变量,每找到1个素数时,该记录的值就增加1。程序的流程为:首先从键盘输入2个十进制整数,以第1个整数作为基础开始寻找素数,将第2个整数作为需要寻找素数的个数,然后通过函数readwriteDat() 从文件in.dat中读入10组数据,通过函数num() 的计算,把结果写入文件out.dat中。在函数num() 中使用一个while循环查找k个素数,每次查找成功后,n的值将增加1。因为不能确定循环执行的具体次数,所以设定while循环的条件恒为真(条件为“1”),并加入跳出循环的控制语句,即当nk时循环结束。进入while循环体后,首先使用for循环确定当前数字是否为素数,即判断当前整数data是否能被2到它的1/2之间的任意整数整除。如果能被整除,则说明该整数不是素数,程序通过break语句跳出for循环(此时i≤half);否则,当循环执行到i>half时,程序正常退出for循环体,说明当前整数data是素数。这里的i值既是for循环的计数器,又是当前数字是否为素数的标志。if语句将根据此时i值的大小判断整数data是否为素数,如果是素数,则将整数data存入数组xx中,同时记录素数个数的变量n的值将增加1。接着判断变量n的值是否达到了要求的个数,如果达到,则跳出while循环,函数num() 结束;否则,整数data加1后重新进入while循环体,直到找到满足题意的个数的素数,函数num() 结束。void num(int m,int k,int xx[]){int data=m+1;int half,n=0,I; while(1) {half=data/2;for(I=2;I<=half;I++)if(data%I==0)break;if(I>half){xx[n]=data;n++;}if(n>=k)break;data++;} }

考题 填空题下列程序的主要功能是()。  #include   main( ) {      FILE *in,*out;      char ch,infile[10],outfile[10];      printf(“Enter the infile name:/n”);      scanf(“%s”,infile);      printf(“Enter the outfile name:/n”);      scanf(“%s”,outfile);      if((in=fopen(infile, “r”))==NULL){          printf(“Cannot open infile/n”);          exit(0);      }  if((out=fopen(outfile, “w”))==NULL){          printf(“Cannot open outfile/n”);          exit(0);      }      while(!feof(in))          fputc(fgetc(in),out);      fclose(in);      fclose(out);  }正确答案:将一个磁盘文件复制到另一个磁盘文件中解析:暂无解析

考题 阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【C代码1】 float adjustSalary(int service_year,int age,float salary) { if( service_year 30 ) salary *= 1.2; } else salary *= 2.0; return salary;} 【C代码2】 void foo(int coin) { switch (coin) { case 1: printf("Cent\n"); case 5: printf("Nicke1\n");break; case 10: printf("Dime\n"); case 25: printf("Quarter\n"); }} 【C代码3】 int getSum(int n){ int t, i = 0, sum = 0; while ( i 答案:解析:【参考答案】(1)x1=9000.000000(2)x2=14000.000000(3)x3=6000.000000【参考答案】(1)foo(1):Cent Nickel(2)foo(5):Nickel(3)foo(10):Dime Quarter(4)foo(25):Quarter 【参考答案】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,getSum()是求n个不小于0的整数之和,计算和的数目总数是n个,而getSum_v2是总共输入了n个数,这n个数种有大于等于0,也有小于0的数,最终只把大于等于0的数进行求和,因此最终计算的和的个数有可能是小于n的。 【解析】【解析】 对于x1,service_year=1,age=25,salary=9000.0,首先判断service_year5,因此直接进行else中的运算,salary=7000.0*2.0=14000.0,由于salary为float类型数据,因此输出为14000.000000。 对于x3,service_year=5,age=41,salary=5000.0,首先判断service_year30,进行运算salary=5000.0*1.2=6000.0,由于salary为float类型数据,因此输出为6000.000000。【解析】foo(1):coin=1,执行printf(“Cent\n”),输出Cent并回车,继续执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(5):coin=5,执行printf(“Nickel\n”),输出Nickel并回车,再执行break,结束foo函数。foo(10):coin=10,执行printf(“Dime\n”),输出Dime并回车,继续执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。Foo(25):coin=25,执行printf(“Quarter\n”),输出Quarter并回车,结束foo函数。【解析】(1)函数getSum()是求n个不小于0的整数之和。(2)函数getSum_v2的功能与函数getSum不同,原因:在getSum中,当t