最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

全國計算機(jī)等級考試二級C語言練習(xí)題(四)

2021-02-12 09:02 作者:朝顏晚扶桑  | 我要投稿

1.程序填空題

給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,將所有串長超過k的字符串中右邊的字符刪除,只保留左邊的k個字符。Ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#include <string.h>

#define N 5

#define M 10

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

void fun(char (*ss)___1___int k)

{

int i=0 ;

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

while(i<___2___){

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

ss[i][k]=___3___; i++; }

}

main()

{

char x[N][M]={"Create","Modify","Sort","skip","Delete"};

int I;

printf("The original string\n");

for(i=0;i<N;i++) puts(x[i]);

printf("\n");

fun(x,4);

printf("The string after deleted :\n");

for(i=0;i<N;i++) puts(x[i]);

printf("\n");

}

【答案】

(1)[M],或[10], (2)N或=N-1 (3)'\0'

2.程序修改題

給定程序中,函數(shù)fun的功能是:先從鍵盤上輸入一個3行3列矩陣的各個元素的值,然后輸出主對角線元素之和。

請改正函數(shù)fun中的錯誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使其能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

int fun()

{

int a[3][3],sum;

int I,j;

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

1 ;

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

{

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

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

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

}

for(i=0;i<3;i++) sum=sum+a[i][i];

printf("sum=%d\n",sum);

}

main()

{

fun();

}

【答案】

(1)填sum=0;

(2)將scanf("%d",a[i][j]); 改為:

scanf("%d",&a[i][j]);

3.程序設(shè)計題

編寫函數(shù)fun,其功能是實(shí)現(xiàn)矩陣(3行3列)的轉(zhuǎn)置(即行列互換)。

例如,輸入下面的矩陣:

100 200 300

400 500 600

700 800 900

程序輸出:

100 400 700

200 500 800

300 600 900

注意:部分源程序已給出。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

#include <stdio.h>

int fun(int array[3][3])

{

?

}

main()

{

int I,j;

int array[3][3]={{100,200,300},

{400,500,600},{700,800,900}};

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

{

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

printf("%7d",array[i][j]);

printf("\n");

}

fun(array);

printf("Converted array:\n");

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

{

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

printf("%7d",array[i][j]);

printf("\n");

}

}

【答案】

int fun(int array[3][3])

{

int j,k,t;

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

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

{

t=s[j][k];

s[j][k]=s[k][j];

s[k][j]=t;

}

}

1.程序填空題

請補(bǔ)充fun函數(shù),該函數(shù)的功能是求能整除k且是偶數(shù)的數(shù),把這些數(shù)保存在數(shù)組a,并按從大到小輸出。

例如,當(dāng)k=20時,依次輸出20 10 8 4 2。

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <conio.h>

#include <stdio.h>

void fun(int k,int a[])

{

int I;

int j=0;

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

if(k%i==0___2___i%2==0)

a[j++]=I;

printf("\n\n ");

for(i=___3___;i>=0;i--)

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

}

main()

{

int k=1;

int a[100];

printf("\nPlease input k\n");

scanf("%d",&k);

fun(k,a);

}

【答案】

(1)i=1 (2)&& (3)--j

2.程序修改題

給定程序中,fun函數(shù)的功能是:求出以下分?jǐn)?shù)序列的前n項之和。

2/1、3/2、5/3、8/5、13/8、21/13、……和值通過函數(shù)值返回main函數(shù)。

例如,若n=5,則應(yīng)輸出:8.391667。

請改正程序中的錯誤,使其能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

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

fun(int n)

{

int a=2,b=1,c,k;

double s=0.0;

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

{

s=s+1.0*a/b;

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

c=a;a+=b;b+=c;

}

return(s);

}

main()

{

int n=5;

printf("The value of function is:%lf\n",

fun(n));

}

【答案】

(1)將fun(int n) 改為:double fun(int n)

(2)將c = a;a += b;b += c; 改為:

c = a;a += b;b = c;?

3.程序設(shè)計題

請編寫函數(shù)fun,函數(shù)的功能是:將大于形參m且緊靠m的k個素數(shù)存入xx所指的數(shù)組中。例如,若輸入17、5,則應(yīng)輸出:19、23、29、31、37。

注意:部分源程序已給出。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

#include <stdio.h>

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

{

?

}

main()

