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

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

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

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

1.程序填空題

給定程序中,函數(shù)fun的功能是用函數(shù)指針指向要調(diào)用的函數(shù),并進(jìn)行調(diào)用。規(guī)定在第2處使f指向函數(shù)f1,在第3處使f指向函數(shù)f 2。當(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;}

double fun(double a,double b)

{

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

___1___(*f)();

double r1,r2;

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

f=___2___; /* point fountion f1 */

r1=f(a);

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

f=___3___; /* point fountion f2 */

r2=(*f)(a,b);

return r1+r2;

}

main()

{

double x1=5, x2=3, r;

r=fun(x1,x2);

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

}

【答案】

(1)double (2)f1 (3)f2

2.程序修改題

給定程序中,函數(shù)fun的功能是:先將字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序連接到t串的后面。

例如:當(dāng)s中的字符串為“ABCDE”時,則t中的字符串應(yīng)為“ABCDEEDCBA”。

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

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

#include <stdio.h>

#include <string.h>

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

{

int I,sl;

sl=strlen(s);

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

for(i=0;i<=s1;i++)

t[i]=s[i];

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

t[sl+i]=s[sl-i-1];

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

t[sl]='\0';

}

main()

{

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

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

scanf("%s",s);

fun(s,t);

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

}

【答案】

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

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

(2)將t[sl]= '\0'; 改為: t[sl*2]='\0';或t[i*2]='\0';

3.程序設(shè)計題

