鸭子tv国产极品在线观看_成人69视频在线播放_91精品免费在线观看_亚洲AT永久偷窥无码精品_国产精品自产拍在线观看涩浪潮久

江蘇省高校計(jì)算機(jī)等級考試命題研究院 江蘇省高校計(jì)算機(jī)等級考試輔導(dǎo)
全國計(jì)算機(jī)二級C題庫第81--90套

 

 

本題目如果下載后發(fā)現(xiàn)有錯(cuò)誤的地方,請聯(lián)系網(wǎng)站管理員:QQ121431055

 

考試時(shí),上機(jī)操作題目有三套,基本操作題、簡單應(yīng)用題、綜合應(yīng)用題

 

81套:

給定程序中,函數(shù)fun的功能是:在形參s所指字符串中的每個(gè)數(shù)字字符之后

插入一個(gè)*號。例如,形參s所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:

def3*5*adh3*kjsdf7*。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

void fun(char *s)

{ int i, j, n;

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

 

 

 

 

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

if(s[i]>='0' ___1___ s[i]<='9')

{ n=0;

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

while(s[i+1+n]!= ___2___) n++;

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

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

s[j+1]= ___3___;

s[j+1]='*';

i=i+1;

}

}

main()

{ char s[80]="ba3a54cd23a";

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

fun(s);

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

}

解題思路:

第一處:判斷是數(shù)字,應(yīng)該使用“與”,所以應(yīng)填:&&。

第二處:判斷字符串是否是字符串結(jié)束符,所以應(yīng)填:'\0'。

第三處:如果當(dāng)前字符是數(shù)字字符,則把當(dāng)前字符以后的所有字符往后一個(gè)位置,所以應(yīng)

填:s[j]

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。

    1    1     1          1

y = 1 + ----- + ----- + ----- + …… + -----

       2*2  3*3   4*4        m*m

例如,若 m 中的值為: 5,則應(yīng)輸出:1.463611。

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

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

給定源程序:

#include

double fun ( int m )

{ double y = 1.0 ;

int i;

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

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

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

y += 1 / (i * i) ;

return( y ) ;

}

main( )

{ int n = 5 ;

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

}

解題思路:

 

 

 

 

第一處:使用for循環(huán)計(jì)算公式,必須計(jì)算到m,所以應(yīng)改為for(i=2; i<=m; i++)。

第二處:在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),所以所除結(jié)果也是整數(shù),因此應(yīng)改

y+=1./(i*i)。

***************************************************

請編寫函數(shù)fun, 函數(shù)的功能是:實(shí)現(xiàn)B=A+A', 即把矩陣A加上A的轉(zhuǎn)置, 存放

在矩陣B中。計(jì)算結(jié)果在 main 函數(shù)中輸出。

例如,輸入下面的矩陣: 其轉(zhuǎn)置矩陣為:

1 2 3 1 4 7

4 5 6 2 5 8

7 8 9 3 6 9

程序輸出:

2 6 10

6 10 14

10 14 18

注意: 部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

void fun ( int a[3][3], int b[3][3])

{

}

main( ) /* 主程序 */

{ int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ;

int i, j ;

fun(a, t) ;

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

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

printf("}", t[i][j]) ;

printf("\n") ;

}

NONO () ;

}

解題思路:

本題考察考生如何實(shí)現(xiàn)矩陣的轉(zhuǎn)置,然后執(zhí)行兩個(gè)矩陣中的元素值相加生成一個(gè)新的矩陣。

矩陣轉(zhuǎn)置實(shí)現(xiàn)上就是原行元素值變?yōu)榱性刂,原列元素值變(yōu)樾性刂怠?/SPAN>

參考答案:

void fun ( int a[3][3], int b[3][3])

{

int c[3][3] ;

int i, j ;

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

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

c[i][j] = a[j][i] ; /* 矩陣的轉(zhuǎn)置 */

b[i][j] = a[i][j] + c[i][j] ;

}

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

82套:

給定程序中,函數(shù)fun的功能是:找出100999之間(含100999)所有整數(shù)

