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

江蘇省高校計(jì)算機(jī)等級(jí)考試命題研究院 江蘇省高校計(jì)算機(jī)等級(jí)考試輔導(dǎo)
全國(guó)計(jì)算機(jī)二級(jí)C題庫(kù)第91--100套

 

 

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

 

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

 

91套:

函數(shù)fun的功能是:計(jì)算

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

果。

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

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

給定源程序:

#include

#include

double fun(double x)

{ double f, t; int n;

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

f = 1.0+___1___;

t = x;

n = 1;

do {

n++;

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

t *= x/___2___;

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

f += ___3___;

} while (fabs(t) >= 1e-6);

return f;

}

main()

{ double x, y;

x=2.5;

y = fun(x);

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

printf("x=%-12.6f y=%-12.6f \n", x, y);

}

解題思路:

第一處:根據(jù)公式可知,此處應(yīng)填:x。

第二處:根據(jù)公式可知,此處應(yīng)該除以n,所以應(yīng)填:n。

第三處:計(jì)算的結(jié)果進(jìn)行累加并賦值給變量f,所以應(yīng)填:t。

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

給定程序MODI1.C中函數(shù)fun的功能是: 計(jì)算n5次方的值(規(guī)定n的值大于2、

小于8),通過(guò)形參指針傳回主函數(shù);并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和

作為函數(shù)值返回。

例如,75次方是16807, 其低3位數(shù)的和值是15。

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

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

給定源程序:

#include

#include

int fun( int n ,int *value )

{ int d,s,i;

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

d=0; s=0;

for(i=1; i<=5; i++) d=d*n;

*value=d;

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

{ s=s+d;

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

d=d\10;

}

return s;

}

main()

{ int n, sum, v;

do

{ printf("\nEnter n( 2

while(n<=2||n>=8);

sum=fun( n,&v );

printf("\n\nThe result:\n value=%d sum=%d\n\n",v,sum);

}

解題思路:

第一處:變量d的初始值應(yīng)為1。

第二處:整除的符號(hào)是/。

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

請(qǐng)編寫函數(shù)fun, 其功能是: 計(jì)算并輸出給定數(shù)組(長(zhǎng)度為9)中每相鄰兩個(gè)元

素之平均值的平方根之和。

例如, 給定數(shù)組中的9個(gè)元素依次為12.034.0、4.0、23.0、34.0、45.0、

18.03.0、11.0, 輸出應(yīng)為: s=35.951014

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

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

你編寫的若干語(yǔ)句。

 

 

 

 

給定源程序:

#include

#include

double fun(double x[9])

{

}

main()

{ double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0};

int i;

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

for(i=0;i<9;i++)printf("%6.1f",a[i]); printf("\n\n");

s=fun(a);

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

NONO();

}

 

解題思路:

本題是計(jì)算并輸出給定數(shù)組中每相鄰兩個(gè)元素之平均值的平方根之和。

參考答案:

double fun(double x[9])

{

int i ;

double avg=0.0,sum=0.0;

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

avg=(x[i]+x[i+1])/2;

sum+=sqrt(avg);

}

return sum;

}

 

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

92套:

函數(shù)fun的功能是:計(jì)算

的前n項(xiàng)。若x=2.5,函數(shù)值為:12.182340。

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

果。

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

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

給定源程序:

#include

double fun(double x, int n)