{

int m,n,zz[1000] ;

printf( "Please enter two integers:");

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

fun(m,n,zz);

for(m=0;m<n;m++) printf("%d ",zz[m]);

printf("\n");

}

【答案】

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

{

int j,n=0;

while(n<k)

{

m++;

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

if(m%j==0) break;

if(j>=m) xx[n++]=m;

}

}

1.程序填空題

給定程序中,函數(shù)fun的功能是將帶頭結(jié)點(diǎn)的單向鏈表逆置。即若原鏈表中從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:2、4、6、8、10,逆置后從頭至尾結(jié)點(diǎn)數(shù)據(jù)域依次為:10、8、6、4、2。

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#include <stdlib.h>

#define N 5

typedef struct node

{int data;

struct node *next;

}NODE;

void fun(NODE *h)

{

NODE *p,*q,*r;

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

p=___1___;

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

if(___2___)return;

q=p->next;

p->next=NULL;

while(q)

{

r=q->next;q->next=p;

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

p=q;q=___3___;

}

h->next=p;

}

NODE*creatlist(int a[])

{

NODE *h,*p,*q; int I;

h=(NODE*)malloc(sizeof(NODE));

h->next=NULL;

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

{

q=(NODE*)malloc(sizeof(NODE));

q->data=a[i];

q->next=NULL;

if(h->next==NULL) h->next=p=q;

else { p->next=q; p=q; }

}

return h;

}

void outlist(NODE *h)

{

NODE *p;

p=h->next;

if(p==NULL)

printf("The list isNULL!\n");

else

{

printf("Head ");

do

{

printf("->%d",p->data);

p=p->next;

}while(p!=NULL);

printf("->End\n");

}

}

main()

{

NODE *head;

int a[N]={2,4,6,8,10};

head=creatlist(a);

printf("The original list:\n");

outlist(head);

fun(head);

printf("The list after inverting :\n");

outlist(head);

}

【答案】

(1)h->next

(2)p==NULL 或p==0 或h->next==NULL

(3)r

2.程序修改題

假定整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。給定程序中,函數(shù)fun的功能是:刪除數(shù)列中值為x的元素變量,變量n存放的是數(shù)列中元素的個數(shù)。

請改正程序中的錯誤,使其能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

#include <stdio.h>

#define N 20

fun(int *a,int n,int x)

{

int p=0,I;

a[n]=x;

while(x!=a[p])

p=p+1;

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

if(P==n) return-1;

else

{

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

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

a[i+1]=a[i];

return n-1;

}

}

main()

{

int w[N]={-3,0,1,5,7,99,10,15,30,90},

x,n,I;

n=10;

printf("The original data :\n");

for(i=0;i<n;i++) printf("%5d",w[i]);

printf("Input x(to delete): ");

scanf("%d",&x);

printf("Delete : %d\n",x);

n=fun(w,n,x);

if(n==-1)

printf("***Not be found!***\n");

else

{

printf("The data after deleted:\n");

for(i=0;i<n;i++) printf("%5d",w[i]);

printf("\n");

}

}

【答案】

(1)將if(P==n) return -1; 改為:

if(p==n) return -1;

(2)將a[i+1]=a[i]; 改為:a[i]=a[i+1];?

3.程序設(shè)計題

學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中。注意,分?jǐn)?shù)最低的學(xué)生可能不止一個,函數(shù)返回分?jǐn)?shù)最低的學(xué)生的人數(shù)。

注意:部分源程序已給出。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

#include <stdio.h>

#define N 16

typedef struct

{charnum[10];

int s;

}STREC;

intfun(STREC *a,STREC *b)

{

}

main()