請編寫函數(shù)fun,它的功能是:求出1到m之間(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。

例如,若傳送給m的值為50,則程序輸出:7 11 14 21 22 28 33 35 42 44 49

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

#include <stdio.h>

#define M 100

void fun(int m,int *a,int *n)

{

?

}

main()

{

int aa[M],n,k;

fun(50,aa,&n);

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

if((k+1)%20==0) printf("\n");

else printf("%4d",aa[k]);

printf("\n");

}

【答案】

void fun(int m,int *a,int *n)

{

int k;

*n=0;

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

if(k%7==0||k%11==0)

a[(*n)++]=k;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位相反的順序組成一個新的數(shù),并作為函數(shù)值返回。

例如,輸入一個整數(shù):27638496,函數(shù)返回值為:64862。

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

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

#include <stdio.h>

unsigned long fun(unsigned long n)

{

unsigned long x=0;

int t;

while(n)

{

t=n%10;

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

if(t%2==___1___)

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

x=___2___+t;

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

n=___3___;

}

return x;

}

main()

{

unsigned long n=-1;

while(n>99999999||n<0)

{

printf("input(0<n<100000000): ");

scanf("%ld",&n);

}

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

}

【答案】

(1)0 (2)x*10 (3)n/10

2.程序修改題

下列給定程序中,函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。例如,若輸入adf,則應(yīng)輸出adf。

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

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

#include <string.h>

#include <stdio.h>

void fun(char s[])

{

char ch;

int I,j;

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

for(i=strlen(s);I;i--)

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

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

if(s[j]<s[j+1])

{

ch=s[j];

s[j]=s[j+1];

s[j+1]=ch;

}

}

main()

{

char str[81];

printf("\nPlease enter a character string: ");

gets(str);

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

fun(str);

printf("\nAfter sorting decendingly:\n%s",str);

}

【答案】

(1)將for(i=strlen(s);i;i--)改為:

for(i=strlen(s)-1;i;i--)

或:for(i=strlen(s)-1;i>0;i--)

(2)將if(s[j]<s[j+1])改為:if(s[j]>s[j+1])

3.程序設(shè)計題

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

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

#include <stdio.h>

#include <stdlib.h>

#define N 5

struct list

{

double s;

struct list *next;

};

typedef struct list STR;

double fun(STR *a)

{

?

}

STR *creat(double *s)

{

STR *a,*p,*q;

int i=0;

a=p=(STR*)malloc(sizeof(STR));

p->s=0;

while(i<N)

{

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

q->s=s[i];

i++;

p->next=q;

p=q;

}

p->next=0;

return a;

}

printlist(STR *a)

{

STR *p;

p=a->next;

printf("head");

do

{

printf("->%2.0f",p->s);

p=p->next;

}

while(p!=0);

printf("\n\n");

}

main()

{

double s[N]={69,72,85,80,68},max;

STR *a;

FILE *out;

a=creat(s);

printlist(a);

max=fun(a);

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

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

fprintf(out,"max=%6.1f",max);

fclose(out);

}

【答案】

double max;

STR *q=a;

max=a->s;

do

{

if(q->s>max)

max=q->s;

q=q->next;

}

while(q!=0);

return max;

1.程序填空題

程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。

請在程序的下劃線處填入正確的內(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)

{

FILE *fp; int I,j;

STU s[N],t;

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

fp=fopen(filename,___1___);

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

fclose(fp);

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

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

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

if(s[i].sno___2___)

{t=s[i];s[i]=s[j];s[j]=t;}

fp=fopen(filename,"wb");

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

___3___(s,sizeof(STU),N,fp);

fclose(fp);

}

main()

{

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

int I,j;

FILE*fp;

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

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

fclose(fp);

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

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

{

printf("No:%ld Name:%-8sscores: ",

t[j].sno, t[j].name);

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

printf("%6.2f ",t[j].score[i]);

printf("\n");

}

fun("student.dat");

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

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

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

fclose(fp);

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

{

printf("No:%ld Name:%-8sscores: ",

ss[j].sno, ss[j].name);

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

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

printf("\n");

}

}

【答案】

(1)“rb”或“rb+”

(2)>=s[j].sno或>s[j].sno

(3)fwrite

2.程序修改題

給定程序中,函數(shù)fun的功能是:將一個由八進(jìn)制數(shù)字字符組成的字符串轉(zhuǎn)換為與其值相等的十進(jìn)制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進(jìn)制數(shù)字字符。

例如,若輸入:77777,則輸出將是:19607。

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

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

#include <stdio.h>

int fun(char *p)

{

int n;

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

n=*P-'o';

p++;

while( *p!=0 )

{

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

n=n*7+*P-'o';

p++;

}

return n;

}

main()

{

char s[6];

int I; intn;

printf("Enter a string(Ocatal

digits):");

gets(s);

if(strlen(s)>5)

{

printf("Error: String too longer!\n");

exit(0);

}

for(i=0; s[i]; i++)

if(s[i]<'0'||s[i]>'7')

{ printf("Error:%c not is ocatal

digits!\n",s[i]);

exit(0); }

printf("The original string: ");

puts(s);

n=fun(s);

printf("\n%s is convered to integer

number: %d\n",s,n);

}

【答案】

(1)將n=*P-'o'改為:n=*p-'0'

(2)將n=n*7+*P-'o'改為:n=n*7+*p-'0';

3.程序設(shè)計題

學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:函數(shù)返回指定學(xué)號的學(xué)生數(shù)據(jù),指定的學(xué)號在主函數(shù)中輸入。若沒找到指定學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。

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

#include <stdio.h>

#include <string.h>

#define N 16

typedef struct

{char num[10];

int s;

}STREC;

STREC fun(STREC *a, char *b)

{

?

}

main()

{

STREC s[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

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

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

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

STREC h;

char m[10];

int I;

FILE *out;

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

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

{

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

printf("%s %3d ",s[i].num,s[i].s);

}

printf("\n\nEnter the number: ");

gets(m);

h=fun(s,m);

printf("The data : ");

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

printf("\n");

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

h=fun(s,"GA013");

fprintf(out,"%s %4d\n",h.num,h.s);

fclose(out);

}

【答案】

STREC fun(STREC*a,char*b)

{

STREC t={NULL,-1};

int k;

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

if(!strcmp(a[k].num,b))

return a[k];

return t;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串?dāng)?shù)組中的字符串按由長到短的順序排序,并輸出排序結(jié)果。Ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。

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

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

#include <stdio.h>

#include <string.h>

#define N 5

#define M 8

void fun(char (*ss)[M])

{

char *ps[N],*tp;

int I,j,k;

for(i=0;i<N;i++) ps[i]=ss[i];

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

{

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

k=___1___;

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

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

if(strlen(ps[k])<strlen(___2___))

k=j;

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

tp=ps[i];ps[i]=ps[k];ps[k]=___3___;

}

printf("The string after sorting by length:\n");

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

}

main()

{

char ch[N][M]={"red","green","blue","yellow","black"};

int I;

printf("The original string\n");

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

printf("\n");

fun(ch);

}

【答案】

(1)i (2)ps[j] (3)tp

2.程序修改題

下列給定程序中,函數(shù)fun的功能是:計算并輸出以下數(shù)列的前m項之和SN,直到SN+1大于p為止,p的值通過形參傳入。

例如,若p的值為10.0,則函數(shù)值為9.592857。

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

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

#include <conio.h>

#include <stdio.h>

double fun(double p)

{

int m;

double s,t;

m=2;

s=2.0;

while(s<=p)

{

t=s;

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

s=s+(m+1)/m;

m++;

}

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

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

return s;

}

main()

{

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

}

【答案】

(1)將s=s+(m+1)/m;改為:

s=s+(double)(m+1)/m;

(2)將return s;改為:return t;

3.程序設(shè)計題

函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為奇數(shù)、同時ASCII值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。

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

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

#include <stdio.h>

#include <string.h>

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

{

?

}

main()

{

char s[100],t[100];

printf("Please enter string S:");

scanf("%s",s);

fun(s,t);

printf(" The 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==1 && s[k]%2==1)

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

t[n]='\0';

}

1.程序填空題

給定程序中,函數(shù)fun的功能是將不帶頭結(jié)點的單向鏈表逆置。即若原鏈表中從頭至尾結(jié)點數(shù)據(jù)域依次為:2、4、6、8、10,逆置后,從頭至尾結(jié)點數(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;

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

___1___fun(NODE *h)

{

NODE *p,*q,*r;

p=h;

if(p==NULL) return NULL;

q=p->next;

p->next=NULL;

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

while(___2___)

{

r=q->next;

q->next=p;

p=q;

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

q=___3___;

}

return p;

}

NODE *creatlist(int a[])

{

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

h=NULL;

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

{

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

q->data=a[i];

q->next=NULL;

if(h==NULL) h=p=q;

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

}

return h;

}

void outlist(NODE *h)

{

NODE *p;

p=h;

if(p==NULL)

printf("The list is NULL!\n");

else

{

printf("\n 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("\n The original list:\n");

outlist(head);

head=fun(head);

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

outlist(head);

}

【答案】

(1)NODE * 或 struct node *

(2)q!=NULL 或q != 0或q

(3)r

2.程序修改題

給定程序中,函數(shù)fun的功能是:從s所指字符串中刪除所有小寫字母c。

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

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

#include <stdio.h>

void fun(char *s )

{

int I,j;

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

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

s[j]=s[i];

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

s[i]='\0';

}

main()

{

chars[80];

printf("Enter a string: ");

gets(s);

printf("The original string: ");

puts(s);

fun(s);

printf("The string after deleted : ");

puts(s);

printf("\n");

}

【答案】

(1)將s[j]=s[i]; 改為:s[j++]=s[i];

(2)將s[i]='\0'; 改為:s[j]='\0';

3.程序設(shè)計題

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

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

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

#include <stdio.h>

void fun(char *a)

{

?

}

main()

{

char s[81],*p; int n=0;

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

gets(s);

fun(s);

printf("The string after moveing:

Chapter_2

\n");

puts(s);

}

【答案】

void fun(char *a)

{

int n=0,m=strlen(a),j=0,k=0;

while(a[j]=='*')

/*統(tǒng)計有多少個前導(dǎo)'*'存入計數(shù)器n中*/

{ n++;j++; }

for(; j<m; j++)

a[k++]=a[j];

for(j=0; j<n; j++) /*串尾補(bǔ)n個'*'*/

a[k++]=*';

a[k]='\0'; /*添加字符串結(jié)束符*/

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有數(shù)字字符順序前移,其他字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。

例如,s所指字符串為:asd123fgh5##43df,處理后新字符串為:12543asdfgh##df。

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

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

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <ctype.h>

char *fun(char *s)

{

int I,j,k,n; char *p,*t;

n=strlen(s)+1;

t=(char*)malloc(n*sizeof(char));

p=(char*)malloc(n*sizeof(char));

j=0; k=0;

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

{

if(isdigit(s[i])) {

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

p[___1___]=s[i];j++;}

else

{t[k]=s[i]; k++;}

}

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

for(i=0;i<___2___;i++) p[j+i]=t[i];

p[j+k]=0;

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

return___3___;

}

main()

{

char s[80];

printf("Please input: ");

scanf("%s",s);

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

}

【答案】

(1)j (2)k 或 =k-1 (3)p或(p)?

2.程序修改題

給定程序中,函數(shù)fun()的功能是:求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[1]中的數(shù)對調(diào)。

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

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

#include <conio.h>

#include <stdio.h>

#include <windows.h>

#define N 20

void fun(int *a,int n)

{

int I,m,t,k;

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

for(i=0;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;

system("cls");

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;i<n;i++) 改為:

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

(2)將k=m; 改為:m=k;

3.程序設(shè)計題

給定程序中,函數(shù)fun的功能是:把形參str所指字符串中下標(biāo)為奇數(shù)的字符右移到下一個奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個奇數(shù)位置,下標(biāo)為偶數(shù)的字符不動(注意:字符串的長度大于等于2)。

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

#include <stdio.h>

void fun(char *str)

{

?

}

main()

{

char str[100]="564321";

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

fun(str);

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

}

【答案】

int i,n,j;

char c;

n=0;

for(i=0;str[i]!='\0';i++)

n++;

if(n%2==0)

j=n-1;

else

j=n-2;

c=str[j];

for(i=j-2;i>=1;i=i-2)

str[i+2]=str[i];

str[1]=c;

1.程序填空題

給定程序中通過定義學(xué)生結(jié)構(gòu)體變量存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是將該學(xué)生的結(jié)構(gòu)體變量整體賦值,修改新變量中的學(xué)號和姓名并打印出來。

例如:若 a={10001,"ZhangSan", 95, 80, 88},則結(jié)果為:b={10002,"LiSi", 95, 80, 88}。

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

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

#include <stdio.h>

#include <string.h>

struct student

{long sno;

char name[10];

float score[3];

};

void fun(struct student a)

{

struct student b;

int I;

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

b=___1___;

b.sno=10002;

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

strcpy(___2___, "LiSi");

printf("學(xué)號:%d 姓名:%-8s 各科成績:",b.sno, b.name);

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

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

printf("%6.2f",b.___3___);

printf("\n");

}

void main()

{

struct student s={10001,"ZhangSan",95,80, 88};

int I;

printf("學(xué)號:%d 姓名:%-8s 各科成績:",s.sno, s.name);

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

printf("%6.2f ",s.score[i]);

printf("\n");

fun(s);

}

【答案】

(1)a (2)b.name (3)score[i]

2.程序修改題

下列給定程序中,函數(shù)fun的功能是:逐個比較x、y兩個字符串對應(yīng)位置中的字符,把ASCII相等或值小的字符依次存放到z數(shù)組中,形成一個新的字符串。例如,若x中的字符串為AbceDEfG,y中的字符串為ABdefgC,則z中的字符串應(yīng)為ABceDEC。

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

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

#include <stdio.h>

#include <string.h>

void fun(char *a,char *b,char *z)

{

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

int i=1;

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

while(*a!=*b)

{

if(*a>*b)

z[i]=*b;

else

z[i]=*a;

if(*a)

a++;

if(*b)

b++;

i++;

}

}

main()

{

char x[10]="AbceDEfG",y[10]="ABdefgC",z[80]={'\0'};

fun(x,y,z);

printf("The string x:");

puts(x);

printf("The string y:");

puts(y);

printf("The result:");

puts(z);

}

【答案】

(1)將int i=1;改為:int i=0;

(2)將while(*a!=*b)改為:while(*a || *b)

3.程序設(shè)計題

函數(shù)fun的功能是:將兩個三位數(shù)的正整數(shù)a、b合并形成一個長整數(shù)在c中。合并的方式是:將a數(shù)的百位、十位和個位放在c數(shù)的十萬位、千位和十位上,b數(shù)的百位、十位和個位放在c數(shù)的萬位、百位和個位上。

例如:當(dāng)a=456,b=123,調(diào)用該函數(shù)后c=415263。

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

#include <conio.h>

#include <stdio.h>

#include <windows.h>

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

{

?

}

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

{

int a,b; long c;

system("cls");

printf(“Input a,b:”);

scanf(“%d%d”,&a,&b);

fun(a,b,&c);

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

}

【答案】

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

{

*c=a/100;

*c=*c*10+b/100;

*c=*c*10+(a/10)%10;

*c=*c*10+(b/10)%10;

*c=*c*10+a%10;

*c=*c*10+b%10;

}


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

分享到微博請遵守國家法律
景宁| 石屏县| 介休市| 西藏| 固始县| 宜兴市| 波密县| 齐齐哈尔市| 安化县| 湛江市| 枣庄市| 富阳市| 灯塔市| 科尔| 肥乡县| 宁德市| 阜南县| 黄山市| 包头市| 湟中县| 阳江市| 宜宾县| 淮安市| 英山县| 南投市| 苏州市| 达日县| 昭通市| 连江县| 黑山县| 巴东县| 焦作市| 田东县| 岳池县| 东城区| 福安市| 孟村| 香河县| 六安市| 周口市| 英山县|