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

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

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

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

1.程序填空題

給定程序中,函數(shù)fun的功能是:計算出形參s所指字符串中包含的單詞個數(shù),作為函數(shù)值返回。為便于統(tǒng)計,規(guī)定各單詞之間用空格隔開。

例如,形參s所指的字符串為:This is a C language program.,函數(shù)的返回值為6。

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

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

#include <stdio.h>

int fun(char *s)

{

int n=0,flag=0;

while(*s!='\0')

{ if(*s!=' ' && flag==0) {

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

___1___; flag=1;}

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

if(*s==' ') flag=___2___;

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

___3___;}

return n;

}

main()

{

char str[81]; int n;

printf("\nEnter a line text:\n");

gets(str);

n=fun(str);

printf("There are %d words in this text.\n",n);

}

【答案】

(1)n++ (2)0 (3)s++

2.程序修改題

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

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

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

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

#include <stdio.h>

#include <string.h>

void fun(char*s,char*t)

{

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

int I;

sl=strlen(s);

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

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

t[i]=s[sl-i];

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

t[sl+i]=s[i];

t[2*sl]='\0';

}

main()

{

char s[100],t[100];

printf("Please enter string s:");

scanf("%s",s);

fun(s,t);

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

}

【答案】

(1)將int i; 改為:int i,sl;

(2)將t[i] = s[sl-i]; 改為:

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

3.程序設(shè)計題

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

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

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

#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: %ld\n", c);

}

【答案】

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

{

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

}

1.程序填空題

給定程序中,函數(shù)fun的功能是:找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計出其出現(xiàn)的次數(shù)。

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

letter 'a' :3 times

letter 's' :3 times

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

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

#include <stdio.h>

#include <string.h>

#include <ctype.h>

void fun(char*s)

{

int k[81]={0},n,I,max=0;

char ch;

while(*s)

{

if(isalpha(*s))

{

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

ch=tolower(___1___);

n=ch-'a';

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

k[n]+=___2___;

}

s++;

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

if(max<k[n]) max=___3___;

}

printf("After count :\n");

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

if(k[i]==max)

printf("letter \'%c\': %d times\n",i+'a',k[i]);

}

main()

{

char s[81];

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

gets(s);

fun(s);

}

【答案】

(1)*s (2)1 (3)k[n]?

2.程序修改題

給定程序中函數(shù)fun的功能是:判斷一個整數(shù)是否是素數(shù),若是返回1,否則返回0。在main()函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。

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

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

#include <stdio.h>

int fun(int m)

{

int k=2;

while(k<=m&&(m%k))

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

k++

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

if(m=k)

return 1;

else

return 0;

}

main()

{

int n;

printf("\nPlease enter n: ");

scanf( "%d", &n );

if(fun(n)) printf( "YES\n" );

else printf("NO!\n");

}

【答案】

(1)將k++ 改為:k++;

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

3.程序設(shè)計題

數(shù)組a[N]保存著一組3位數(shù)的無符號正整數(shù),其元素的個數(shù)通過變量len傳入fun函數(shù)。請補充fun函數(shù),該函數(shù)的功能是:從數(shù)組a中找出個位和百位數(shù)字相等的所有無符號整數(shù),結(jié)果保存在數(shù)組yy中,其個數(shù)由fun函數(shù)返回。

例如,當(dāng)a[6]={111,323,677,456,987,999}時,b[3]={111,323,999}。

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

#include <stdio.h>

#include <conio.h>

#define N 500

int fun(int a[],int bb[],int len)

{

?

}

main()

{

int a[8]={111,323,677,456,987,999};

int b[N];

int len=0,n=0,i=0;

len=6;

printf("The original data\n ");

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

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

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

n=fun(a,b,len);

printf("\nb=");

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

printf("%u ",b[i]);

}

【答案】

int i,n=0;

int g,b;

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

{

g=a[i]%10;

b=a[i]/100;

if(g==b)

bb[n++]=a[i];

}

return n;

1.程序填空題

給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,查找含有形參substr所指子串的所有字符串并輸出,若沒找到則輸出相應(yīng)信息。Ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。程序中庫函數(shù)strstr(s1,s2)的功能是在s1串中查找s2子串,若沒有,函數(shù)值為0;若有,為非0。

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

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

#include <stdio.h>

#include <string.h>

#define N 5

#define M 15

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

