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

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

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

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

1.程序填空題

請(qǐng)補(bǔ)充函數(shù)fun,該函數(shù)的功能是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表并輸出到文件file.dat和屏幕上,各結(jié)點(diǎn)的值為對(duì)應(yīng)的下標(biāo),鏈表的結(jié)點(diǎn)數(shù)及輸出的文件名作為參數(shù)傳入。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include<stdio.h>

#include<stdlib.h>

typedef struct s

{

int data;

struct s *next;

}NODE;

void fun(int n,char *filename)

{

NODE *h,*p,*s ;

FILE *f;

int I;

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

h->data=0;

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

{

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

s->___1___;

___2___;

p=___3___;

}

p->next=NULL;

if((f=fopen(filename,"w"))==NULL)

{

printf("Can not open file.dat!");

exit(0);

}

p=h;

fprintf(f,"THE LIST\n");

printf("THE LIST\n");

while(p)

{

fprintf(f,"%3d",p->data);

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

if(p->next!=NULL)

{

fprintf(f,"->");

printf("->");

}

p=p->next;

}

fprintf(f,"\n");

printf("\n");

fclose(f);

p=h;

while(p)

{

s=p;

p=p->next;

free(s);

}

}

main()

{

char *filename="file.dat";

int n;

printf("\nPlease input n:");

scanf("%d",&n);

fun(n,filename);

}

【答案】

void fun(int a,int b,long *c)

{

*c=a/10*1000+a%10*10+b/10*100+b%10;

}?

2.程序修改題

下面程序中函數(shù)fun的功能是:將長整數(shù)s中每個(gè)十進(jìn)制位上為奇數(shù)的數(shù)取出,形成一個(gè)新數(shù)在t中,t中數(shù)字順序按原整數(shù)中數(shù)字的逆序排列。

例如,當(dāng)s=87653142時(shí),t=1357。

請(qǐng)改正函數(shù)fun中的錯(cuò)誤,使其能得出正確的結(jié)果。

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

#include <conio.h>

#include <stdio.h>

#include <windows.h>

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

void fun(long s,long t)

{

int d;

*t=0;

while(s>0)

{

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

d=s/10;

if(d%2==1)

*t=*t*10+d;

s/=10;

}

}

main() /* 主函數(shù) */

{

long s, t;

system("cls");

printf("\nPlease enter s:");

scanf(“%ld”,&s);

fun(s,&t);

printf("the result is: %ld\n",t);

}

【答案】

(1)將void fun(long s, long t) 改為:

void fun(long s, long *t)

(2)將d = s/10; 改為:d = s%10;?

3.程序設(shè)計(jì)題

給定程序中,函數(shù)fun的功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的千位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。

例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=4152。

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

#include <stdio.h>

void fun(int a,int b,long *c)

{

?

}

main()

{

int a,b; long c;

printf("Input a,b:");

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

fun(a,b,&c);

printf("The result is: %d\n", c);

}

【答案】

void fun(int a,int b,long *c)

