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

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

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

2021-02-14 10:06 作者:朝顏晚扶桑  | 我要投稿

1.程序填空題

在給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值。當(dāng)調(diào)用正確時,程序輸出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。

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

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

#include <stdio.h>

double f1(double x)

{ return x*x; }

double f2(double x, double y)

{ return x*y; }

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

___1___fun(int I, double x, double y)

{

if(i==1)

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

___2___;

else

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

___3___;

}

main()

{

double x1=5, x2=3, r;

r=fun(1, x1, x2);

r+=fun(2, x1, x2);

printf("x1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);

}

【答案】

(1)double

(2)return f1(x)

(3)return f2(x, y)

2.程序修改題

在給定程序中,函數(shù)fun()的功能是:將沒有在字符串s中出現(xiàn)而在字符串t中出現(xiàn)的字符形成一個新的字符串放在u中,u中字符按原字符串中字符順序排列,不去掉重復(fù)字符。

例如,當(dāng)s=“12345”,t=“24677”時,u中的字符串為“677”。

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

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

#include <stdio.h>

#include <string.h>

void fun(char *s, char *t, char *u)

{

int I,j,sl,tl;

sl=strlen(s); tl=strlen(t);

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

for(i=0,i<t1,i++)

{

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

if(t[i]==s[j]) break;

if(j>=sl) *u++=t[i];

}

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

*u='0';

}

main()

{

char s[100], t[100], u[100];

printf("\nPlease enter string s:");

scanf("%s", s);

printf("\nPlease enter string t:");

scanf("%s", t);

fun(s, t, u);

printf("The result is: %s\n", u);

}

【答案】

(1)將for(i=0;i<t1;i++) 改為:

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

(2)將*u='0' 改為:*u='\0'

3.程序設(shè)計題

請編寫函數(shù)fun(),函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。

例如,字符串?dāng)?shù)組中的M個字符串為:

AAAA

BBBBBBBB

CC

則合并后的字符串的內(nèi)容應(yīng)是:

AAAABBBBBBBBCC。

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

#include <stdio.h>

#define M 3

#define N 20

void fun(char a[M][N], char *b)

{

?

}

main()

{

char w[M][N]={"AAAA","BBBBBBBB","CC"},

a[100];

int I ;

printf("The string:\n");

for(i=0; i<M; i++) puts(w[i]);

printf("\n");

fun(w,a);

printf("The A string:\n");

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

}

【答案】

void fun(char a[M][N],char *b)

{

int i;

*b=0;

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

strcat(b,a[i]);

}

1.程序填空題

給定程序中,函數(shù)fun()的功能是將形參給定的字符串、整數(shù)、浮點數(shù)寫到文本文件中,再用字符方式從此文本文件中逐個讀入并顯示在終端屏幕上。

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

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

#include <stdio.h>

void fun(char *s,int a,double f)

{

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

___1___*fp;

char ch;

fp=fopen("file1.txt","w");

fprintf(fp, "%s %d %f\n",s,a,f);

fclose(fp);

fp=fopen("file1.txt","r");

printf("The result :\n\n");

ch=fgetc(fp);

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

while(___2___)

{ putchar(ch); ch=fgetc(fp); }

putchar('\n');

fclose(fp);

}

main()

{

char a[10]="Hello!";

int b=12345;

double c=98.76;

fun(a,b,c);

}

【答案】

(1)FILE (2)!feof(fp)

2.程序修改題

下列給定程序中,fun函數(shù)的功能是:根據(jù)形參n,計算如下公式的值。

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

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

#include <conio.h>

#include <stdio.h>

double fun(int n)

{

double s=1.0;

int I;

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

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

s+=1.0/k;

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

________

}

main()

{

int n;

printf("\nplease enter 1 integer numbers:\n");

scanf("%d",&n);

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

}

【答案】

(1)將s+=1.0/k;改為:s+=1.0/i;

(2)return s;?

3.程序設(shè)計題

請編寫函數(shù)fun,對長度為7個字符的字符串,除首、尾字符外,將其余5個字符按ASCII碼降序排列。

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

#include <stdio.h>

#include <ctype.h>

#include <conio.h>

#include <string.h>

void fun(char *str,int n)

{

?

}

main()

{

char str[10];

FILE *out;

printf("input string with seven characters:");

gets(str);

fun(str,7);

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

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

strcpy(str,"Justsdf");

fprintf(out,"%s",str);

fclose(out);

}

【答案】

char t;

int i,j;

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

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

if(str[i]<str[j])

{

t=str[i];

str[i]=str[j];

str[j]=t;

}