{ double f, t; int i;

f = 1.0;

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

t = ___1___;

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

for (i=___2___; i

{

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

t *= x/___3___;

f += t;

}

return f;

}

main()

{ double x, y;

x=2.5;

y = fun(x, 12);

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

printf("x=%-12.6f y=%-12.6f\n", x, y);

}

解題思路:

第一處:t是處理公式中每一項(xiàng)中間項(xiàng),所以應(yīng)填:1。

第二處:根據(jù)公式可知,for循環(huán)變量的初始值應(yīng)從1開始。

第三處:每做一次循環(huán)均要除以變量i的值,所以應(yīng)填:i。

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

給定程序MODI1.C中函數(shù)fun的功能是: 找出100n(不大于1000)之間三位數(shù)

字相等的所有整數(shù), 把這些整數(shù)放在s所指數(shù)組中, 個(gè)數(shù)作為函數(shù)值返回。

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

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

給定源程序:

#include

#define N 100

int fun(int *s, int n)

{ int i,j,k,a,b,c;

j=0;

for(i=100; i

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

k=n;

a=k; k/=10;

b=k; k/=10;

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

c=k

if( a==b && a==c ) s[j++]=i;

}

return j;

}

main()

{ int a[N], n, num=0, i;

do

{ printf("\nEnter n( <=1000 ) : "); scanf("%d",&n); }

while(n > 1000);

num = fun( a,n );

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

for(i=0; i

printf("\n\n");

}

解題思路:

第一處:k應(yīng)該取循環(huán)變量i的值,所以應(yīng)改為:k=i;。

第二處:語(yǔ)句后缺少分號(hào)。

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

請(qǐng)編寫函數(shù)fun, 其功能是: 計(jì)算并輸出給定10個(gè)數(shù)的方差:

例如,給定的10個(gè)數(shù)為95.089.0、76.0、65.0、88.0、72.0、85.081.0、

90.056.0,輸出為s=11.730729。

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

#include

double fun(double x[10])

{

}

main()

{ double s, x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};

int i;

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

for(i=0;i<10;i++)printf("%6.1f",x[i]); printf("\n\n");

s=fun(x);

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

NONO();

}

 

解題思路:

本題是根據(jù)公式進(jìn)行計(jì)算。

參考答案:

double fun(double x[10])

{

int i;

double avg=0.0, sum=0.0, abs=0.0, fc;

for (i=0;i<10;i++) sum+=x[i];

avg=sum/10; /* 計(jì)算平均值 */

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

abs+=(x[i]-avg)*(x[i]-avg);

fc=sqrt(abs/10) ;

return fc;

}

 

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

93套:

給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,main函數(shù)中將多次調(diào)用fun

函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表

縮短。

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

果。

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

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

給定源程序:

#include

#include

#define N 8

typedef struct list

{ int data;

struct list *next;

} SLIST;

void fun( SLIST *p)

{ SLIST *t, *s;

t=p->next; s=p;

while(t->next != NULL)

{ s=t;

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

t=t->___1___;

}

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

printf(" %d ",___2___);

s->next=NULL;

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

free(___3___);

}

SLIST *creatlist(int *a)

{ SLIST *h,*p,*q; int i;

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

for(i=0; i

{ q=(SLIST *)malloc(sizeof(SLIST));

q->data=a[i]; p->next=q; p=q;

}

p->next=0;

return h;

}

void outlist(SLIST *h)

{ SLIST *p;

p=h->next;

if (p==NULL) printf("\nThe list is NULL!\n");

else

{ printf("\nHead");

do { printf("->%d",p->data); p=p->next; } while(p!=NULL);

printf("->End\n");

}

}

main()

{ SLIST *head;

int a[N]={11,12,15,18,19,22,25,29};

head=creatlist(a);

printf("\nOutput from head:\n"); outlist(head);

printf("\nOutput from tail: \n");

while (head->next != NULL){

fun(head);

printf("\n\n");

printf("\nOutput from head again :\n"); outlist(head);

}

}

解題思路:

本題是對(duì)已經(jīng)建立的鏈表,通過(guò)調(diào)用一次函數(shù)就輸出鏈表尾部的數(shù)據(jù)。程序中共有三處要

填上適當(dāng)?shù)膬?nèi)容,使程序能運(yùn)行出正確的結(jié)果。

第一處:由于本題要求輸出鏈表尾部的數(shù)據(jù),函數(shù)是利用while循環(huán)語(yǔ)句找出鏈表尾部的指

針并存入臨時(shí)變量s中,那么每循環(huán)一次就要判斷鏈表是否已結(jié)束位置,如果是,則退出循環(huán),

進(jìn)行輸出,由于是通過(guò)t指針變量進(jìn)行操作的,因此,都要取tnext指針重新賦給t來(lái)實(shí)現(xiàn),所