中各位上數(shù)字之和為xx為一正整數(shù))的整數(shù),然后輸出;符合條件的整數(shù)個(gè)數(shù)作

為函數(shù)值返回。

例如,當(dāng)x值為5時(shí),100999之間各位上數(shù)字之和為5的整數(shù)有:104、113、

122、131、140、203212、221、230、302、311、320401、410500。共有15

個(gè)。當(dāng)x值為27時(shí),各位數(shù)字之和為27的整數(shù)是:999。只有1個(gè)。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

fun(int x)

{ int n, s1, s2, s3, t;

n=0;

t=100;

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

while(t<=__1__){

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

s1=t; s2=(__2__); s3=t/100;

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

if(s1+s2+s3==__3__)

{ printf("%d ",t);

n++;

}

t++;

}

return n;

}

main()

{ int x=-1;

while(x<0)

{ printf("Please input(x>0): "); scanf("%d",&x); }

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

}

解題思路:

第一處:使用while循環(huán)找出100999之間所有整數(shù),所以應(yīng)填:999。

第二處:s2是求十位數(shù)字,所以應(yīng)填:t/10

第三處:各位數(shù)字之和為x,所以應(yīng)填:x。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是:從低位開始取出長整型變量s中偶數(shù)位

上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:642

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

 

 

 

 

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

給定源程序:

#include

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

void fun (long s, long t)

{ long sl=10;

s /= 10;

*t = s % 10;

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

while ( s < 0)

{ s = s/100;

*t = s*sl + *t;

sl = sl * 10;

}

}

main()

{ long s, t;

printf("\nPlease enter s:"); scanf("%ld", &s);

fun(s, &t);

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

}

解題思路:

第一處:在函數(shù)fun體中,t是一個(gè)指針型變量,因此定義形參時(shí)也應(yīng)定義指針。

第二處:條件應(yīng)該s>0,所以應(yīng)改為:while(s>0)。

***************************************************

學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組

s,請編寫函數(shù)fun,它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。

注意: 部分源程序在文件PROG1.C文件中。

請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

#define N 16

typedef struct

{ char num[10];

int s;

} STREC;

int fun( STREC a[] )

{

}

main()

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