1.程序填空題

在給定程序中,函數(shù)fun的功能是:將自然數(shù)1~10以及它們的平方根寫到名為wfile4.txt的文本文件中,然后再順序讀出顯示在屏幕上。

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

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

#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___);

printf("Succeed!!\n");

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

___2___;

printf("The data in file :\n");

if((fp=fopen(fname,"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[]="wfile4.txt";

fun(fname);

}

【答案】

(1)fp,"%d %f\n",sqrt((double)i)

(2)fclose(fp)

2.程序修改題

在給定程序中,函數(shù)fun的功能是:計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。

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

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

#include <stdio.h>

int fun(int k)

{

int m=0,mc=0,j,n;

while((k>=2)&&(mc<10))

{

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

if((k%13=0)||(k%17=0))

{m=m+k; mc++;}

k--;

}

return m;

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

main()

{

printf("%d\n",fun(500));

}

【答案】

(1)將if((k%13=0)||(k%17=0))改為:

if((k%13==0)||(k%17==0))

(2)將缺少的“}”加上

3.程序設(shè)計題

請編寫函數(shù)fun(),其功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個字符串中。

例如,二維數(shù)組中的數(shù)據(jù)為:

W W W W

S S S S

H H H H

則字符串中的內(nèi)容應(yīng)是:WSHWSHWSH。

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

#include <stdio.h>

#define M 3

#define N 4

void fun(char (*s)[N], char *b)

{

?

}

main()

{

char a[100],w[M][N]={{'W','W','W','W'},

{'S','S','S','S'},{'H','H','H','H'}};

int I,j;

printf("The matrix:\n");

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

{

for(j=0;j<N; j++) printf("%3c",w[i][j]);

printf("\n");

}

fun(w,a);

printf("The A string:\n"); puts(a);

printf("\n\n");

}

【答案】

void fun(char (*s)[N],char *b)

{

int i, j, k;

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

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

{

k=i*M+j;

b[k]=s[j][i];

}

b[M*N]='\0';

}

1.程序填空題

請補(bǔ)充fun函數(shù),該函數(shù)的功能是:判斷一個年份是否為閏年。

例如,2007年不是閏年,2008是閏年。

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

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

#include <stdio.h>

#include <conio.h>

int fun(int n)

{

int flag=0;

if(n%4==0)

if(___1___)

flag=1;

if(___2___)

flag=1;

return ___3___;

}

main()

{

int year;

printf("Input the year:");

scanf("%d",&year);

if(fun(year))

printf("%d is a leap year.\n",year);

else

printf("%d is not a leap year.\n",year);

}

【答案】

(1)n%100!=0 (2)n%400==0 (3)flag

2.程序修改題

數(shù)列中,第一項值為3,后一項都比前一項的值增5。下列給定程序中,函數(shù)fun的功能是:計算前n(4<n<50)項的累加和;在累加過程中把那些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個數(shù)作為函數(shù)值返回主函數(shù)。

例如,當(dāng)n的值為10時,符合此條件的累加值應(yīng)為42、126。

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

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

#include <stdio.h>

#define M 10

int fun(int n,int *b)

{

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

int I,j,k,sum;

sum=0;

for(k=3,i=0;i<n;i++,k+=5)

{

sum=sum+k;

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

if(sum%4=2)

b[j++]=sum;

}

return j;

}

main()

{

int b[M],m,n,I;

printf("\nEnter n (4<n<=50): ");

scanf("%d",&n);

m=fun(n,b);

printf("\n\nThe result :\n");

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

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

printf("\n\n");

}

【答案】

(1)將int i,j,k,sum;改為:int i,j=0,k,sum;

(2)將if(sum%4=2)改為:if(sum%4==2)?

3.程序設(shè)計題

程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(int a[ ][N]),函數(shù)的功能是:使數(shù)組右上半三角元素中的值全部置0。

例如:a數(shù)組中的值為:

1 9 7

2 3 8

6 5 6

則返回主程序后a數(shù)組中的值應(yīng)為

0 0 0

2 0 0

6 5 0

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

#include <stdio.h>

#include <stdlib.h>

#define N 5

int fun(int a[][N])

{

?

}

main()

{

int a[N][N],I,j;

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

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

{

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

{

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

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

printf("\n");

}

fun(a);

printf("THE RESULT\n");

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

{

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

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

printf("\n");

}

}

【答案】

int fun(int a[][N])

{

int i,j;

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

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

a[i][j]=0;

}

1.程序填空題

給定程序的功能是將大寫字母轉(zhuǎn)換為對應(yīng)小寫字母之后的第五個字母;若小寫字母為v~z,使小寫字母的值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f;若形參是字母W,則轉(zhuǎn)換為小寫字母b。

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

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

#include <stdio.h>

#include <ctype.h>

char fun(char c)

{

if(c>='A'&&c<='Z') c=c+32;

if(c>='a' && c<='u')

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

___1___;

else if(c>='v'&&c<='z')

c=c-21;

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

___2___;

}

main()

{

char c1,c2;

printf("Enter a letter(A-Z): ");

c1=getchar();

if(isupper(c1))

{

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

c2=fun(c1);

printf("The letter %c change to %c\n",c1,c2);

}

else printf("Enter (A-Z)!\n");

}

【答案】

(1)c=c+5 (2)return c?

2.程序修改題

在給定程序中,函數(shù)fun()的功能是:將既在字符串s中出現(xiàn)又在字符串t中出現(xiàn)的字符構(gòu)成一個新的字符串放在u中,u中字符按原字符串中字符順序排列,不去掉重復(fù)字符。

例如:當(dāng)s=“122345”,t=“2467”時,u中的字符串為:“224”。

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

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

#include <stdio.h>

#include <string.h>

void fun(char *s,char *t,char *u)

{

int I,j,sl,tl;

sl=strlen(s); tl=strlen(t);

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

{

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

if(s[i]==t[j]) break;

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

if(j<tl);

*u++ = s[i];

}

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

u='\0';

}

main()

{

char s[100], t[100], u[100];

printf("Please enter string s:");

scanf("%s", s);

printf("Please enter string t:");

scanf("%s", t);

fun(s,t,u);

printf("The result is: %s\n",u);

}

【答案】

(1)將if(j<tl); 改為:if(j<tl)

(2)將u = '\0'; 改為:*u ='\0';

3.程序設(shè)計題

請編寫函數(shù)int fun(int lim,int aa[MAX]),該函數(shù)的功能是求出小于lim的所有素數(shù)并放在aa數(shù)組中,該函數(shù)返回所求出素數(shù)的個數(shù)。

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

#include <stdio.h>

#define MAX 100

int isP(int num)

{

int I,tag=1;

for(i=2; i<=(num/2)&&tag; i++)

if(num%i==0) tag=0;

return tag;

}

int fun(int lim, int aa[MAX])

{

?

}

main()

{

int limit, I, sum ;

int aa[MAX] ;

scanf("%d", &limit) ;

sum=fun(limit, aa) ;

for(i=0 ; I < sum ; i++)

{

if(i%10==0&&i!=0) printf("\n") ;

printf("%5d", aa[i]);

}

}

【答案】

int fun(int lim, int aa[MAX])

{

int i,j=0;

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

if(isP(i)) aa[j++]=i;

return j;

}

1.程序填空題

給定程序的功能是分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。

例如,給字符串ss輸入:AAaaBBb123CCccccd,則輸出結(jié)果應(yīng)為:upper = 6,lower = 8

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

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

#include <stdio.h>

void fun(char *s,int *a,int *b)

{

while(*s)

{

if(*s>='A'&&*s<='Z')

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

___1___;

if(*s>='a'&&*s<='z')

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

___2___;

s++;

}

}

main()

{

char s[100];

int upper=0,lower=0;

printf("Please a string : ");

gets(s);

fun(s,&upper,&lower);

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

printf("upper=%d lower=%d\n",upper,lower);

}

【答案】

(1)(*a)++; (2)(*b)++;?

2.程序修改題

在給定程序中,函數(shù)fun的功能是:將未在字符串s中出現(xiàn)、而在字符串t中出現(xiàn)的字符,構(gòu)成一個新的字符串放在u中,u中字符按原字符串中字符的順序的逆序排列,不去掉重復(fù)字符。

例如,當(dāng)s=“12345”,t=“24677”時,u中的字符串為:“776”。

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

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

#include <stdio.h>

#include <string.h>

void fun(char *s, char *t, char *u)

{

int I,j,sl,tl,ul;

char r,*up=u;

sl=strlen(s); tl=strlen(t);

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

{

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

if(t[i]==s[j]) break;

if(j>=sl) *u++=t[i];

}

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

*u='\0'

ul=strlen(up);

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

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

{ r=up[i];

up[i]=up[ul-1-i];

up[ul-1-i]=r;

}

}

main()

{

char s[100],t[100],u[100];

printf("Please enter string s:");

scanf("%s", s);

printf("Please enter string t:");

scanf("%s",t);

fun(s,t,u);

printf("The result is: %s\n", u);

}

【答案】

(1)將*u='\0' 改為:*u='\0';

(2)將for (i=0; i<ul; i++) 改為:

for(i=0; i<ul/2; i++)

3.程序設(shè)計題

請編寫函數(shù)fun,它的功能是:求n以內(nèi)(不包括n)同時能被3與7整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。

例如:若n為878時,函數(shù)值應(yīng)為:s = 134.465609。

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

#include <math.h>

#include <stdio.h>

double fun(int n)

{

?

}

main()

{

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

}

【答案】

double fun(int n)

{

int i;

long s=0;

double t;

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

if(i%3==0&&i%7==0) s+=i;

t=sqrt(1.0*s);

return t;

}

1.程序填空題

下列給定程序中,函數(shù)fun和funx的功能是:用二分法求解方程2x3-4x2+3x-6=0的一個根,并要求絕對誤差不超過0.001。

例如:給m輸入-100,給n輸入90,則函數(shù)求得的一個根值為2.000。

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

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

#include <stdio.h>

#include <math.h>

double funx(double x)

{ return(2*x*x*x-4*x*x+3*x-6); }

double fun(double m,double n)

{

___1___;

r=(m+n)/2;

while(___2___)

{

if(funx?*funx(n)<0) m=r;

else n=r;

r=(m+n)/2;

}

return r;

}

main()

{

double m,n,root;

printf(“enter m n:\n”);

scanf(“%lf%lf”,&m,&n);

root=___3___;

printf(“root=%6.3f\n”,root);

}

【答案】

(1)double r

(2)fabs(n-m)>=0.001

(3)fun(m,n)?

2.程序修改題

在給定程序中,函數(shù)fun()的功能是:求兩個形參的乘積和商數(shù),并通過形參返回調(diào)用程序。

例如輸入:61.82和12.65,輸出為:c = 782.023000 d = 4.886957

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

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

#include <stdio.h>

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

fun(double a,double b,double *x,double *y)

{

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

*x=a*b,*y=a/b;

}

main()

{

double a,b,c,d;

printf("Enter a,b: ");

scanf("%lf%lf",&a,&b);

fun(a,b,&c,&d) ;

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

}

【答案】

(1)將fun(double a,double b,double *x,double *y)

改為:void fun(double a,double b,double *x,dou ble *y)

(2)將*x=a*b,*y=a/b; 改為:*x=a*b;*y=a/b;?

3.程序設(shè)計題

請編寫一個函數(shù)void fun(int tt[M][N],int pp[N ]),tt是一個M行N列的二維數(shù)組,求出每列中最小元素,并依次放入pp數(shù)組中。Tt數(shù)組中的數(shù)由主函數(shù)從鍵盤讀入。

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

#include <stdio.h>

#define M 3

#define N 4

void fun( int tt[M][N],int pp[N] )

{

?

}

main()

{

int t[M][N]={{22,45,56,30},

{19,33,45,38},

{20,22,66,40}};

int p[N],I,j,k;

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

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

{

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

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("The result is:\n");

for(k=0;k<N;k++) printf("%4d ",p[k]);

printf("\n");

}

【答案】

void fun(int tt[M][N],int pp[N])

{

int i, j;

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

pp[i]=tt[0][i];

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

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

if(pp[j]>tt[i][j])

pp[j]=tt[i][j];

}

1.程序填空題

給定程序的功能是:將僅在字符串s中出現(xiàn)而不在字符串t中出現(xiàn)的字符,和僅在字符串t中出現(xiàn)而不在字符串s中出現(xiàn)的字符,構(gòu)成一個新字符串放在u中,u中的字符按原字符串中字符順序排列,不去掉重復(fù)字符。

例如:當(dāng)s=“112345”,t=“24677”時,u中的字符串為:“1135677”。

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

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

#include <stdio.h>

#include <string.h>

void fun(char *s,char *t,char *u)

{

int I,j,sl,tl;

sl=strlen(s); tl=strlen(t);

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

{

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

if(s[i]==t[j]) break;

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

___1___;

*u++=s[i];

}

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

{

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

if(t[i]==s[j]) break;

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

___2___;

*u++=t[i];

}

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

___3___;

}

main()

{

char s[100], t[100], u[100];

printf("Please enter string s:");

scanf("%s", s);

printf("Please enter string t:");

scanf("%s", t);

fun(s,t,u);

printf("The result is: %s\n", u);

}

【答案】

(1)if(j>=tl) (2)if(j>=sl) (3)*u='\0'?

2.程序修改題

下列給定程序中,函數(shù)fun的功能是:按順序給t所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并將這些值依次存放在r所指的數(shù)組中。若t所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。

例如,t所指數(shù)組有14個元素,則只對前10個元素進(jìn)行處理,不對最后的4個元素求平均值。

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

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

#include <stdio.h>

#define NUM 20

int fun(double *t,double *r)

{

int j,I;

double sum;

for(j=2,i=0;i<NUM;i++)

{

t[i]=j;

j+=2;

}

sum=0.0;

for(j=0,i=0;i<NUM;i++)

{

sum+=t[i];

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

if(i+1%5==0)

{

r[j]=sum/5;

sum=0;

j++;

}

}

return j;

}

main()

{

double a[NUM],b[NUM/5];

int I,j;

j=fun(a,b);

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

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

{

if(i%5==0)

printf("\n");

printf("%4.0f",a[i]);

}

printf("\n\nThe result :\n");

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

printf("%6.2f ",b[i]);

printf("\n\n");

}

【答案】

將if(i+1%5==0)改為:if((i+1)%5==0)

3.程序設(shè)計題

請編寫函數(shù)fun(),其功能是用來刪除字符串中的所有空格。

例如:輸入的字符串是absd f aas z1o67,則輸出為absdfaasz1o67。

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

#include <stdio.h>

#include <ctype.h>

int fun(char *str)

{

?

}

main()

{

char str[81];

int n ;

gets(str);

puts(str);

fun(str);

printf("*** str: %s\n", str);

}

【答案】

int fun(char *str)

{

char *p=str;

int i=0;

while(*p)

{

if(*p!=' ') str[i++]=*p;

p++;

}

str[i]='\0';

}

1.程序填空題

給定程序的功能是計算二分之一的圓面積,函數(shù)通過形參得到圓的半徑,函數(shù)返回二分之一的圓面積。函數(shù)體的變量必須使用r。

例如輸入圓的半徑值r=19.527,輸出s=598.950017。

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

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

#include <stdio.h>

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

float fun(___1___)

{

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

return___2___;

}

main()

{

float x;

printf("Enter x: ");

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

___3___;

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

}

【答案】

(1)float r

(2)3.14159 * r * r /2.0

(3)scanf ( "%f", &x )?

2.程序修改題

下列給定程序中,fun函數(shù)的功能是計算以下公式的值:

t=f(-m)+f(-m+1)+…+f(0)+f(1)+f(2)+…+f(m)

例如,當(dāng)m為10時,函數(shù)值應(yīng)為22.550361。F(x)函數(shù)定義如下:

(x+1)/(x-2) x>0

f(x)= 0 x=0或x=2

(x-1)/(x-2) x<0

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

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

#include <conio.h>

#include <stdio.h>

#include <math.h>

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

f(double x)

{

if(x==0.0 || x==2.0)

return 0.0;

else if(x<0.0)

return (x-1)/(x-2);

else

return (x+1)/(x-2);

}

double fun(int m)

{

int I;

double t=0.0,y;

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

{

y=f(1.0*i);

t+=y;

}

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

return t

}

main()

{

printf("%lf\n",fun(10));

}

【答案】

(1)將f(double x)改為:double f(double x)

(2)將return t 改為:return t

3.程序設(shè)計題

請編寫函數(shù)fun,其功能是找出一維數(shù)組元素中最小的值和它所在的下標(biāo),最小值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),min存放最小值,index存放最小值所在元素的下標(biāo)。

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

#include <stdlib.h>

#include <stdio.h>

void fun(int a[],int n,int *min,int *d)

{

?

}

main()

{

int I,x[20],min,index,n=10;

randomize();

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

{

x[i]=rand()%50; printf("%4d",x[i]);

}

printf("\n");

fun(x,n,&min,&index);

printf("min=%d,index=%d\n",min,index);

}

【答案】

void fun(int a[],int n,int *min,int *d)

{

int i;

*min=a[0];

*d=0;

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

if(a[i]<*min)

{*min=a[i];*d=i;}

}


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

分享到微博請遵守國家法律
忻州市| 西藏| 永昌县| 嘉善县| 读书| 日土县| 江川县| 图片| 泗洪县| 凉城县| 青田县| 乌拉特前旗| 太白县| 榆社县| 临邑县| 宜兰市| 城口县| 金川县| 丹棱县| 腾冲县| 荥阳市| 城步| 信阳市| 巴彦县| 子长县| 玛曲县| 永丰县| 布尔津县| 定陶县| 于田县| 全南县| 镇赉县| 股票| 南川市| 河北区| 福泉市| 仙游县| 浦北县| 台北市| 抚顺县| 鲁甸县|