以本處應(yīng)填next。

第二處:輸出最后一個(gè)結(jié)點(diǎn)的數(shù)據(jù),所以應(yīng)填t->data(*t).data。

第三處:輸出出最后一個(gè)結(jié)點(diǎn)數(shù)據(jù)后,并把此結(jié)點(diǎn)刪除了,程序要求釋放內(nèi)存,所以應(yīng)填t。

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

給定程序MODI1.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改

變字符串中的內(nèi)容。

例如,若字符串為abcd,則應(yīng)輸出:dcba。

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

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

給定源程序:

#include

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

fun (char a)

{ if ( *a )

{ fun(a+1) ;

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

printf("%c" *a) ;

}

}

main( )

{ char s[10]="abcd";

printf("處理前字符串=%s\n處理后字符串=", s);

fun(s); printf("\n") ;

}

解題思路:

第一處:形參a應(yīng)定義為字符串指針。

第二處:語(yǔ)句中缺少逗號(hào)。

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

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言

提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,

則返回第一個(gè)字符串。

例如,輸入beijing shanghai 為回車鍵),

函數(shù)將返回shanghai。

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

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

{

}

main( )

{ char a[20],b[20];

 printf("Input 1th string:") ;

gets( a);

printf("Input 2th string:") ;

gets( b);

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

NONO ();

}

 

解題思路:

本題是比較兩個(gè)字符串的長(zhǎng)度并按要求返回字符串。

我們給出的程序是使用for循環(huán)來(lái)判斷兩個(gè)字符串中哪一個(gè)比較長(zhǎng)或相等,循環(huán)的終止值為

兩個(gè)字符串中是否字符串結(jié)束符,如果有,則退出循環(huán)體。接下來(lái)再判斷兩個(gè)字符串是否同時(shí)

出現(xiàn)結(jié)束符,則返回第一個(gè)字符串s,如果不沒有同時(shí)出現(xiàn),則判斷哪一個(gè)字符串先有結(jié)束符,

則按要求返回指定的字符串。

參考答案:

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

{

int i;

char *p=s, *q=t;

for(i=0;*p && *q; i++) {

p++; q++;

}

if(*p == 0 && *q == 0) return s ;

if(*p) return s ;

else return t ;

}

 

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

94套:

函數(shù)fun的功能是:計(jì)算

的前n項(xiàng)之和。若x=2.5n=15時(shí),函數(shù)值為:1.917914

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

果。

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

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

給定源程序:

#include

#include

double fun(double x, int n)

{ double f, t; int i;

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

f = ___1___;

t = -1;

for (i=1; i

{

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

t *= (___2___)*x/i;

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

f += ___3___;

}

return f;

}

main()

{ double x, y;

x=2.5;

y = fun(x, 15);

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

printf("x=%-12.6f y=%-12.6f\n", x, y);

}

解題思路:

第一處:根據(jù)公式可知,變量f的初值為1。

第二處:根據(jù)公式可知,此處是正負(fù)號(hào)的變換,所以應(yīng)填:-1

第三處:計(jì)算的結(jié)果進(jìn)行累加并賦值給變量f,所以應(yīng)填:t。

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

給定程序MODI1.C中函數(shù)fun的功能是: 3個(gè)紅球,5個(gè)白球, 6個(gè)黑球中任意

取出8個(gè)作為一組,進(jìn)行輸出。在每組中,可以沒有黑球,但必須要有紅球和白球。

組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是15。程序中i的值代表紅球數(shù), j

值代表白球數(shù),k的值代表黑球數(shù)。

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

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

給定源程序:

#include

int fun()

{ int i,j,k,sum=0;

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

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

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

{ for(j=1; j<=5; j++)

{ k=8-i-j;

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

if(K>=0 && K<=6)

{ sum=sum+1;

printf("red:M white:M black:M\n",i,j,k);

}

}

}

return sum;

}

main()

{ int sum;

sum=fun();

printf("sum =M\n\n",sum);

}

解題思路:

第一處:外for循環(huán)的初始變量i的值應(yīng)為1

第二處:變量k寫成了大寫K了。

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

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

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

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

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

double fun(int n)

{

}

main()

{ int n; double s;

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

s=fun(n);

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

NONO();

}

 

解題思路:

本題是根據(jù)給定的公式計(jì)算結(jié)果。使用for循環(huán)語(yǔ)句依次求出每一項(xiàng)的值,分別進(jìn)行累加并

把結(jié)果存入變量s中,最后把s作為函數(shù)值返回。

參考答案:

double fun(int n)

{

double s=1 ;

long t=1;

int i;

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

t=t*i; /* 計(jì)算階乘 */

s+=1./t; /* 計(jì)算每項(xiàng)的值并累加至變量s */

}

return s; /* 返回多項(xiàng)式的值 */

}

 

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