\TAB \TAB {"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

\TAB \TAB {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

\TAB \TAB {"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};

int i;FILE *out ;

fun( s );

 

 

 

 

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

for(i=0;i

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

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

}

printf("\n");

out = fopen("c:\\test\\out.dat","w") ;

for(i=0;i

{ if( (i)%4==0 && i) fprintf(out, "\n");

fprintf(out, "M ",s[i].s);

}

fprintf(out,"\n");

fclose(out) ;

}

解題思路:

本題是按結(jié)構(gòu)體中成績s進(jìn)行降序排列,其結(jié)果仍存入當(dāng)前結(jié)構(gòu)體中。

參考答案:

#include

#define N 16

typedef struct

{ char num[10];

int s;

} STREC;

int fun( STREC a[] )

{

STREC tmp;

int i,j;

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

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

if(a[i].s < a[j].s) {

tmp = a[i];

a[i] = a[j];

a[j] = tmp;

}

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

83套:

給定程序中,函數(shù)fun的功能是:找出100xx999)之間各位上的數(shù)字之

和為15的所有整數(shù),然后輸出;符合條件的整數(shù)個(gè)數(shù)作為函數(shù)值返回。

例如,當(dāng)n值為500時(shí),各位數(shù)字之和為15的整數(shù)有:159、168、177、186、

195249、258、267276、285294、339348、357、366、375384、393

429438、447、456、465、474、483、492。共有26個(gè)。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

fun(int x)

{ int n, s1, s2, s3, t;

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

n=__1__;

t=100;

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

while(t<=__2__)

{ s1=t; s2=(t/10); s3=t/100;

if(s1+s2+s3==15)

{ printf("%d ",t);

n++;

}

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

__3__;

}

return n;

}

main()

{ int x=-1;

while(x>999||x<0)

{ printf("Please input(0

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

}

解題思路:

第一處:符合條件的整數(shù)個(gè)數(shù)n,必須進(jìn)行初始化,所以應(yīng)填:0

 

 

 

 

第二處:找出x999,所以應(yīng)填:x。

第三處:循環(huán)控制變量t每循環(huán)一次t要加1,所以應(yīng)填:t++。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是:先將s所指字符串中的字符按逆序存放

t所指字符串中,然后把s所指串中的字符按正序連接到t所指串的后面。

例如:當(dāng)s所指的字符串為:"ABCDE"時(shí),

t所指的字符串應(yīng)為:"EDCBAABCDE"。

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

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

給定源程序:

#include

#include

void fun (char *s, char *t)

{

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

int i;

sl = strlen(s);

for (i=0; i

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

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

for (i=0; i

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

t[2*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);

}

解題思路:

第一處:變量sl沒有定義。

第二處:在C語言中,字符串開始位置從0開始的,所以應(yīng)改為:t[i] = s[sl-i-1];。

***************************************************

函數(shù)fun的功能是: a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在

c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b

的十位和個(gè)位數(shù)依次放在變量c的千位和十位上。

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

注意: 部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

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

{

}

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

 

 

 

 

{ 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);

NONO();

}

 

解題思路:

本題是給出兩個(gè)兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個(gè)新數(shù)。

a十位數(shù)字的方法:a/10

a個(gè)位數(shù)字的方法:a

參考答案:

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

{

*c=(b/10)*1000+(a/10)*100+(b)*10+(a);

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

84套:

函數(shù)fun的功能是:從三個(gè)形參a,bc中找出中間的那個(gè)數(shù),作為函數(shù)值返

回。

例如,當(dāng)a=3, b=5, c=4時(shí),中數(shù)為4。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

int fun(int a, int b, int c)

{

int t;

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

t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___));

return t;

}

main()

{ int a1=3, a2=5, a3=4, r;

r = fun(a1, a2, a3);

printf("\nThe middle number is : %d\n", r);

}

解題思路:

第一處:給三個(gè)數(shù)進(jìn)行比較大小,所以應(yīng)填:a。

第二處:給三個(gè)數(shù)進(jìn)行比較大小,所以應(yīng)填:a。

第三處:給三個(gè)數(shù)進(jìn)行比較大小,所以應(yīng)填:b。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是: 首先將大寫字母轉(zhuǎn)換為對應(yīng)小寫字母;

若小寫字母為au,則將其轉(zhuǎn)換為其后的第5個(gè)字母;若小寫字母為vz, 使其值減

21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母

f; 若形參是字母W,則轉(zhuǎn)換為小寫字母b。

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

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

給定源程序:

#include

#include

char fun(char c)

{ if( c>='A' && c<='Z')

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

C=C+32;

 

 

 

 

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

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

c=c-5;

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

c=c-21;

return c;

}

main()

{ char c1,c2;

printf("\nEnter a letter(A-Z): "); c1=getchar();

if( isupper( c1 ) )

{ c2=fun(c1);

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

}

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

}

解題思路:

第一處:變量c錯(cuò)寫成大寫C了。

第二處:要求轉(zhuǎn)換為其后的第5個(gè)字母,所以應(yīng)改為:c=c+5;

***************************************************

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

例如, 在主函數(shù)中從鍵盤給n輸入20,輸出為:s=534.188884。

注意: 要求n的值大于1但不大于100。

部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

#include

double fun(int n)

{

}

main()

{ int n; double s;

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

s=fun(n);

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

NONO();

}

解題思路:

本題是根據(jù)公式計(jì)算多項(xiàng)式的值。注意變量的取值范圍。

參考答案:

double fun(int n)

{

int i;

double fac=1.0;

double sum=1.0;

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

fac+=sqrt(i);

sum+=fac;

}

return sum;

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

85套:

給定程序的功能是調(diào)用fun函數(shù)建立班級通訊錄。通訊錄中記錄每位學(xué)生的

編號、姓名和電話號碼。班級的人數(shù)和學(xué)生的信息從鍵盤讀入,每個(gè)人的信息作

為一個(gè)數(shù)據(jù)塊寫到名為myfile5.dat的二進(jìn)制文件中。

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

 

 

 

 

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

#include

#define N 5

typedef struct

{ int num;

char name[10];

char tel[10];

}STYPE;

void check();

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

int fun(___1___ *std)

{

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

___2___ *fp; int i;

if((fp=fopen("myfile5.dat","wb"))==NULL)

return(0);

printf("\nOutput data to file !\n");

for(i=0; i

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

fwrite(&std[i], sizeof(STYPE), 1, ___3___);

fclose(fp);

return (1);

}

main()

{ STYPE s[10]={ {1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"},

{1,"ddddd","444444"},{1,"eeeee","555555"}};

int k;

k=fun(s);

if (k==1)

{ printf("Succeed!"); check(); }

else

printf("Fail!");

}

void check()

{ FILE *fp; int i;

STYPE s[10];

if((fp=fopen("myfile5.dat","rb"))==NULL)

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

printf("\nRead file and output to screen :\n");

printf("\n num name tel\n");

for(i=0; i

{ fread(&s[i],sizeof(STYPE),1, fp);

printf("m %s %s\n",s[i].num,s[i].name,s[i].tel);

 

 

 

 

}

fclose(fp);

}

解題思路:

本題是要求把指定的學(xué)生記錄輸出到指定的文件中。程序中共有三處要填上適當(dāng)?shù)膬?nèi)容,

使程序能運(yùn)行出正確的結(jié)果。

第一處:結(jié)構(gòu)定義自變量,因此應(yīng)填寫STYPE

第二處:在所填行的下面一行,使用fopen來創(chuàng)建一個(gè)二進(jìn)制文件,但文件流的變量名fp

已經(jīng)給出,這樣,此處只能填寫FILE。

每三處:fwrite是把變量中的內(nèi)容寫入指定文件中,再根據(jù)fwrite參數(shù)的使用要求,所以

只能填寫文件流變量fp。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是:先將在字符串s中的字符按正序存放

t串中,然后把s中的字符按逆序連接到t串的后面。

例如:當(dāng)s中的字符串為:"ABCDE"時(shí),

t中的字符串應(yīng)為:"ABCDEEDCBA"。

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

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

給定源程序:

#include

#include

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

\TAB 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);

}

解題思路:

第一處:變量sl錯(cuò)寫成了s1。

第二處:新串t的字符串結(jié)束位置不正確,應(yīng)該是兩倍的sl距離。

***************************************************

函數(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)a45,b=12時(shí),調(diào)用該函數(shù)后,c=4152

注意: 部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

 

 

 

 

請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填

入你編寫的若干語句。

給定源程序:

#include

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

NONO();

}

 

解題思路:

本題是給出兩個(gè)兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個(gè)新數(shù)。

a十位數(shù)字的方法:a/10

a個(gè)位數(shù)字的方法:a

參考答案:

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

{

*c=(a/10)*1000+(b/10)*100+(a)*10+(b);

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

86套:

甲乙丙丁四人同時(shí)開始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,

每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函數(shù)fun的功能是根據(jù)形參

提供的值,求出總共聽到多少次鞭炮聲作為函數(shù)值返回。注意,當(dāng)幾個(gè)鞭炮同時(shí)

炸響,只算一次響聲,第一次響聲是在第0秒。

例如,若t1=7t2=5,t3=6t4=4,n=10,則總共可聽到28次鞭炮聲。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

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

#define OK(i, t, n) ((___1___%t==0) && (i/t

int fun(int t1, int t2, int t3, int t4, int n)

{ int count, t , maxt=t1;

if (maxt < t2) maxt = t2;

if (maxt < t3) maxt = t3;

if (maxt < t4) maxt = t4;

count=1; /* count賦初值 */

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

for(t=1; t< maxt*(n-1); ___2___)

{

if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) )

count++;

}

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

return ___3___;

}

main()

{ int t1=7, t2=5, t3=6, t4=4, n=10, r;

r = fun(t1, t2, t3, t4, n);

printf("The sound : %d\n", r);

}

 

 

 

 

解題思路:

第一處:根據(jù)定義的要求,所以應(yīng)填:i。

第二處:for循環(huán)語句的增量,所以應(yīng)填:t++

第三處:返回統(tǒng)計(jì)次數(shù),所以應(yīng)填:count。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是: 根據(jù)輸入的三個(gè)邊長(整型值), 判斷

能否構(gòu)成三角形; 構(gòu)成的是等邊三角形, 還是等腰三角形。若能構(gòu)成等邊三角形

函數(shù)返回3,若能構(gòu)成等腰三角形函數(shù)返回2, 若能構(gòu)成一般三角形函數(shù)返回1,

不能構(gòu)成三角形函數(shù)返回0。

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

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

給定源程序:

#include

#include

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

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

{ if(a+b>c && b+c>a && a+c>b) {

if(a==b && b==c)

return 3;

else if(a==b||b==c||a==c)

return 2;

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

else retrun 1

}

else return 0;

}

main()

{ int a,b,c,shape;

printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c);

printf("\na=%d, b=%d, c=%d\n",a,b,c);

shape =fun(a,b,c);

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

}

解題思路:

第一處:函數(shù)有返回值,不能定義為void,所以應(yīng)改為:int fun(int a,int b,int c)。

第二處:語句后缺少分號。

***************************************************

請編寫函數(shù)fun, 其功能是: 計(jì)算并輸出3n之間(3n)所有素?cái)?shù)的平方根