{

*c=a/10*1000+a%10*10+b/10*100+b%10;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是計(jì)算下式:

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

double fun(double e)

{

int I; double s,x;

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

s=0; i=___1___;

x=1.0;

while(x>e)

{

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

___2___;

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

x=(2*i-1)*(2*i+1)/(___3___*(2*i));

s=s+x;

}

return s;

}

main()

{

double e=1e-6;

printf("The result is: %f\n",fun(e));

}?

【答案】

(1)0

(2)i++

(3)(2.0*i)或(float)(2*i)或?(double)(2*i)

2.程序修改題

給定程序中,函數(shù)fun的功能是:判斷ch中的字符是否與str所指串中的某個(gè)字符相同;若相同,什么也不做,若不同,則將其插在串的最后。

請(qǐng)改正程序中的錯(cuò)誤,使其能進(jìn)行正確的操作。

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

#include <stdio.h>

#include <string.h>

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

void fun(char str,char ch)

{

while(*str&&*str!=ch) str++;

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

if(*str==ch)

{

str[0]=ch;

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

str[1]='0';

}

}

main()

{

char s[81],c ;

printf("Please enter a string:\n");

gets(s);

printf("Please enter the character to

search: ");

c=getchar();

fun(s,c);

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

}

【答案】

(1)將void fun(char str,char ch) 改為:

void fun(char *str,char ch )

(2)將if(*str==ch) 改為:if(*str!=ch)

(3)將str[1]='0'; 改為:str[1]='\0';?

3.程序設(shè)計(jì)題

下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返回給主函數(shù)中的變量r。

例如,若c數(shù)組中的值為:

則返回主程序后r的值應(yīng)為4.625000。

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

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define N 3

double fun(int b[][N])

{

?

}

main()

{

int c[N][N]={1,8,4,7,5,3,3,9,2};

int I,j;

FILE *out;

double r;

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

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

{

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

{

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

}

printf("\n");

}

r=fun?;

printf("THE RESULT\n");

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

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

fprintf(out,"%lf",r);

fclose(out);

}

【答案】

int i,j,k=0;

double r=0.0;

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

{

r+=b[0][j];

k++;

}

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

{

r+=b[N-1][j];

k++;

}

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

{

r+=b[i][0];

k++;

}

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

{

r+=b[i][N-1];

k++;

}

return r/=k;

1.程序填空題

給定程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出。

例如,有10個(gè)正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為:30.500000

主函數(shù)中輸出:m=30.0

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdlib.h>

#define N 10

double fun(double x[],double *av)

{

int I,j;

double d,s=0;

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

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

___1___=s/N;

d=32767;

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

if(x[i]<*av && *av-x[i]<=d){

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

d=*av-x[i]; j=___2___;}

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

return___3___;

}

main()

{

int I;

double x[N],av,m;

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

{ x[i]=rand()%50;

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

printf("\n");

m=fun(x,&av);

printf("\nThe average is: %f\n",av);

printf("m=%5.1f ",m);

printf("\n");

}

【答案】

(1)*av (2)i (3)x[j] 或(x[j])

2.程序修改題

給定程序中,fun函數(shù)的功能是:求s = aa…aa - … - aaa - aa – a(此處aa…aa表示n個(gè)a,a和n的值在1至9之間)。

例如a=3,n=6,則以上表達(dá)式為:

s=333333 - 33333 - 3333 - 333 - 33 – 3

其值是:296298

a和n是fun函數(shù)的形參,表達(dá)式的值作為函數(shù)值傳回main函數(shù)。

請(qǐng)改正程序中的錯(cuò)誤,使其能計(jì)算出正確的結(jié)果。

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

#include <stdio.h>

long fun(int a,int n)

{

int j;

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

long s=0,t=1;

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

t=t*10+a;

s=t;

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

{

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

t=t%10;

s=s-t;

}

return(s);

}

main()

{

int a,n;

printf("\nPlease enter a and n:");

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

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

fun(a,n));

}

【答案】

(1)將long s=0,t=1; 改為:long s=0,t=0;

(2)將t=t%10; 改為:t=t/10;

3.程序設(shè)計(jì)題

請(qǐng)編寫一個(gè)函數(shù)void fun(char *tt, int pp[]),統(tǒng)計(jì)在tt所指字符串中'a'到'z' 26個(gè)小寫字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如,當(dāng)輸入字符串:abcdefgabcdeabc 后,程序的輸出結(jié)果應(yīng)該是:

3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

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

#include <stdio.h>

#include <string.h>

void fun(char *tt,int pp[])

{

?

}

main()

{

char aa[1000];

int bb[26],k,n;

printf("Please enter a char string:");

scanf("%s", aa);

fun(aa,bb);

for(k=0;k<26;k++) printf("%d",bb[k]);

printf("\n");

}

【答案】

void fun(char *tt,int pp[])

{

int n;

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

pp[n]=0;

while(*tt!='\0')

{

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

pp[*tt-'a']++;

tt++;

}

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生20個(gè)互不相同的整數(shù)放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdlib.h>

#define N 20

void fun(int *a)

{

int I,x,n=0;

x=rand()%20;

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

while (n<___1___)

{

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

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

if(x==a[i])___2___;

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

if(i==___3___){a[n]=x; n++;}

x=rand()%20;

}

}

main()

{

int x[N]={0},I;

fun(x);

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

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

{

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

if((i+1)%5==0) printf("\n");

}

printf("\n\n");

}

【答案】

(1)20 或 N (2)break (3)n

2.程序修改題

用二分法求方程2x3-4x2+3x-6 =0在區(qū)間[m,n]上的根。例如,若給m輸入-100,給n輸入90,則函數(shù)求得的一個(gè)根值為2.000。

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

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(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)

{

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

int r;

r=(m+n)/2;

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

while(fabs(n-m)<0.001)

{

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=fun(m,n);

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

}

【答案】

(1)把int r; 改為:double r;

(2)將while(fabs(n-m)<0.001) 改為:

while(fabs(n-m)>0.001)

3.程序設(shè)計(jì)題

假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:除了字符串前導(dǎo)和尾部的*號(hào)之外,將串中其他*號(hào)全部刪除。形參h已指向字符串中第一個(gè)字母,形參p已指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G ******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****ABCDEFG******。

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

#include <stdio.h>

void fun(char *a,char *h,char *p)

{

?

}

main()

{

char s[81],*t,*f;

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

gets(s);

t=f=s;

while(*t)t++;

t--;

while(*t=='*')t--;

while(*f=='*')f++;

fun(s,f,t);

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

puts(s);

}

【答案】

void fun( char *a,char *h,char *p )

{

char *q=h;

int n=0;

while(q<=p)

{ if(*q!='*') h[n++]=*q; q++; }

while(*q)

{ h[n++]=*q; q++; }

h[n]='\0';

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:將a所指3×5矩陣中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原來左邊的各列依次繞到右邊。

例如,有下列矩陣:

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

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

3 4 5 1 2

3 4 5 1 2

3 4 5 1 2

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#define M 3

#define N 5

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

{

int I,j,p,temp;

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

for(p=1;p<=___1___;p++)

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

{

temp=a[i][0];

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

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

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

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

a[i][N-1]=___3___;

}

}

main()

{

int x[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},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");

}

fun(x,2);

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

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

{

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

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

printf("\n");

}

}

【答案】

(1)k (2)N-1 (3)temp

2.程序修改題

給定程序中,函數(shù)fun的功能是:求整數(shù)x的y次方的低3位值。

例如,整數(shù)5的6次方為15625,此值的低3位值為625。

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

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

#include <stdio.h>

long fun(int x,int y,long *p)

{

int I;

long t=1;

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

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

t=t*x;

*p=t;

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

t=t/1000;

return t;

}

main()

{

long t,r;

int x,y;

printf("\nInput x and y: ");

scanf("%ld%ld",&x,&y);

t=fun(x,y,&r);

printf("x=%d,y=%d,r=%ld,last=%ld\n",

x,y,r,t);

}?

3.程序設(shè)計(jì)題

請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)如下多項(xiàng)式的值,直到|Sn - Sn-1|<0.000001為止:

例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s= 1.100000。

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

#include <stdio.h>

#include <math.h>

double fun(double x)

{

?

}

main()

{

double x,s;

printf("Input x: ");

scanf("%lf",&x);

s=fun(x);

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

}

【答案】

double fun(double x)

{

int n=1;

double s0,s1=1.0,t=1.0;

do

{

s0=s1;

t=t*(0.5-n+1)*x/n;

s1=s0+t;

n++;

}while(fabs(s1-s0)>=0.000001);

return s1;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。

例如,形參s所指的字符串為:abs5def126jkm8,程序執(zhí)行后的輸出結(jié)果為:22。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <string.h>

#include <ctype.h>

int fun(char *s)

{

int sum=0;

while(*s) {

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

if(isdigit(*s)) sum+=*s-___1___;

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

___2___;

}

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

return___3___;

}

main()

{

char s[81]; int n;

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

gets(s);

n=fun(s);

printf("\nThe result is: %d\n\n",n);

}

【答案】

(1)'0' 或 48 (2)s++ (3)sum 或(sum)

2.程序修改題

下列給定程序中,計(jì)算如下公式的值:

函數(shù)fun的功能是:根據(jù)整型形參m的值,計(jì)算上面公式。

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

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

#include <conio.h>

#include <stdio.h>

double fun(int m)

{

double c=1.0;

int k;

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

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

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

c-=1/(k*k);

return?;

}

main()

{

int para=10;

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

}

【答案】

(1)將for(k=2;k<m;k++)改為:

for(k=2;k<=m;k++)或for(k=2;k<m+1;k++)

(2)將c-=1/(k*k);改為:c-=1.0/(k*k);?

3.程序設(shè)計(jì)題

請(qǐng)編寫函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。

例如,若輸入字符串"-1234",則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

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

#include <stdio.h>

#include <string.h>

long fun(char *p)

{

?

}

main()

{

char s[6];

long n;

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

gets(s);

n=fun(s);

printf("%ld\n",n);

}

【答案】

long fun(char *p)

{

long t=0;

int flag=1;

if(*p=='-')

{ flag=-1; p++; }

while(*p)

{ t=t*10+(*p-'0'); p++; }

return flag*t;

}

1.程序填空題

人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組student中,且編號(hào)唯一。函數(shù)fun的功能是:找出指定編號(hào)人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號(hào)不存在,返回?cái)?shù)據(jù)中的編號(hào)為空串。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <string.h>

#define N 8

typedef struct

{

char num[10];

int year,month,day;

}STUDENT;

___1___fun(STUDENT *student,char *num)

{

int I;

STUDENT a={"000003",1979,9,1};

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

if(strcmp(___2___,num)==0)

return (___3___);

return a;

}

main()

{

STUDENT student[N]=

{

{"000001",1978,2,15},{"000002",1981,9,21},{"000003",1979,9,1},{"000004",1982,7,15},{"000005",1980,9,28},{"000006",1983,11,15},{"000007",1983,6,22},{"000008",1984,8,19}

};

STUDENT s;

char n[10]="666666";

s=fun(student,n);

if(s.num[0]==0)

{

printf("\nNot found!\n");

}

else

{

printf("\nSucceed!\n ");

printf("%s %d-%d-%d\n",s.num,s.year,s.month,s.day);

}

}

【答案】

(1)STUDENT (2)student[i].num (3)student[i]

2.程序修改題

下列給定程序中,函數(shù)fun的功能是:將s所指字符串中最后一次出現(xiàn)的s1所指子串替換成s2所指子串,所形成的新串放在str所指的數(shù)據(jù)中。在此處,要求s1和s2所指字符串的長度相同。

例如,當(dāng)s所指字符串中的內(nèi)容為abcdabfabc,s1所指子串中的內(nèi)容為ab,s2所指子串中的內(nèi)容為99時(shí),則在str所指的數(shù)組中的內(nèi)容為abcdabf99c。

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

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

#include <conio.h>

#include <stdio.h>

#include <string.h>

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

void fun(char*s,s1,s2,str)

{

char *p,*r,*a;

strcpy(str,s);

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

while(str)

{

p=str;

r=s1;

while(*r)

if(*r==*p)

{

r++;

p++;

}

else

{

break;

}

if(*r=='\0')

a=str;

str++;

}

r=s2;

while(*r)

{

*a=*r;

a++;

r++;

}

}

main()

{

char s[100],s1[100],s2[100],str[100];

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

scanf("%s",s);

printf("\nPlease enter substring s1:");

scanf("%s",s1);

printf("\nPlease enter substring s2:");

scanf("%s",s2);

if(strlen(s1)==strlen(s2))

{

fun(s,s1,s2,str);

printf("\nThe result is : %s\n",str);

}

else

{

printf("\nError : strlen(s1)!=strlen(s2)\n");

}

}

【答案】

(1)將void fun(char*s,s1,s2,str)改為:void fun(char *s,char *s1,char *s2,char *str)

(2)將while(str)改為:while(*str)

3.程序設(shè)計(jì)題

函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符刪除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為“ABCDEFG 12345”,其中字符C的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除;而字符1的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF12345”。

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

#include <stdio.h>

#include <string.h>

void fun(char *s,char t[])

{

?

}

main()

{

char s[100],t[100];

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

scanf("%s",s);

fun(s,t);

printf("\nThe result is: %s\n",t);

}

【答案】

void fun(char *s,char t[])

{

int k,n=0;

for(k=0; k<strlen(s); k++)

if(k%2!=0||s[k]%2!=1)

t[n++]=s[k];

t[n]='\0';

}


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

分享到微博請(qǐng)遵守國家法律
平果县| 绥中县| 玛曲县| 札达县| 白城市| 大连市| 宁陵县| 林口县| 晋城| 江达县| 石柱| 祁连县| 肥西县| 兰西县| 曲松县| 荆门市| 水富县| 麻阳| 石景山区| 青海省| 蒲江县| 和硕县| 乌拉特前旗| 呼和浩特市| 宁夏| 扶沟县| 攀枝花市| 克拉玛依市| 水城县| 阿巴嘎旗| 武定县| 南川市| 云龙县| 万年县| 张家界市| 韶关市| 新龙县| 昌乐县| 连城县| 太仆寺旗| 象州县|