{

int I,find=0;

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

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

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

if(strstr(ss[i],___2___)!=NULL)

{ find=1; puts(ss[i]); printf("\n"); }

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

if(find==___3___)

printf("Don't found!\n");

}

main()

{

char x[N][M]={"BASIC","Clangwage","Java","QBASIC","Access"},str[M];

int I;

printf("The original string\n\n");

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

printf("\n");

printf("Enter a string for search : ");

gets(str);

fun(x,str);

}

【答案】

(1)N 或 =N-1 (2)substr (3)0?

2.程序修改題

給定程序中函數(shù)fun的功能是:統(tǒng)計字符串中各元音字母(即:A、E、I、O、U)的個數(shù)。注意,字母不分大、小寫。

例如:若輸入:THIs is a boot,則輸出應(yīng)該是:1、0、2、2、0。

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

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

#include <stdio.h>

fun(char *s,int num[5])

{

int k,i=5;

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

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

num[i]=0;

for(;*s;s++)

{

i=-1;

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

switch(s)

{ case 'a': case 'A': {i=0; break;}

case 'e': case 'E': {i=1; break;}

case 'I': case 'I': {i=2; break;}

case 'o': case 'O': {i=3; break;}

case 'u': case 'U': {i=4; break;}

}

if(i>=0) num[i]++;

}

}

main()

{

char s1[81];

int num1[5],I;

printf( "Please enter a string: " );

gets(s1);

fun(s1,num1);

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

printf("\n");

【答案】

(1)將num[i]=0; 改為:num[k]=0;

(2)將switch(s) 改為:switch(*s)

}?

3.程序設(shè)計題

請編寫函數(shù)fun,其功能是求出二維數(shù)組周邊元素之和,該和值作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

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

1 3 5 7 9

2 9 9 9 4

6 9 9 9 8

1 3 5 7 0

則函數(shù)值為61。

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

#include <stdio.h>

#include <windows.h>

#define M 4

#define N 5

int fun(int a[M][N])

{

?

}

main()

{

int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},

{6,9,9,9,8},{1,3,5,7,0}};

int I,j,y;

system("cls");

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

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

{

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

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

printf("\n");

}

y=fun(aa);

printf("The sum: %d\n",y);

printf("\n");

}

【答案】

int fun(int a[M][N])

{

int k,s=0;

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

s+=a[0][k]+a[M-1][k];

for( k=1; k<M-1; k++ )

s+=a[k][0]+a[k][N-1];

return s;

}

1.程序填空題

程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是對形參b所指結(jié)構(gòu)體變量中的數(shù)據(jù)進行修改,最后在主函數(shù)中輸出修改后的數(shù)據(jù)。

例如:b所指變量t中的學(xué)號、姓名、和三門課的成績依次是:10002、“ZhangQi”、93、85、87,修改后輸出t中的數(shù)據(jù)應(yīng)為:10004、“LiJie”、93、85、87。

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

{

int I;

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

b___1___=10004;

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

strcpy(b___2___,"LiJie");

}

main()

{

struct student t={10002,"ZhangQi",93,85,87};

int I;

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

printf("No: %ld Name: %s\nscores: ",t.sno, t.name);

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

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

printf("\n");

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

fun(___3___);

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

printf("No:%ld Name: %s\nscores: ",t.sno,t.name);

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

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

printf("\n");

}

【答案】

(1)->sno (2)->name (3)&t

2.程序修改題

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

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

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

#include <stdio.h>

void fun(char t[])

{

char c;

int I,j;

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

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

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

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

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

{c=t[j];t[j]=t[j+1];t[j+1]=c;}

}

main()