之和。

例如, 在主函數(shù)中從鍵盤給n輸入100,輸出為: sum=148.874270

注意: 要求n的值大于2但不大于100。

部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

#include

 

 

 

 

double fun(int n)

{

}

main()

{ int n; double sum;

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

sum=fun(n);

printf("\n\nsum=%f\n\n",sum);

NONO();

}

解題思路:

本題是計(jì)算并輸出3n之間(3n)所有素?cái)?shù)的平方根之和。

參考答案:

double fun(int n)

{

int i,j=0;

double s=0;

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

for (j=2; j

if (i%j == 0) break;

if (j == i) s=s+sqrt(i);

}

return s;

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

87套:

函數(shù)fun的功能是:統(tǒng)計(jì)長整數(shù)n的各個(gè)位上出現(xiàn)數(shù)字1、2、3的次數(shù),并通過

外部(全局)變量c1,c2,c3返回主函數(shù)。例如:當(dāng)n=123114350時(shí),結(jié)果應(yīng)該為:

c1=3 c2=1 c3=2

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

int c1,c2,c3;

void fun(long n)

{ c1 = c2 = c3 = 0;

while (n) {

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

switch(___1___)

{

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

case 1: c1++;___2___;

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

case 2: c2++;___3___;

case 3: c3++;

}

n /= 10;

}

}

main()

{ long n=123114350L;

fun(n);

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

printf("n=%ld c1=%d c2=%d c3=%d\n",n,c1,c2,c3);

}

解題思路:

第一處:取個(gè)位數(shù)上的數(shù),所以n就可以得到個(gè)位數(shù)。

第二處:switch條件判斷中,滿足條件做好后,必須使用break語句跳出選擇體,所以應(yīng)填:

break

 

 

 

 

第三處:同第二處。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是: 統(tǒng)計(jì)一個(gè)無符號整數(shù)中各位數(shù)字值為

零的個(gè)數(shù), 通過形參傳回主函數(shù);并把該整數(shù)中各位上最大的數(shù)字值作為函數(shù)值

返回。例如, 若輸入無符號整數(shù)30800, 則數(shù)字值為零的個(gè)數(shù)為3, 各位上數(shù)字值

最大的是8

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

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

給定源程序:

#include

int fun(unsigned n, int *zero)

{ int count=0,max=0,t;

do

{ t=n;

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

if(t=0)

count++;

if(max

n=n/10;

}while(n);

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

zero=count;

return max;

}

main()

{ unsigned n; int zero,max;

printf("\nInput n(unsigned): "); scanf("%d",&n);

max = fun( n,&zero );

printf("\nThe result: max=%d zero=%d\n",max,zero);

}

解題思路:

第一處:條件相等符號為==

第二處:由于zero是一個(gè)指針型變量,所以給它進(jìn)行賦值時(shí)應(yīng)帶指針,因此應(yīng)改為:

*zero=count;。

***************************************************

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

    1        1             1

S = 1 + ── + ─── + + ─────

       1*2      1*2*3        1*2*3*…50

例如, 在主函數(shù)中從鍵盤給n輸入50,輸出為:s=1.718282

注意: 要求n的值大于1但不大于100。

部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

double fun(int n)

 

 

 

 

{

}

main()

{ int n; double s;

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

s=fun(n);

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

NONO();

}

解題思路:

本題是根據(jù)公式計(jì)算多項(xiàng)式的值。注意變量的取值范圍。

參考答案:

double fun(int n)

{

double s=0, t=1;

int i ;

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

t *= i;

s += 1./t;

}

return s;

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

88套:

函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a

指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把

a數(shù)組元素中的次小值放在a[3]中;其余以此類推。例如:a所指數(shù)組中的數(shù)據(jù)

最初排列為:14、2、3、9、6、5、87,則按規(guī)則移動(dòng)后,數(shù)據(jù)排列為:

9、1、8、27、36、45。形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

#define N 9

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

void fun(int ___1___, int n)

{ int i, j, max, min, px, pn, t;

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

for (i=0; i

{ max = min = a[i];

px = pn = i;

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

for (j=___3___; j

{ if (max < a[j])

{ max = a[j]; px = j; }

if (min > a[j])

{ min = a[j]; pn = j; }

}

if (px != i)

{ t = a[i]; a[i] = max; a[px] = t;

if (pn == i) pn= px;

}

if (pn != i+1)

{ t = a[i+1]; a[i+1] = min; a[pn] = t; }

}

}

main()

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

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

for (i=0; i 

 

 

 

printf("\n");

fun(b, N);

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

for (i=0; iprintf("\n");

}

解題思路:

第一處:形參a應(yīng)定義指針整型變量,所以應(yīng)填:*a

第二處:外for循環(huán)每次增量應(yīng)該加2。

第三處:內(nèi)for循環(huán)的初始值應(yīng)為:i+1。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2

開始的偶數(shù),然后再按順序?qū)γ课鍌(gè)元素求一個(gè)平均值,并將這些值依次存放在

w所指的數(shù)組中。若s所指數(shù)組中元素的個(gè)數(shù)不是5的倍數(shù),多余部分忽略不計(jì)。

例如,s所指數(shù)組有14個(gè)元素,則只對前10個(gè)元素進(jìn)行處理,不對最后的4個(gè)

元素求平均值。

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

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

給定源程序:

#include

#define SIZE 20

fun(double *s, double *w)

{ int k,i; double sum;

for(k=2,i=0;i

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

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

sun=0.0;

for(k=0,i=0;i

{ sum+=s[i];

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

if(i+1%5==0)

{ w[k]=sum/5; sum=0; k++; }

}

return k;

}

main( )

{ double a[SIZE],b[SIZE/5];

int i, k;

k = fun(a,b);

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

for(i=0; i

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

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

}

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

for(i=0; i6.2f ",b[i]);

printf("\n\n");

 

 

 

 

}

解題思路:

第一處:變量名書寫錯(cuò)誤,應(yīng)為sum。

第二處:由于%的優(yōu)先級比+優(yōu)先,所以必須加上括號,因此改為:if((i+1)%5==0)。

***************************************************

學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組

s,請編寫函數(shù)fun,它的功能是:把低于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,

低于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

注意: 部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

#define N 8

typedef struct

{ char num[10];

double s;

} STREC;

double fun( STREC *a, STREC *b, int *n )

{

}

main()

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

{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};

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

int i,j,n; double ave;

ave=fun( s,h,&n );

printf("The %d student data which is lower than %7.3f:\n",n,ave);

for(i=0;i

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

printf("\n");

out = fopen("c:\\test\\out.dat","w") ;

fprintf(out, "%d\n%7.3f\n", n, ave);

for(i=0;i

for(j=i+1;j

if(h[i].s>h[j].s) {t=h[i] ;h[i]=h[j]; h[j]=t;}

for(i=0;i

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

fclose(out);

}

解題思路:

本題是利用循環(huán)計(jì)算出記錄結(jié)構(gòu)中學(xué)生成績的平均值,再把低于平均值的記錄存放到b所指

的數(shù)組中。具體操作請看答案程序中的說明。

參考答案:

#include

#define N 8

typedef struct

 

 

 

 

{ char num[10];

double s;

} STREC;

double fun( STREC *a, STREC *b, int *n )

{

int i ;

double ave = 0.0 ;

*n = 0 ;

for(i = 0 ; i < N ; i++) ave = ave + a[i].s ;

ave /= N ; /* 計(jì)算平均值 */

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

if(a[i].s < ave) { /* 把低于平均值的記錄存放到b所指的數(shù)組中 */

b[*n]=a[i] ;

(*n)++; /* 人數(shù)加1 */

}

return ave ; /* 返回平均值 */

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

89套:

給定程序中,函數(shù)fun的功能是:求出形參ss所指字符串?dāng)?shù)組中最長字符串的

長度,其余字符串左邊用字符*補(bǔ)齊,使其與最長的字符串等長。字符串?dāng)?shù)組中共

M個(gè)字符串,且串長。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

 

 

 

 

#include

#define M 5

#define N 20

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

{ int i, j, k=0, n, m, len;

for(i=0; i

{ len=strlen(ss[i]);

if(i==0) n=len;

if(len>n) {

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

n=len; ___1___=i;

}

}

for(i=0; i

if (i!=k)

{ m=n;

len=strlen(ss[i]);

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

for(j=___2___; j>=0; j--)

ss[i][m--]=ss[i][j];

for(j=0; j

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

___3___='*';

}

}

main()

{ char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

int i;

printf("\nThe original strings are :\n");

for(i=0; i

printf("\n");

fun(ss);

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

for(i=0; i

}

解題思路:

第一處:使用變量k來保存第幾個(gè)字符串是最長的字符串,所以應(yīng)填:k。

第二處:利用for循環(huán)把原字符串右移至最右邊存放,字符串的長為len,所以應(yīng)填:len。

第三處:左邊用字符*補(bǔ)齊,所以應(yīng)填:ss[i][j]。

***************************************************

給定程序MODI1.C中函數(shù)fun的功能是: 計(jì)算整數(shù)n的階乘。請改正程序中的錯(cuò)

誤或在下劃線處填上適當(dāng)?shù)膬?nèi)容并把下劃線刪除,使它能計(jì)算出正確的結(jié)果。

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

給定源程序:

#include

double fun(int n)

{

 

 

 

 

double result=1.0;

while (n>1 && n<170)

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

result*=--n;

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

return _____;

}

main()

{

int n;

printf("Enter an integer: ");

scanf("%d",&n);

printf("\n\n%d!=%lg\n\n",n,fun(n));

}

解題思路:

第一處:--n是先減1,n--是后減1。本題應(yīng)該先乘以n,再減1,才正確。

第二處:返回計(jì)算結(jié)果,所以應(yīng)填:result。

***************************************************

編寫函數(shù)fun,函數(shù)的功能是: s所指的字符串中刪除給定的字符。同一字

母的大、小寫按不同字符處理。

若程序執(zhí)行時(shí)輸入字符串為: turbo c and borland c++

從鍵盤上輸入字符:n, 則輸出后變?yōu)?/SPAN>: turbo c ad borlad c++

如果輸入的字符在字符串中不存在, 則字符串照原樣輸出。

注意: 部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

#include

int fun(char s[],char c)

{

}

main()

{

static char str[]="turbo c and borland c++";

char ch;

printf("原始字符串:%s\n", str);

printf("輸入一個(gè)字符:");

scanf("%c",&ch);

fun(str,ch);

printf("str[]=%s\n",str);

NONO();

}

 

解題思路:

本題是考察考生怎樣在字符串中刪除指定的字符,結(jié)果仍存放在原字符串中。給出的程序

是引用字符串指針pwhile循環(huán)語句以及if條件判斷語句進(jìn)行處理的,新字符串的位置是由i

來控制的,循環(huán)結(jié)束后,再給新字符串置字符串結(jié)束符,最后產(chǎn)生的新字符串形參s返回到主程

序中。

參考答案:

int fun(char s[],char c)

{

char *p = s ;

int i = 0 ;

while(*p) {

if(*p != c) s[i++] = *p ;

p++ ;

}

s[i] = 0 ;

}

 

※※※※※※※※※※※※※※※※※※※※※※※※※

90套:

函數(shù)fun的功能是:統(tǒng)計(jì)所有小于等于n(n>2)的素?cái)?shù)的個(gè)數(shù),素?cái)?shù)的個(gè)數(shù)作

為函數(shù)值返回。

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

果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

int fun(int n)

{ int i,j, count=0;

printf("\nThe prime number between 3 to %d\n", n);

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

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

for (___1___; j

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

if (___2___%j == 0)

break;

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

if (___3___>=i)

{ count++; printf( count? "]":"\n]",i); }

}

return count;

}

main()

{ int n=20, r;

r = fun(n);

printf("\nThe number of prime is : %d\n", r);

}

解題思路:

第一處:素?cái)?shù)的條件是除1和其本身外不能整除該數(shù),所以應(yīng)填:2。

第二處:判斷i是否素?cái)?shù),所以應(yīng)填:i。

第三處:如果內(nèi)循環(huán)for中所有數(shù)都不能整除i,那么i是素?cái)?shù)且j大于等于i,所以應(yīng)填:j。