95套:

給定程序中,函數(shù)fun的功能是:計(jì)算N×N矩陣的主對(duì)角線元素和反向?qū)蔷

元素之和,并作為函數(shù)值返回。注意:要求先累加主對(duì)角線元素中的值,然后累

加反向?qū)蔷元素中的值。例如,若N=3,有下列矩陣:

1 2 3

4 5 6

7 8 9

fun函數(shù)首先累加1、5、9,然后累加3、57,函數(shù)的返回值為30。

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

果。

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

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

給定源程序:

#include

#define N 4

fun(int t[][N], int n)

{ int i, sum;

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

___1___;

for(i=0; i

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

sum+=___2___ ;

for(i=0; i

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

sum+= t[i][n-i-___3___] ;

return sum;

}

main()

{ int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;

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

for(i=0; i

{ for(j=0; j

printf("\n");

}

printf("The result is: %d",fun(t,N));

}

解題思路:

第一處:變量sum是用來(lái)存放主對(duì)角線元素和反向?qū)蔷元素之和,要對(duì)其進(jìn)行初始化,所

以應(yīng)填:sum=0。

第二處:對(duì)主對(duì)角線元素值累加,所以應(yīng)填:t[i][i]。

第三處:對(duì)反向?qū)蔷元素值累加,所以應(yīng)填:t[i][n-i-1]

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

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

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

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

給定源程序:

#include

#include

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(r)*funx(n)<0) m=r;

\TAB else n=r;

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

}

解題思路:

第一處:變量r應(yīng)該定義為實(shí)數(shù)型double或浮點(diǎn)型float變量。

第二處:while必須先滿足條件,才做循環(huán)體的內(nèi)容,所以應(yīng)改為:while(fabs(m-n)>0.001)

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

假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是: 除了

字符串前導(dǎo)和尾部的*號(hào)之外,將串中其它*號(hào)全部刪除。形參h已指向字符串中第

一個(gè)字母,形參p已指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)言

提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G********,刪除后,字符串中的內(nèi)

容應(yīng)當(dāng)是:****ABCDEFG********。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串

函數(shù)。

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

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

NONO();

}

 

解題思路:

本題是考察字符串的操作。

1. r指針左邊的字符仍存放字符串a首地址開始的位置上。

2. r指針和p指針中間的字符進(jìn)行判斷,其字符是否是'*',如果不是'*',則把這些字符

放到第1步操作字符串a的后面。

3. p指針右邊的字符放到第2步操作字符串a的后面。

4. 最后給字符串a加上結(jié)束符。

參考答案:

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

{

int j=0;

char *q=a;

while(*q && q < h) a[j++] = *q++ ;

while(*h && *p && h < p) {

if(*h != '*') a[j++] = *h ;

h++;

}

while(*p) a[j++] = *p++ ;

a[j] = 0 ;

}

 

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

96套:

給定程序中,函數(shù)fun的功能是:N×N矩陣,將矩陣的外圍元素順時(shí)針旋轉(zhuǎn)。

操作順序是:首先將第一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,

最后一行成為第一列,最后一列成為最后一行,臨時(shí)數(shù)組中的元素成為最后一列。

例如,若N=3,有下列矩陣:

1 2 3

4 5 6

7 8 9

計(jì)算結(jié)果為

7 4 1

8 5 2

9 6 3

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

果。

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

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