{

STREC s[N]={{"GA05",85},{"GA03",76},

{"GA02",69},{"GA04",85},

{"GA01",91},{"GA07",72},

{"GA08",64},{"GA06",87},

{"GA015",85},{"GA013",91},

{"GA012",64},{"GA014",91},

{"GA011",91},{"GA017",64},

{"GA018",64},{"GA016",72}};

STREC h[N];

int I,n;

FILE *out ;

n=fun(s,h);

printf("The %d lowest Score :\n",n);

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

printf("%s %4d\n",h[i].num,h[i].s);

printf("\n");

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

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

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

【答案】

int fun(STREC *a,STREC *b)

{

int j,n=0; double min=100.0;

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

if(min>a[j].s)

min=a[j].s;

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

if(a[j].s==min)

b[n++]=a[j];

return n;

}

1.程序填空題

程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是重寫形參filena me所指文件中最后一個學(xué)生的數(shù)據(jù),即用新的學(xué)生數(shù)據(jù)覆蓋該學(xué)生原來的數(shù)據(jù),其他學(xué)生的數(shù)據(jù)不變。 請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#define N 5

typedef struct student

{

long sno;

char name[10];

float Score[3];

}STU;

void fun(char*filename,STU n)

{ FILE *fp;

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

fp=fopen(___1___,""rb+"");

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

fseek(fp,-1L*sizeof(STU),___2___);

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

fwrite(___3___,sizeof(STU),1,fp); fclose(fp);

}

main()

{

STU t[N]={{10001,""MaChao"",91,92,77}, {10002,""CaoKai"",75,60,88}, {10003,""LiSi"",85,70,78},{10004,""FangFang"",90,82,87},{10005,""ZhangSan"",95,80,88}};

STU n={10006,""ZhaoSi"",55,70,68},ss[N];

int I,j;FILE *fp;

fp=fopen(""student.dat"",""wb"");

fwrite(t,sizeof(STU),N,fp);

fclose(fp);

fp=fopen(""student.dat"",""rb"");

fread(ss, sizeof(STU), N, fp);

fclose(fp);

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

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

{

printf(""No:%ld Name:%-8s Scores: "",ss[j].sno,ss[j].name);

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

printf(""%6.2f"",ss[j].Scor

Chapter_3

e[i]);

printf(""\n"");

}

fun(""student.dat"", n);

printf(""The data after modifing :\n"");

fp=fopen(""student.dat"",""rb"");

fread(ss,sizeof(STU),N,fp);

fclose(fp);

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

{

printf(""No:%ld Name:%-8s Scores: "", ss[j].sno,ss[j].name);

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

printf(""%6.2f"",ss[j].Score[i]);

printf(""\n"");

}

}

【答案】

(1)filename (2)SEEK_END或2 (3)&n

2.程序修改題

給定程序中,函數(shù)fun的功能是:在字符串的最前端加入n個*號形成新串,并且覆蓋原串。注意:字符串的長度最長允許為79。

請改正函數(shù)fun中指定位置的錯誤,使其能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#include <string.h>

void fun(char s[],int n)

{

char a[80],*p;

int I;

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

s=p;

for(i=0;i<n;i++) a[i]='*';

do

{

a[i]=*p; i++;

}

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

while(*p);

a[i]=0;

strcpy(s,a);

}

main()

{

int n;char s[80];

printf("\nEnter a string : ");

gets(s);

printf("The string %s\n",s);

printf("Enter n ( number of * ) : ");

scanf("%d",&n);

fun(s,n);

printf("The string after inster:%s",s);

}

【答案】

(1)將s=p; 改為:p=s;

(2)將while(*p); 改為:while(*p++);?

3.程序設(shè)計題

N名學(xué)生的成績已在主函數(shù)中放入一個帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun,其功能是:找出學(xué)生的最低分,由函數(shù)值返回。

注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

#include <stdio.h>

#include <stdlib.h>

#define N 8

struct slist

{ double s;

struct slist *next;

};

typedef struct slist STREC;

double fun(STREC *h)

{

?

}

STREC * creat (double *s)

{

STREC *h,*p,*q; int i=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{

q=(STREC*)malloc(sizeof(STREC));

p->s=s[i]; i++; p->next=q; p=q;

}

p->next=NULL;

return h; /*返回鏈表的首地址*/

}

outlist(STREC *h)

{

STREC *p;

p=h;

printf("head");

do

{printf("->%2.0f ",p->s);p=p->next;}

while(p!=NULL);

printf("\n\n");

}

main()

{

double s[N]={56,89,76,95,91,68,75,85},

min;

STREC *h;

h=creat(s);

outlist(h);

min=fun(h);

printf("min=%6.1f\n",min);

}

【答案】

double fun(STREC *h)

{

double min=h->s;

while(h!=NULL)

{

if(min>h->s) min=h->s;

h=h->next;

}

return min;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是將a和b所指的兩個字符串轉(zhuǎn)換成面值相同的整數(shù),并進(jìn)行相加作為函數(shù)值返回,規(guī)定字符串中只含9個以下數(shù)字字符。

例如,主函數(shù)中輸入字符串:32486和12345,在主函數(shù)中輸出的函數(shù)值為:44831。

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#include <string.h>

#include <ctype.h>

#define N 9

long ctod(char *s )

{

long d=0;

while(*s)

if(isdigit(*s)) {

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

d=d*10+*s-___1___;

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

___2___; }

return d;

}

long fun(char *a,char *b)

{

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

return___3___;

}

main()

{

char s1[N],s2[N];

do

{

printf("Input string s1 : ");

gets(s1);

}while(strlen(s1)>N);

do

{

printf("Input string s2 : ");

gets(s2);

}while(strlen(s2)>N);

printf("The result is: %ld\n",fun(s1,s2));

}

【答案】

(1)'0'或48

(2)s++

(3)ctod(a)+ctod(b)?

2.程序修改題

給定程序中,函數(shù)fun的功能是:計算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。

例如,當(dāng)x的值為9、y的值為11、z的值為15時,函數(shù)值為-3.50。

請改正程序中的錯誤,使其能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

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

#define FU(m,n) (m/n)

float fun(float a,float b,float c)

{

float value;

value=FU(a+b,a-b)+FU(c+b,c-b);

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

Return(Value);

}

main()

{

float x,y,z,sum;

printf("Input x y z: ");

scanf("%f%f%f",&x,&y,&z);

printf("x=%f,y=%f,z=%f\n",x,y,z);

if(x==y||y==z)

{printf("Data error!\n");exit(0);}

sum=fun(x,y,z);

printf("The result is : %5.2f\n",sum);

}

【答案】

(1)將FU(m,n)(m/n) 改為:FU(m,n)((m)/(n))

(2)將Return(Value); 改為:return(value);

3.程序設(shè)計題

規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和尾部的*號不刪除。

例如,字符串中的內(nèi)容為:*******A*BC*DEF *G****,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*D EF*G****。在編寫函數(shù)時,不得使用C語言提供的字符串。

注意:部分源程序已給出。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

#include <stdio.h>

voidfun(char *a)

{

?

}

main()

{

char s[81];

printf("Enter a string:\n");

gets(s);

fun(s);

printf("The string after deleted:\n");

puts(s);

}

【答案】

fun(char *s)

{

int k=0,j=0,n=strlen(s);

while(s[k]=='*')

k++;

for( ; k<n+1; k++)

s[j++]=s[k];

}

1.程序填空題

給定程序中函數(shù)fun的功能是:將a所指4×3矩陣中第k行的元素與第0行元素交換。

例如,有下列矩陣:

1 2 3

4 5 6

7 8 9

10 11 12

若k為2,程序執(zhí)行結(jié)果為:

7 8 9

4 5 6

1 2 3

10 11 12

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#define N 3

#define M 4

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

void fun(int(*a)[N],int___1___)

{

int I,j,temp;

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

for(I=0;I<___2___;I++)

{

temp=a[0][I];

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

a[0][I]=___3___;

a[k][I]=temp;

}

}

main()

{

int x[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}},I,j;

printf("The array before moving:\n");

for(I=0;I<M;I++)

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

printf("%3d",x[I][j]);

printf("\n\n");

fun(x,2);

printf("The array after moving:\n\n");

for(I=0;I<M;I++)

{

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

printf("%3d",x[I][j]);

printf("\n\n");

}

}

【答案】

(1)k (2)N 或 =N-1 (3)a[k][i]?

2.程序修改題

給定程序中,函數(shù)fun的功能是:給一維數(shù)組a輸入任意4個整數(shù),并按下例的規(guī)律輸出。例如,輸入1、2、3、4程序運(yùn)行后將輸出以下方陣:

4 1 2 3

3 4 1 2

2 3 4 1

1 2 3 4

請改正函數(shù)fun中指定部位的錯誤,使其能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#define M 4

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

void fun(int a)

{

int I,j,k,m;

printf("Enter 4 number : ");

for(i=0;i<M;i++) scanf("%d",&a[i]);

printf("The result :\n");

for(i=M;i>0;i--)

{

k=a[M-1];

for(j=M-1;j>0;j--)

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

aa[j]=a[j-1];

a[0]=k;

for(m=0;m<M;m++) printf("%d ",a[m]);

printf("\n");

}

}

main()

{

int a[M];

fun(a);

printf("\n\n");

}

【答案】

(1)將void fun(int a) 改為:

void fun(int a[])

(2)將aa[j]=a[j-1]; 改為:a[j]=a[j-1];

3.程序設(shè)計題

請編寫函數(shù)fun,其功能是計算并輸出下列多項式的值:

Fn=1+1/1!+1/2!+1/3!+1/4!+…+1/m!

例如,若主函數(shù)從鍵盤給m輸入5,則輸出為F=2.716667。

注意:部分源程序已給出。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。

#include <stdio.h>

double fun(int m)

{

?

}

main()

{

int m;

double f;

printf("Input m: ");

scanf("%d",&m);

f=fun(m);

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

}

【答案】

double t,s=1.0;

int i,j;

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

{

t=1.0;

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

t*=j;

s+=1.0/t;

}

return s;

1.程序填空題

給定程序中,函數(shù)fun的功能是:把形參s所指字符串中最右邊的n個字符復(fù)制到形參t所指字符數(shù)組中,形成一個新串。若s所指字符串的長度小于n,則將整個字符串復(fù)制到形參t所指字符數(shù)組中。

例如,形參s所指的字符串為:abcdefgh,n的值為5,程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:defgh。

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

#include <string.h>

#define N 80

void fun(char *s,int n,char *t)

{

int len,I,j=0;

len=strlen(s);

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

if(n>=len) strcpy(___1___);

else

{

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

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

t[j++]=___2___;

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

t[j]=___3___;

}

}

main()

{

char s[N],t[N];

int n;

printf("Enter a string: "); gets(s);

printf("Enter n:"); scanf("%d",&n);

fun(s,n,t);

printf("The string t : ");

puts(t);

}

【答案】

(1)t, s (2)s[i] (3)'\0'

2.程序修改題

給定程序中,函數(shù)fun的功能是:統(tǒng)計一個無符號整數(shù)中各位數(shù)字值為零的個數(shù),通過形參傳回主函數(shù);并把該整數(shù)中各位上最大的數(shù)字值作為函數(shù)值返回。例如,若輸入無符號整數(shù)30800,則數(shù)字值為零的個數(shù)為3,各位上數(shù)字值最大的是8。

請改正函數(shù)fun中指定部位的錯誤,使其能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include <stdio.h>

int fun(unsigned n,int *zero)

{

int count=0,max=0,t;

do

{

t=n%10;

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

if(t=0)

count++;

if(max<t) max=t;

n=n/10;

}while(n);

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

zero=count;

return max;

}

main()

{

unsigned n; int zero,max;

printf("Input n(unsigned): ");

scanf("%d",&n);

max=fun(n,&zero);

printf("The result:max=%d zero=%d\n",

max,zero);

}

【答案】

(1)將 if(t=0) 改為:if(t==0)

(2)將 zero=count; 改為:*zero=count;

3.程序設(shè)計題

請編寫函數(shù)fun,其功能是:計算并輸出:

例如,若主函數(shù)從鍵盤給m輸入10后,則輸出為F=104.478749。

注意:部分源程序已給出。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。

#include <math.h>

#include <stdio.h>

double fun(int m)

{

?

}

main()

{

int m;

double f;

FILE *out;

printf("\nInput m: ");

scanf("%d",&m);

f=fun(m);

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

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

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

fprintf(out,"%f\n",fun(m+20));

fclose(out);

}

【答案】

int i;

double f=1.0,p=1.0;

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

{

p+=pow(i,0.5);

f+=p;

}

return f;


全國計算機(jī)等級考試二級C語言練習(xí)題(四)的評論 (共 條)

分享到微博請遵守國家法律
通州区| 永安市| 潜江市| 余干县| 玉门市| 南漳县| 西安市| 邯郸县| 永春县| 长治市| 石首市| 清镇市| 棋牌| 南投县| 临高县| 九龙城区| 民和| 神木县| 庆阳市| 诸暨市| 栾城县| 彝良县| 西宁市| 永平县| 东港市| 宜春市| 岳阳县| 灵宝市| 名山县| 大兴区| 和田市| 呼图壁县| 玛纳斯县| 铜鼓县| 桃江县| 昆山市| 岳阳县| 明星| 深圳市| 从化市| 高唐县|