***************************************************

數(shù)列中,第一項(xiàng)值為3, 后一項(xiàng)都比前一項(xiàng)的值增5;給定程序MODI1.C中函數(shù)

fun的功能是: 計(jì)算前n(4項(xiàng)的累加和;每累加一次把被4除后余2的當(dāng)前累

加值放入數(shù)組中, 符合此條件的累加值的個(gè)數(shù)作為函數(shù)值返回主函數(shù)。

例如, 當(dāng)n的值為20時(shí),該數(shù)列為3,8,13,18,23,28,……,93,98。符合此條件

的累加值應(yīng)為42,126,366,570,1010。

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

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

給定源程序:

#include

#define N 20

int fun(int n,int *a)

{ int i,j,k,sum;

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

sum=j==0;

for(k=3,i=0;i

{ sum=sum+k;

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

if(sum%4=2)

a[j++]=sum;

}

return j;

}

main()

{ int a[N],d,n,i;

printf("\nEnter n (4

d=fun(n,a);

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

for(i=0; i

}

解題思路:

第一處:連續(xù)賦初值為0,中間使用條件相等符號了,所以應(yīng)改為:sum=j=0;。

第二處:條件相等符號為==

***************************************************

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

例如, 在主函數(shù)中從鍵盤給n輸入8, 輸出為: s=0.662872。

注意: 要求n的值大于1但不大于100

部分源程序在文件PROG1.C中。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入

你編寫的若干語句。

給定源程序:

#include

double fun(int n)

{

}

main()

{ int n; double s;

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

s=fun(n);

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

NONO();

}

 

解題思路:

本題是根據(jù)公式計(jì)算多項(xiàng)式的值。

參考答案:

double fun(int n)

{

int i;

double sum=0.0;

if (n>1 && n<=100) {

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

sum+=1.0/(2*i-1)-1.0/(2*i);

}

return sum;

}