給定源程序:

#include

#define N 4

void fun(int (*t)[N])

{ int j ,r[N];

for(j=0; j

for(j=0; j

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

t[0][N-j-1]=t[j][___1___ ];

for(j=0; j

t[j][0]=t[N-1][j];

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

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

t[N-1][N-1-j]=t[j][N-1];

for(j=N-1; j>=0; j--)

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

t[j][N-1]=r[___3___];

}

main()

{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;

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

for(i=0; i

{ for(j=0; jprintf("\n");

}

fun(t);

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

for(i=0; i

{ for(j=0; jprintf("\n");

}

}

解題思路:

第一處:把第1列上的數(shù)存放到第1行上,所以應(yīng)填:0。

第二處:for循環(huán)的增量值,由于循環(huán)是從大到小遞減,所以應(yīng)填:j--。

第三處:把臨時(shí)數(shù)組中的元素成為最后一列,所以應(yīng)填:j。

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

給定程序MODI1.C中函數(shù) fun 的功能是:計(jì)算

S = f(-n) + f(-n+1) +…+ f(0) + f(1) + f(2) +…+ f(n)

的值。例如,當(dāng)n5時(shí),函數(shù)值應(yīng)為:10.407143。f(x)函數(shù)定義如下:

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

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

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

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

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

給定源程序:

#include

#include

/************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 n )

{ int i; double s=0.0, y;

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

{y=f(1.0*i); s += y;}

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

return s

}

main ( )

{

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

}

解題思路:

第一處:由于返回值是實(shí)數(shù)型值,所以在函數(shù)名前加上double

第二處:語(yǔ)句后缺少分號(hào)。

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

編寫函數(shù)fun,它的功能是計(jì)算:

s作為函數(shù)值返回。

C語(yǔ)言中可調(diào)用log ( n )函數(shù)求ln (n)。log函數(shù)的引用說(shuō)明是:

double log(double x)。

例如,若m的值為: 20fun函數(shù)值為: 6.506583。

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

#include

double fun( int m )

{

}

main()

{

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

NONO();

}

 

解題思路:

本題是根據(jù)給定的公式計(jì)算結(jié)果。使用for循環(huán)語(yǔ)句依次求出每一項(xiàng)的值,分別進(jìn)行累加并

把結(jié)果存入變量s中,循環(huán)結(jié)束后再對(duì)s求平方根,結(jié)果仍存入s中,最后返回s

參考答案:

double fun( int m )

{

double s = 0.0 ;

int i ;

for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ;

s = sqrt(s) ;

return s ;

}

 

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

97套:

函數(shù)fun的功能是:逆置數(shù)組元素中的值。例如:若a所指數(shù)組中的數(shù)據(jù)依次

為:12、3、4、56、78、9,則逆置后依次為:98、7、6、5、4、3、2

1。形參n給出數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

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

果。

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

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

給定源程序:

#include

void fun(int a[], int n)

{ int i,t;

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

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

{

t=a[i];

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

a[i] = a[n-1-___2___];

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

___3___ = t;

}

}

main()

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

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

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

printf("M ", b[i]);

printf("\n");

fun(b, 9);

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

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

printf("M ", b[i]);

printf("\n");

}

解題思路:

第一處:利用for循環(huán)語(yǔ)句,對(duì)數(shù)組中的各元素進(jìn)行逆置,所以終止值為n/2。

第二處:進(jìn)行交換數(shù)組中元素的值,由于是依次是首和尾交換,所以應(yīng)填:i。

第三處:使用中間變量t來(lái)交換的,所以應(yīng)填:a[n-i-1]。

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

給定程序MODI1.C中函數(shù)fun的功能是:將一個(gè)由八進(jìn)制數(shù)字字符組成的字符

串轉(zhuǎn)換為與其面值相等的十進(jìn)制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進(jìn)制

數(shù)字字符。

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

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

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

給定源程序:

#include

int fun( char *p )

{ int n;

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

n= *P-'o';

p++;

while( *p!=0 ) {

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

\TAB n=n*8+*P-'o';

\TAB p++;

}

return n;

}

main()

{ char s[6]; int i; int n;

printf("Enter a string (Ocatal digits): "); gets(s);

if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }

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

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

{ printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }

printf("The original string: "); puts(s);

n=fun(s);

printf("\n%s is convered to integer number: %d\n\n",s,n);

}

解題思路:

第一和第二處:*p錯(cuò)寫成*P,'0'錯(cuò)寫成'o'。

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

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

s,請(qǐng)編寫函數(shù)fun,它的功能是:函數(shù)返回指定學(xué)號(hào)的學(xué)生數(shù)據(jù),指定的學(xué)號(hào)在主

函數(shù)中輸入。若沒找到指定學(xué)號(hào),在結(jié)構(gòu)體變量中給學(xué)號(hào)置空串,給成績(jī)置-1,作

為函數(shù)值返回。(用于字符串比較的函數(shù)是strcmp)。

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

#include

#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},

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

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

\TAB \TAB {"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

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

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

}

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

h=fun( s,m );

printf("The data : ");

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

printf("\n");

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

h=fun(s,"GA013");

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

fclose(out);

}

解題思路:

本題是從學(xué)生記錄體中找出給定的學(xué)號(hào)。具體操作請(qǐng)看答案程序中的說(shuō)明。

參考答案:

STREC fun( STREC *a, char *b )

{

STREC c ;

int i ;

c.num[0] = '\0' ; /* 置初始空串 */

c.s = -1 ; /* 置成績(jī)?yōu)?/SPAN>-1 */

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

if(strcmp(a[i].num, b)==0) { /* 判斷學(xué)號(hào)是否相等 */

strcpy(c.num, a[i].num) ; /* 相等,則對(duì)學(xué)號(hào)進(jìn)行賦值 */

c.s=a[i].s; /* 相等,則對(duì)成績(jī)進(jìn)行賦值 */

break ; /* 退出循環(huán)體 */

}

return c ; /* 返回結(jié)構(gòu)體變量 */

}

 

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

98套:

給定程序中,函數(shù)fun的功能是:在帶有頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中

值為ch的結(jié)點(diǎn)。找到后通過(guò)函數(shù)值返回該結(jié)點(diǎn)在鏈表中所處的順序號(hào);若不存在

 值為ch的結(jié)點(diǎn),函數(shù)返回0值。

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

果。

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

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

給定源程序:

#include

#include

#define N 8

typedef struct list

{ int data;

struct list *next;

} SLIST;

SLIST *creatlist(char *);

void outlist(SLIST *);

int fun( SLIST *h, char ch)

{ SLIST *p; int n=0;

p=h->next;

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

while(p!=___1___)

{ n++;

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

if (p->data==ch) return ___2___;

else p=p->next;

}

return 0;

}

main()

{ SLIST *head; int k; char ch;

char a[N]={'m','p','g','a','w','x','r','d'};

head=creatlist(a);

outlist(head);

printf("Enter a letter:");

scanf("%c",&ch);

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

k=fun(___3___);

if (k==0) printf("\nNot found!\n");

else printf("The sequence number is : %d\n",k);

}

SLIST *creatlist(char *a)

{ SLIST *h,*p,*q; int i;

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

for(i=0; i

{ q=(SLIST *)malloc(sizeof(SLIST));

q->data=a[i]; p->next=q; p=q;

}

p->next=0;

 

 

 

 

return h;

}

void outlist(SLIST *h)

{ SLIST *p;

p=h->next;

if (p==NULL) printf("\nThe list is NULL!\n");

else

{ printf("\nHead");

do

{ printf("->%c",p->data); p=p->next; }

while(p!=NULL);

printf("->End\n");

}

}

解題思路:

本題是在給定的鏈表中要求找出指定的值。

第一處:判斷p是否結(jié)束,所以應(yīng)填:NULL。

第二處:在函數(shù)fun中,使用n來(lái)計(jì)算結(jié)點(diǎn)的位置,當(dāng)找到ch值,則返回結(jié)點(diǎn)的位置n,所以

應(yīng)填:return n。

第三處:函數(shù)調(diào)用,在主函數(shù)中已經(jīng)給出了headch,所以應(yīng)填:head,ch。

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

給定程序MODI1.C中函數(shù)fun的功能是:刪除p所指字符串中的所有空白字符(

括制表符、回車符及換行符)。

輸入字符串時(shí)用'#'結(jié)束輸入。

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

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

給定源程序:

#include

#include

#include

fun ( char *p)

{ int i,t; char c[80];

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

For (i = 0,t = 0; p[i] ; i++)

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

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

c[t]="\0";

strcpy(p,c);

}

main( )

{ char c,s[80];

int i=0;

printf("Input a string:");

c=getchar();

while(c!='#')

{ s[i]=c;i++;c=getchar(); }

s[i]='\0';

 

 

 

 

fun(s);

puts(s);

}

解題思路:

第一處:保留字for錯(cuò)寫成For。

第二處:置字符串結(jié)束符錯(cuò)誤,應(yīng)該是:'\0'。

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

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:將ss所指字符串中所有下標(biāo)為奇數(shù)位置上

的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。

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

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

#include

void fun ( char *ss )

{

}

main( )

{ char tt[81] ;

printf( "\nPlease enter an string within 80 characters:\n" ); gets( tt );

printf( "\n\nAfter changing, the string\n \"%s\"", tt );

fun( tt );

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

NONO ( );

}

 

解題思路:

本題是考察考生對(duì)字母按要求進(jìn)行轉(zhuǎn)換。其中大小字母的ASCII值相差32

參考答案:

void fun ( char *ss )

{

int i ;

for(i = 1 ; i < strlen(*ss) ; i+=2) {

if(ss[i] >= 'a' && ss[i] <= 'z') ss[i] -= 32 ;

}

}

 

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

99套:

函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值和后半部分元

素中的值對(duì)換。形參n中存放數(shù)組中數(shù)據(jù)的個(gè)數(shù),若n為奇數(shù),則中間的元素不動(dòng)。

例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、56、7、8、9,則調(diào)換后

為:6、78、95、1、2、34。

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

果。

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

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

給定源程序:

#include

#define N 9

void fun(int a[], int n)

{ int i, t, p;

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

p = (n%2==0)?n/2:n/2+___1___;

for (i=0; i

{

t=a[i];

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

a[i] = a[p+___2___];

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

___3___ = t;

}

}

main()

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

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

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

fun(b, N);

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

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

}

解題思路:

第一處:如果n是奇數(shù),則中間的元素不動(dòng),所以應(yīng)填:1。

第二處:使用for循環(huán)語(yǔ)句來(lái)交換數(shù)組元素的值,所以應(yīng)填:i。

第三處:使用中間變量t來(lái)交換的,所以應(yīng)填:a[p+i]。

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

給定程序MODI1.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)數(shù),最大的放在

a中,最小的放在c中,中間的放在b中。

例如,輸入的數(shù)為:55 12 34

輸出結(jié)果應(yīng)當(dāng)是:a=55.0 , b=34.0 , c=12.0。

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

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

給定源程序:

#include

void fun(float *a,float *b,float *c)

{

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

float *k;

if( *a<*b )

{ k=*a; *a=*b; *b=k; }

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

if( *a>*c )

{ k=*c; *c=*a; *a=k; }

if( *b<*c )

{ k=*b; *b=*c; *c=k; }

}

main()

{ float a,b,c;

printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c);

 printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);

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

printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c);

}

解題思路:

第一處:在函數(shù)fun體中,k是一個(gè)浮點(diǎn)型變量,所以應(yīng)改為:float k;

第二處:三個(gè)數(shù)比較大小,第1個(gè)條件是第1個(gè)比第2個(gè)小,則交換。第3個(gè)條件是第2個(gè)比第

3個(gè)小,則也交換。第2個(gè)條件是應(yīng)該第1和第3個(gè)小,則交換就符合題意了,所以應(yīng)改為:

if(*a<*c)。

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

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

s,請(qǐng)編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,

意:分?jǐn)?shù)最高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

#define N 16

typedef struct

{ char num[10];

int s;

} STREC;

int fun( STREC *a, STREC *b )

{

}

main()

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

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

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

{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};

STREC h[N];

int i,n;FILE *out ;

n=fun( s,h );

printf("The %d highest score :\n",n);

for(i=0;i

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

printf("\n");

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

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

for(i=0;i

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

fclose(out);

}

解題思路:

本題是找出最高成績(jī),再把N名學(xué)生的成績(jī)等于最高成績(jī)的記錄存入b所指的數(shù)組中。具體操作請(qǐng)看答案程序中的說(shuō)明。

參考答案:

int fun( STREC *a, STREC *b )

{

int i, max = a[0].s, n=0;

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

if(max < a[i].s) max = a[i].s ; /* 找出最高成績(jī) */

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

if(max==a[i].s) b[n++] = a[i] ; /* 找相等的最高成績(jī)并存入數(shù)組b */

return n; /* 返回符合條件的人數(shù) */

}

 

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

100套:

給定程序中,函數(shù)fun的功能是:在形參s所指字符串中尋找與參數(shù)c相同的字符,并在其后插入一個(gè)與之相同的字符,若找不到相同的字符則函數(shù)不做任何處理。

例如,s所指字符串為:baacda,c中的字符為:a,

執(zhí)行后s所指字符串為:baaaacdaa。

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

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

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

給定源程序:

#include

void fun(char *s, char c)

{ int i, j, n;

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

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

if(s[i]==c)

{

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

n=___2___ ;

while(s[i+1+n]!='\0') n++;

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

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

s[j+1]=___3___ ;

i=i+1;

}

}

main()

{ char s[80]="baacda", c;

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

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

fun(s,c);

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

}

解題思路:

第一處:在for循環(huán)中終止值要判斷字符串是否結(jié)束符,所以應(yīng)填:'\0'。

第二處:n用于統(tǒng)計(jì)參數(shù)c后還有多少個(gè)字符,要對(duì)其進(jìn)行初始化,所以應(yīng)填:0。

第三處:要求插入相同的字符c,所以應(yīng)填:c。

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

在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)組中, 0結(jié)束輸入并放在最后一個(gè)

元素中。給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算數(shù)組元素中值為正數(shù)的平均

(不包括0)。

例如:數(shù)組中元素中的值依次為:39,-47,21,2,-8,15,0

則程序的運(yùn)行結(jié)果為:19.250000。

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

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

給定源程序:

#include

double fun ( int x[])

{

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

int sum = 0.0;

int c=0, i=0;

while (x[i] != 0)

{ if (x[i] > 0) {

sum += x[i]; c++; }

i++;

}

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

 sum \= c;

return sum;

}

main( )

{ int x[1000]; int i=0;

printf( "\nPlease enter some data (end with 0): " );

do

{ scanf("%d", &x[i]); }

while (x[i++] != 0);

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

}

解題思路:

第一處:由于sum是存放實(shí)數(shù)值,因此不能定義為整型,所以應(yīng)改為double sum=0.0;float

sum=0.0;。

第二處:除的運(yùn)算符是“/”。

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

編寫函數(shù)fun,函數(shù)的功能是:根據(jù)以下公式計(jì)算s,計(jì)算結(jié)果作為函數(shù)值返

回;n通過(guò)形參傳入。

   1       1              1

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

   1+2    1+2+3         1+2+3+...+n

例如:若n的值為11時(shí),函數(shù)的值為:1.833333

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

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

你編寫的若干語(yǔ)句。

給定源程序:

#include

float fun(int n)

{

}

main()

{ int n; float s;

printf("\nPlease enter N:"); scanf("%d", &n);

s = fun(n);

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

NONO();

}

 

解題思路:

本題是根據(jù)給定的公式計(jì)算結(jié)果。使用for循環(huán)語(yǔ)句依次求出每一項(xiàng)的值,分別進(jìn)行累加并

把結(jié)果存入變量s中,最后返回s

參考答案:

float fun(int n)

{

int i,j,t;

float s=0;

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

t=0;

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

s=s+1./t;

}

return s;

}