{

char s[81];

printf("Enter a character string:");

gets(s);

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

fun(s);

printf("After sorting decendingly:\n

%s",s);

}

【答案】

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

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

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

if(t[j]>t[j + 1])?

3.程序設(shè)計題

請編寫函數(shù)fun,其功能是:將ss所指字符串中所有下標為奇數(shù)位置上的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。

例如,若輸入“abc4EFg”,則應(yīng)輸出“aBc4EFg”。

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

#include <stdio.h>

#include <string.h>

void fun(char *ss)

{

?

}

void main(void)

{

char tt[51];

printf("Please enter an character string

within 50 characters:\n");

gets(tt);

printf("After changing,the string\n

%s",tt);

fun(tt);

printf("becomes\n %s",tt);

}

【答案】

void fun(char *ss)

{

int k;

for(k=1;k<strlen(ss);k+=2)

if(ss[k]>='a'&&ss[k]<='z')

ss[k]=ss[k]-'a'+'A';

}

1.程序填空題

程序通過定義學(xué)生結(jié)構(gòu)體數(shù)組,存儲了若干名學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是:將存放學(xué)生數(shù)據(jù)的結(jié)構(gòu)體數(shù)組按照姓名的字典序(從小到大)排序。

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

{

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

___1___t;

int I,j;

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

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

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

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

if(strcmp(___3___)>0)

{t=a[I];a[I]=a[j];a[j]=t;}

}

main()

{

struct student s[4]={

{10001,"ZhangSan", 95, 80, 88},

{10002,"LiSi", 85, 70, 78},

{10003,"CaoKai", 75, 60, 88},

{10004,"FangFang", 90, 82, 87}};

int I,j;

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

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

{

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

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

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

printf("\n");

fun(s,4);

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

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

{

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

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

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

printf("\n");

}

}

}

【答案】

(1)struct student

(2)n-1 或 =n-2

(3)a[i].name, a[j].name

2.程序修改題

給定程序中,函數(shù)fun的功能是:由形參給定n個實數(shù),輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數(shù)個數(shù)。

例如,n=8時,輸入:193.199、195.673、195.757、196.051、196.092、196.596、196.579、196.763,所得平均值為:195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為:5

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

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

#include <stdio.h>

int fun(float x[], int n)

{

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

int j,c=0, float xa=0.0;

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

xa+=x[j]/n;

printf("ave=%f\n",xa);

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

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

if(x[j]=>xa)

c++;

return c;

}

main()

{

float x[100]={193.199,195.673,195.757,

196.051,196.092,196.596,196.579,196.763};

printf("%d\n",fun(x,8));

}

【答案】

(1)將int j,c=0,float xa=0.0; 改為:

int j,c=0; float xa=0.0;

(2)將if(x[j]=> xa) 改為:if(x[j]>=xa)?

3.程序設(shè)計題

編寫函數(shù)fun,其功能是,根據(jù)以下公式求P的值,結(jié)果由函數(shù)值返回。M與n為兩個正整數(shù)且要求m > n:

P=m!/(n!*(m-n)!)

例如:m=12、n=8時,運行結(jié)果為495.000000。

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

#include <stdio.h>

float fun(int m,int n)

{

?

}

main()

{

printf("P=%f\n",fun(12,8));

}

【答案】

float fun(int m,int n)

{

float s=1.0;

int k;

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

s*=k;

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

s/=k;

return s;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是將不帶頭節(jié)點的單向鏈表結(jié)點數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。

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

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

#include <stdio.h>

#include <stdlib.h>

#define N 6

typedef struct node

{ int data;

struct node *next;

}NODE;

void fun(NODE *h)

{

NODE *p,*q; int t;

p=h;

while(p)

{

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

q=___1___;

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

while(___2___)

{

if(p->data>q->data)

{

t=p->data;

p->data=q->data;

q->data=t;

}

q=q->next;

}

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

p=___3___;

}

}

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("\nHead ");

do

{

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

p=p->next;

}while(p!=NULL);

printf("->End\n");

}

}

main()

{

NODE *head;

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

head=creatlist(a);

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

outlist(head);

fun(head);

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

outlist(head);

}

【答案】

(1)p->next

(2)q!=NULL或q

(3)p->next?

2.程序修改題

給定程序中,函數(shù)fun的功能是:在p所指字符串中找出ASCII碼值最大的字符,將其放在第一個位置上;并將該字符前的原字符向后順序移動。

例如,調(diào)用fun函數(shù)之前給字符串輸入:ABCDeFGH,調(diào)用后字符串中的內(nèi)容為:eABCDFGH。

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

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

#include <stdio.h>

fun( char *p )

{

char max,*q; int i=0;

max=p[i];

while(p[i]!=0)

{

if(max<p[i])

{ max=p[i];

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

q=p+i

}

i++;

}

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

While(q>p)

{

*q=*(q-1);

q--;

}

p[0]=max;

}

main()

{

char str[80];

printf("Enter a string: ");

gets(str);

printf("\nThe original string:");

puts(str);

fun(str);

printf("\nThe string after moving: ");

puts(str);

printf("\n\n");

}

【答案】

(1)將q=p+i 改為:q=p+i;

(2)將While(q>p) 改為:while(q<p)

3.程序設(shè)計題

學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把指定分數(shù)范圍內(nèi)的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分數(shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返回。

例如,輸入的分數(shù)是60、69,則應(yīng)當(dāng)把分數(shù)在60~69之間的學(xué)生數(shù)據(jù)進行輸出,包含60分和69分的學(xué)生數(shù)據(jù)。主函數(shù)中將把60放在low中,把69放在heigh中。

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

#include <stdio.h>

#define N 16

typedef struct

{

char num[10];

int s;

}STREC;

int fun(STREC *a,STREC *b,int l,int h)

{

?

}

main()

{

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

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

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

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

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

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

STREC h[N],tt;FILE *out;

int I,j,n,low,heigh,t;

printf("Enter 2 integer number

low&heigh: ");

scanf("%d%d",&low,&heigh);

if( heigh<low )

{t=heigh;heigh=low;low=t;}

n=fun(s,h,low,heigh);

printf("The student's data between

%d--%d :\n",low,heigh);

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

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

printf("\n");

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

n=fun(s,h,80,98);

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

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

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

if(h[i].s>h[j].s)

{ tt=h[i];h[i]=h[j]; h[j]=tt; }

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

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

fprintf(out,"\n");

fclose(out);

}

【答案】

int fun(STREC *a,STREC *b,int l,int h)

{

int k,n=0;

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

if(a[k].s>=l&&a[k].s<=h)

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

return n;

}

1.程序填空題

給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點數(shù),然后將其顯示在屏幕上。

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

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

#include <stdio.h>

#include <stdlib.h>

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

{

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

___1___fp;

char str[100],str1[100],str2[100];

int a1; double f1;

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

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

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

___2___;

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

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

fscanf(___3___,"%s%s%s",str,str1,str2);

fclose(fp);

a1=atoi(str1);

f1=atof(str2);

printf("Result:%s %d %f\n",str,a1,f1);

}

main()

{

char a[10]="Hello!";

int b=12345;

double c=98.76;

fun(a,b,c);

}

【答案】

(1)FILE * (2)fclose(fp) (3)fp?

2.程序修改題

給定程序中,函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)換為A、z轉(zhuǎn)換為a),其他字符不變。

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

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

#include <stdio.h>

#include <ctype.h>

void fun(char *s)

{

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

while(*s!='@')

{

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

{

if(*s=='Z') *s='A';

else if(*s=='z') *s='a';

else *s+=1;

}

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

(*s)++;

}

}

main()

{

char s[80];

printf("Enter a string with length<80.:");

gets(s);

printf("The string : \n ");

puts(s);

fun(s);

printf("The Cords :\n ");

puts(s);

}

【答案】

(1)將while(*s!='@') 改為:while(*s!='\0')

(2)將(*s)++; 改為:s++?

3.程序設(shè)計題

請編寫函數(shù)fun,函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容;若數(shù)組中有n個整數(shù),要求把下標從0~ p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。

例如,一維數(shù)組中的原始內(nèi)容為:1、2、3、4、5、6、7、8、9、10,p的值為3;移動后一維數(shù)組中的內(nèi)容應(yīng)為:5、6、7、8、9、10、1、2、3、4。

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

#include <stdio.h>

#define N 80

void fun(int *w,int p,int n)

{

?

}

main()

{

int a[N]={1,2,3,4,5,6,7,8,9,10,11,

12,13,14,15};

int I,p,n=15;

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

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

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

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

fun(a,p,n);

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

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

printf("\n\n");

}

【答案】

void fun(int *w,int p,int n)

{

int j,k,t=0;

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

{

t=w[0];

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

w[k-1]=w[k];

w[n-1]=t;

}

}


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

分享到微博請遵守國家法律
常德市| 文安县| 元朗区| 龙江县| 龙里县| 通河县| 新竹市| 赞皇县| 穆棱市| 武义县| 财经| 土默特右旗| 洪湖市| 喀什市| 扬中市| 衡水市| 吴旗县| 普安县| 图木舒克市| 安乡县| 稻城县| 舒兰市| 永泰县| 平远县| 通化市| 同江市| 吴江市| 徐州市| 朝阳县| 泰兴市| 进贤县| 建湖县| 达拉特旗| 白城市| 永清县| 绥化市| 武安市| 洪雅县| 博罗县| 海城市| 巴东县|