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

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

 

 

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

 

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

71套:

給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有數(shù)字字符順序

前移,其他字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。

例如,s所指字符串為:asd123fgh5##43df

處理后新字符串為:123543asdfgh##df。

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

果。

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

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

給定源程序:

#include

#include

#include

#include

 

 

 

 

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

{ 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("\nThe result is: %s\n",fun(s));

}

解題思路:

第一處:函數(shù)中申請(qǐng)了兩個(gè)內(nèi)存空間,其p是存放數(shù)字字符串,t是存放非數(shù)字字符串,根

據(jù)條件可知,p依次存放數(shù)字字符串,其位置由j來(lái)控制,所以應(yīng)填:j。

第二處:利用for循環(huán)再把t中的內(nèi)容依次追加到p中,其中t的長(zhǎng)度為k,所以應(yīng)填:k

第三處:最后返回p的首地址即可,所以應(yīng)填:p

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

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

放, 然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合

并到c所指數(shù)組中,過(guò)長(zhǎng)的剩余字符接在c所指數(shù)組的尾部。例如,當(dāng)a所指字符串

中的內(nèi)容為"abcdefg",b所指字符串中的內(nèi)容為"1234"時(shí),c所指數(shù)組中的內(nèi)容應(yīng)

該為"a4b3c2d1efg";而當(dāng)a所指字符串中的內(nèi)容為"1234",b所指字符串中的內(nèi)容

"abcdefg"時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為"1g2f3e4dcba"。

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

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

給定源程序:

#include

#include

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

{

int i , j; char ch;

i = 0; j = strlen(b)-1;

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

while ( i > j )

 

 

 

 

{ ch = b[i]; b[i] = b[j]; b[j] = ch;

i++; j--;

}

while ( *a || *b ) {

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

If ( *a )

{ *c = *a; c++; a++; }

if ( *b )

{ *c = *b; c++; b++; }

}

*c = 0;

}

main()

{

char s1[100],s2[100],t[200];

printf("\nEnter s1 string : ");scanf("%s",s1);

printf("\nEnter s2 string : ");scanf("%s",s2);

fun( s1, s2, t );

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

}

解題思路:

第一處:應(yīng)該判斷i是否小于j,所以應(yīng)改為:while(i。

第二處:if錯(cuò)寫成If。

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

函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符刪

除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為"ABCDEFG12345",其中字符CASCII碼值為

奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù), 因此必須刪除;而字符1ASCII碼值為奇數(shù),在

數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其它依此類推。

最后t所指的數(shù)組中的內(nèi)容應(yīng)是"BDF12345"。

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

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

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

給定源程序:

#include

#include

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

NONO();

}

 

解題思路:

本題是從一個(gè)字符串按要求生成另一個(gè)新的字符串。我們使用for循環(huán)語(yǔ)句來(lái)解決這個(gè)問(wèn)

題。

參考答案:

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

{

int i, j = 0 ;

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

if(!((i % 2) ==0 && (s[i] % 2))) t[j++] = s[i] ;

t[j] = 0 ;

}

 

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

72套:

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

例如,若形參e的值為1e-3,函數(shù)的返回值2.735678

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

果。

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

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

給定源程序:

#include

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.0*i-1)/((__3__)*(2.0*i));

s=s+x;

}

return s;

}

main()

{ double e=1e-3;

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

}

解題思路:

第一處:根據(jù)公式以及下面的程序,可以得出i應(yīng)為0。

第二處:根據(jù)公式以及i的初值為0,所以應(yīng)填:i++。

第三處:根據(jù)公式要求,所以應(yīng)填:2.0*i。

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

給定程序MODI1.C中函數(shù) fun 的功能是:將s所指字符串的正序和反序進(jìn)行連

接,形成一個(gè)新串放在t所指的數(shù)組中。

例如,當(dāng)s所指字符串為:"ABCD" 時(shí),則t所指字符串中的內(nèi)容應(yīng)

為:"ABCDDCBA"。

 

 

 

 

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

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

給定源程序:

#include

#include

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

void fun (char s, char t)

{

int i, d;

d = strlen(s);

for (i = 0; i

for (i = 0; i

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

t[2*d-1] = '\0';

}

main()

{

char s[100], t[100];

printf("\nPlease enter string S:"); scanf("%s", s);

fun(s, t);

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

}

解題思路:

第一處:從函數(shù)體fun中可知,兩個(gè)均為字符指針型變量,應(yīng)改為:void fun (char *s, char

*t)

第二處:字符串結(jié)束位置錯(cuò)誤,應(yīng)改為:t[2*d]=0;

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

函數(shù)fun的功能是: s所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)ASCII值也為奇

數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t

指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:"ABCDEFG12345",其中字符AASCII碼值

雖為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此必需刪除;而字符1ASCII碼值為奇

數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其它依此類推。最后t所指的

數(shù)組中的內(nèi)容應(yīng)是:"135"。

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

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

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

給定源程序:

#include

#include

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

NONO();

}

解題思路:

本題是從一個(gè)字符串按要求生成另一個(gè)新的字符串。我們使用for循環(huán)語(yǔ)句來(lái)解決這個(gè)問(wèn)

題。

參考答案:

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

{

int i, j = 0 ;

for(i = 1 ; i < strlen(s) ; i += 2)

if(s[i] % 2) t[j++] = s[i] ;

t[j] = 0 ;

}

 

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

73套:

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

例如:若形參e的值為1e-3,函數(shù)的返回值為0.551690。

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

果。

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

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

給定源程序:

#include

double fun(double e)

{ int i, k; double s, t, x;

s=0; k=1; i=2;

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

x=__1__/4;

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

while(x __2__ e)

{ s=s+k*x;

k=k* (-1);

t=2*i;

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

x=__3__/(t*t);

i++;

}

return s;

}

main()

{ double e=1e-3;

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

}

解題思路:

第一處:根據(jù)公式,首項(xiàng)應(yīng)該是3.4,所以應(yīng)填:3.。

第二處:當(dāng)x大于e時(shí),循環(huán)體才會(huì)運(yùn)行,所以應(yīng)填:>。

 

 

 

 

第三處:分子的值是2i+1,所以應(yīng)填:2*i+1。

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

給定程序MODI1.C中函數(shù) fun 的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。和

值通過(guò)函數(shù)值返回到main函數(shù)。

2 3 5 8 13 21

┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ……

1 2 3 5 8 13

例如,若n = 5,則應(yīng)輸出:8.391667。

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

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

給定源程序:

#include

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

fun ( int n )

{ int a, b, c, k; double s;

s = 0.0; a = 2; b = 1;

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

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

s = s + (Double)a / b;

c = a; a = a + b; b = c;

}

return s;

}

main( )

{ int n = 5;

printf( "\nThe value of function is: %lf\n", fun ( n ) );

}

解題思路:

第一處:由于計(jì)算的實(shí)型值要通過(guò)函數(shù)返回,所以必須定義函數(shù)的返回類型,只要intvoid

可以省略,其他都要定義類型。由于返回是實(shí)型值,所以應(yīng)在數(shù)名前加上doublefloat等定義。

第二處:double的第1個(gè)字母錯(cuò)寫成大寫D

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

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:求出一個(gè)2×M整型二維數(shù)組中最大元素的

,并將此值返回調(diào)用函數(shù)。

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

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

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

給定源程序:

#include

#define M 4

fun (int a[][M])

{

}

main( )

{ int arr[2][M]={5,8,3,45,76,-4,12,82} ;

printf("max =%d\n", fun(arr)) ;

NONO( ) ;

 

 

 

 

}

解題思路:

本題是求出一個(gè)2×M整型二維數(shù)組中最大元素的值。

參考答案:

fun (int a[][M])

{

int i, j, max=a[0][0];

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

for(j=0; j

if(max

return max;

}

 

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

74套:

人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入

結(jié)構(gòu)體數(shù)組std中。函數(shù)fun的功能是:找出指定出生年份的人員,將其數(shù)據(jù)放在

形參k所指的數(shù)組中,由主函數(shù)輸出,同時(shí)由函數(shù)值返回滿足指定條件的人數(shù)。

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

果。

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

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

給定源程序:

#include

#define N 8

 

 

 

 

typedef struct

{ int num;

int year,month,day ;

}STU;

int fun(STU *std, STU *k, int year)

{ int i,n=0;

for (i=0; i

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

if( ___1___==year)

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

k[n++]= ___2___;

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

return (___3___);

}

main()

{ STU std[N]={ {1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},

{5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};

STU k[N]; int i,n,year;

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

n=fun(std,k,year);

if(n==0)

printf("\nNo person was born in %d \n",year);

else

{ printf("\nThese persons were born in %d \n",year);

for(i=0; i

printf("%d %d-%d-%d\n",k[i].num,k[i].year,k[i].month,k[i].day);

}

}

解題思路:

本題是從給定的人員數(shù)據(jù)中找出年齡相同的記錄存入k中,并返回符合條件的人數(shù)。

第一處:斷結(jié)構(gòu)變量中的編號(hào)year是否相等,所以應(yīng)填:std[i].year。

第二處:把符合條件的記錄依次存入實(shí)參k中,所以應(yīng)填:std[i]

第三處:返回符合滿足條件的人數(shù),所以應(yīng)填:n

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

給定程序MODI1.C的功能是:讀入一個(gè)整數(shù)k(2k10000),打印它的所有質(zhì)

因子(即所有為素?cái)?shù)的因子)。

例如,若輸入整數(shù):2310,則應(yīng)輸出:2、3、5、7、11。

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

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

給定源程序:

#include

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

IsPrime ( int n );

{ int i, m;

m = 1;

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

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

 

 

 

 

if !( n%i )

{ m = 0; break ; }

return ( m );

}

main( )

{ int j, k;

printf( "\nPlease enter an integer number between 2 and 10000: " ); scanf( "%d",

&k );

printf( "\n\nThe prime factor(s) of %d is( are ):", k );

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

if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( "\n M", j );

printf("\n");

}

解題思路:

第一處:函數(shù)定義的行尾有多余的分號(hào)。

第二處:條件判斷缺少圓括號(hào)。

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

已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入結(jié)構(gòu)體數(shù)組a

中。請(qǐng)編寫函數(shù) fun,函數(shù)的功能是:找出成績(jī)最高的學(xué)生記錄,通過(guò)形參指針

傳回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。

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

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

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

給定源程序:

#include

#include

#define N 10

typedef struct ss

{ char num[10]; int s; } STU;

fun( STU a[], STU *s )

{

}

main ( )

{ STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},

{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m ;

int i;

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

for ( i=0; i< N; i++ )printf("No = %s Mark = %d\n", a[i].num,a[i].s);

fun ( a, &m );

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

printf ("The top : %s , %d\n",m.num, m.s);

NONO( );

}

解題思路:

本題考察學(xué)生在一組記錄中找出最高分。我們使用for循環(huán)語(yǔ)句來(lái)解決這個(gè)問(wèn)題。

參考答案:

fun( STU a[], STU *s )

{

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

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

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

j = i ;

max = a[i].s ;

}

*s = a[j] ;

}

 

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

75套:

給定程序中,函數(shù)fun的功能是:對(duì)形參ss所指字符串?dāng)?shù)組中的M個(gè)字符串按

長(zhǎng)度由短到長(zhǎng)進(jìn)行排序。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)。

請(qǐng)?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, n[M]; char t[N];

for(i=0; i

for(i=0; i

{ k=i;

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

for(j=___1___; j

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

if(n[k]>n[j]) ___2___;

if(k!=i)

{ strcpy(t,ss[i]);

strcpy(ss[i],ss[k]);

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

strcpy(ss[k],___3___);

n[k]=n[i];

}

}

}

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

}

解題思路:

本題是要求按字符串的長(zhǎng)短進(jìn)行排序。

 

 

 

 

第一處:內(nèi)循環(huán)賦初值,應(yīng)填:i+1。

第二處:找出最短的一個(gè)長(zhǎng)度,所以應(yīng)填:m=j。

第三處:交換字符串,所以應(yīng)填:t。

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

給定程序MODI1.C中函數(shù) fun 的功能是:判斷ch中的字符是否與str所指串中

的某個(gè)字符相同; 若相同,什么也不做,若不同,則將其插在串的最后。

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

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

給定源程序:

#include

#include

/**********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( "\nPlease enter a string:\n" ); gets ( s );

printf ("\n Please enter the character to search : " );

c = getchar();

fun(s, c) ;

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

}

解題思路:

第一處:第1個(gè)形參應(yīng)該是字符串類型,所以應(yīng)改為:void fun(char *str, char ch)。

第二處:應(yīng)該是判斷不相等,所以應(yīng)改為:if(*str!=ch)。

第三次:置字符串結(jié)束符錯(cuò)誤,所以應(yīng)改為:str[1] = 0;

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

請(qǐng)編一個(gè)函數(shù)fun(char *s),函數(shù)的功能是把s所指字符串中的內(nèi)容逆置。

例如:字符串中原有的字符串為:abcdefg,

則調(diào)用該函數(shù)后, 串中的內(nèi)容為:gfedcba。

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

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

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

給定源程序:

#include

#include

#define N 81

fun ( char *s )

{

}

 

 

 

 

main( )

{ char a[N];

printf ( "Enter a string : " ); gets ( a );

printf ( "The original string is : " ); puts( a );

fun ( a );

printf("\n");

printf ( "The string after modified : ");

puts ( a );

NONO( );

}

解題思路:

本題是考察考生如何對(duì)字符串中的字符進(jìn)行逆序操作。給出的程序使用了一個(gè)臨時(shí)變量b

的字符串,使用for循環(huán)語(yǔ)句把原字符串的字符從尾部依次賦給臨時(shí)變量b(從頭開(kāi)始)中,循

環(huán)結(jié)束后,再把臨時(shí)變量b的內(nèi)容重新復(fù)制給原字符串變量即可。

參考答案:

fun ( char *s )

{

char b[N] ;

int i = 0, j ;

memset(b, 0, N) ;

for(j = strlen(s) - 1 ; j >= 0 ; j--) b[i++] = s[j] ;

strcpy(s, b) ;

}

 

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

76套:

給定程序中,函數(shù)fun的功能是:計(jì)算下式前n項(xiàng)的和作為函數(shù)值返回。

例如,當(dāng)形參n的值為10時(shí),函數(shù)返回:-0.204491。

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

果。

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

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

給定源程序:

#include

double fun(int n)

{ int i, k; double s, t;

s=0;

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

k=__1__;

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

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

t=__2__;

s=s+k*(2*i-1)*(2*i+1)/(t*t);

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

k=k*__3__;

}

return s;

 

 

 

 

}

main()

{ int n=-1;

while(n<0)

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

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

}

解題思路:

第一處:k是用來(lái)管理正負(fù)號(hào)的,公式中第一個(gè)值是正數(shù),所以應(yīng)填:1

第二處:根據(jù)公式,t2i,所以應(yīng)填:2*i。

第三處:根據(jù)公式,第2個(gè)是負(fù)數(shù),所以應(yīng)填:(-1)。

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

給定程序MODI1.C中函數(shù) fun 的功能是:判斷一個(gè)整數(shù)是否是素?cái)?shù),若是返

1,否則返回0

main()函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。

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

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

給定源程序:

#include

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

}

解題思路:

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

第二處:條件判斷相等的符號(hào)是==。

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

請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:找出一維整型數(shù)組元素中最大的值和它所

在的下標(biāo), 最大的值和它所在的下標(biāo)通過(guò)形參傳回。數(shù)組元素中的值已在主函數(shù)

中賦予。

主函數(shù)中x是數(shù)組名, nx中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值

所在元素的下標(biāo)。

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

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

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

 

 

 

 

給定源程序:

#include

#include

void fun(int a[], int n , int *max, int *d )

{

}

main()

{ int i, x[20], max , index, n = 10;

randomize() ;

for (i=0;i < n;i++) {x[i] = rand()P; printf("M", x[i]) ; }

printf("\n");

fun( x, n , &max, &index);

printf("Max =] , Index =M\n",max, index );

NONO();

}

 

解題思路:

本題是找出一維整型數(shù)組元素中最大的值和它所在的下標(biāo), 最大的值和它所在的下標(biāo)通過(guò)

形參傳回。具體看參考源程序中的說(shuō)明。

參考答案:

void fun(int a[], int n , int *max, int *d )

{

int i ;

*max=a[0];*d = 0 ; /* 把數(shù)組的第1個(gè)元素值賦值給最大值變量*max */

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

if(*max < a[i]) { /* 判斷*max是否小于當(dāng)前值 */

*max = a[i]; /* 重新把最大值賦值給*max */

*d = i ; /* 記住下標(biāo) */

}

}

 

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

77套:

給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按

原來(lái)從高位到低位相反的順序組成一個(gè)新的數(shù),并作為函數(shù)值返回。

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

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

果。

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

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

給定源程序:

#include

unsigned long fun(unsigned long n)

{ unsigned long x=0; int t;

while(n)

{ t=n;

/**********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("Please input(0

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

}

解題思路:

第一處:判斷t是否是偶數(shù),所以應(yīng)填:0。

第二處:每操作一次,x必須乘以10,再加t,所以應(yīng)填:10*x。

第三處:每循環(huán)一次n的值縮小10倍,所以應(yīng)填:n/10。

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

給定程序MODI1.C中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中每一位上為奇數(shù)的數(shù)依

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

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

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

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

給定源程序:

#include

void fun (long s, long *t)

{ int d;

long sl=1;

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

t = 0;

while ( s > 0)

{ d = s;

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

if (d%2 == 0)

{ *t = d * sl + *t;

\TAB sl *= 10;

}

s /= 10;

}

}

main()

{ long s, t;

clrscr();

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

fun(s, &t);

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

}

解題思路:

第一處:由于t是一個(gè)指針變量,賦初值的方式應(yīng)為:*t=0;。

第二處:d%2條件判斷時(shí)應(yīng)為不是0,所以應(yīng)改為:if(d%2!=0)。

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

編寫一個(gè)函數(shù)fun,它的功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不使用庫(kù)函數(shù)strcat),

即把p2所指的字符串連接到p1所指的字符串后。

例如,分別輸入下面兩個(gè)字符串:

FirstString--

SecondString

 

 

 

 

程序輸出:

FirstString--SecondString

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

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

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

給定源程序:

#include

void fun(char p1[], char p2[])

{

}

main()

{ char s1[80], s2[40] ;

printf("Enter s1 and s2:\n") ;

scanf("%s%s", s1, s2) ;

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

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

printf("Invoke fun(s1,s2):\n") ;

fun(s1, s2) ;

printf("After invoking:\n") ;

printf("%s\n", s1) ;

NONO() ;

}

 

解題思路:

本題是不使用字符串庫(kù)函數(shù)來(lái)實(shí)現(xiàn)兩個(gè)字符串的連接。

參考答案:

void fun(char p1[], char p2[])

{

char *p=p1;

while(*p)p++;

while(*p2) *p++=*p2++;

 

 

 

 

*p=0;

}

 

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

78套:

給定程序中,函數(shù)fun的功能是:N×N矩陣主對(duì)角線元素中的值與反向?qū)?/SPAN>

線對(duì)應(yīng)位置上元素中的值進(jìn)行交換。例如,若N=3,有下列矩陣:

1 2 3

4 5 6

7 8 9

交換后為:

3 2 1

4 5 6

9 8 7

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

果。

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

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

給定源程序:

#include

 

 

 

 

#define N 4

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

void fun(int ___1___ , int n)

{ int i,s;

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

for(___2___; i++)

{ s=t[i][i];

t[i][i]=t[i][n-i-1];

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

t[i][n-1-i]=___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,N);

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

for(i=0; i

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

}

}

解題思路:

第一處:在函數(shù)體fun中,已經(jīng)使用了t整型數(shù)組,所以應(yīng)填:t[][N]

第二處:要求填寫for循環(huán)語(yǔ)句的初始值和終止值,所以應(yīng)填:i=0;i

第三處:交換變量的值,根據(jù)循環(huán)體中的語(yǔ)句可知,s是存放交換的中間變量,所以應(yīng)填:

s。

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

N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,給定程序MODI1.C中函數(shù)fun

功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;

反之,返回-1。

折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:lowhigh

low,然后把m與中間位置(mid)中元素的值進(jìn)行比較。如果m的值大于

中間位置元素中的值, 則下一次的查找范圍落在中間位置之后的元素中;反之,

下一次的查找范圍落在中間位置之前的元素中。直到low>high,查找結(jié)束。

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

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

給定源程序:

#include

#define N 10

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

void fun(int a[], int m )

{ int low=0,high=N-1,mid;

 

 

 

 

while(low<=high)

{ mid=(low+high)/2;

if(m

high=mid-1;

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

else If(m > a[mid])

low=mid+1;

else return(mid);

}

return(-1);

}

main()

{ int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m;

printf("a數(shù)組中的數(shù)據(jù)如下:");

for(i=0;iprintf("Enter m: "); scanf("%d",&m);

k=fun(a,m);

if(k>=0) printf("m=%d,index=%d\n",m,k);

else printf("Not be found!\n");

}

解題思路:

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

第二處:if錯(cuò)定成If。

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

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

尾部的*號(hào)之外,將字符串中其它*號(hào)全部刪除。形參p已指向字符串中最后的一個(gè)

字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。

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

容應(yīng)當(dāng)是: ABCDEFG*******。

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

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

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

給定源程序:

#include

void fun( char *a, char *p )

{

}

main()

{ char s[81],*t;

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

t=s;

while(*t)t++;

t--;

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

fun( s , t );

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

 

 

 

 

NONO();

}

 

解題思路:

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

1. 利用循環(huán)掃描出p指針左邊的字符是否是'*',如果不是'*',則依次把這些字符移動(dòng)原

字符串a首地址開(kāi)始存放。

2. p指針?biāo)傅淖址惨来未娣诺阶址?/SPAN>a中。

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

參考答案:

void fun( char *a, char *p )

{

char *q=a;

int j=0;

while(*q && q

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

q++ ;

}

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

a[j]=0;

}

 

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

79套:

給定程序中,函數(shù)fun的功能是:ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所

在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指變量中。ss所指字符串

數(shù)組中共有M個(gè)字符串,且串長(zhǎng)。

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

果。

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

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

給定源程序:

#include

#include

#define M 5

#define N 20

int fun(char (*ss)[N], int *n)

{ int i, k=0, len= N;

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

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

{ len=strlen(ss[i]);

if(i==0) *n=len;

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

if(len ___2___ *n)

{ *n=len;

k=i;

}

}

 

 

 

 

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

return(___3___);

}

main()

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

int n,k,i;

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

for(i=0;i

k=fun(ss,&n);

printf("\nThe length of shortest string is : %d\n",n);

printf("\nThe shortest string is : %s\n",ss[k]);

}

解題思路:

第一處:字符串?dāng)?shù)組共有M個(gè)字符串,所以在循環(huán)中終止值應(yīng)填:M。

第二處:由于本題是取長(zhǎng)度最短的字符串,*n總是保存長(zhǎng)度最短值,所以應(yīng)填:<。

第三處:其中k是保存長(zhǎng)度最短的字符串所在的行下標(biāo),所以應(yīng)填:k。

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

給定程序MODI1.C中函數(shù) fun 的功能是:將tt所指字符串中的小寫字母都改

為對(duì)應(yīng)的大寫字母,其它字符不變。

例如,若輸入"Ab, cD",則輸出"AB, CD"。

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

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

給定源程序:

#include

#include

char* fun( char tt[] )

{

int i;

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

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

if(( 'a' <= tt[i] )||( tt[i] <= 'z' ) )

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

tt[i] += 32;

return( tt );

}

main( )

{

char tt[81];

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

gets( tt );

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

}

解題思路:

第一處:判斷是小寫字母,則條件應(yīng)該是與的關(guān)系。

第二處:小寫字母的ASCII值減去32正好是其大寫字母。

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

請(qǐng)編寫函數(shù)fun,其功能是: 將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組

 

 

 

 

, 非素?cái)?shù)的個(gè)數(shù)通過(guò)k傳回。

例如,若輸入:17,則應(yīng)輸出:4 6 8 9 10 12 14 15 16。

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

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

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

給定源程序:

#include

void fun( int m, int *k, int xx[] )

{

}

main()

{

int m, n, zz[100];

printf( "\nPlease enter an integer number between 10 and 100: " );

scanf( "%d", &n );

fun( n, &m, zz );

printf( "\n\nThere are %d non-prime numbers less than %d:", m, n );

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

printf( "\n M", zz[n] );

NONO();

}

 

解題思路:

本題是考察考生如何判斷一個(gè)數(shù)不是素?cái)?shù),如果所給出的數(shù)是非素?cái)?shù)且小于指定的數(shù),那

么這些數(shù)應(yīng)存放到指定的數(shù)組xx中保存,最后由形參xx返回。

在給出的程序中函數(shù)isP就是判斷一個(gè)數(shù)是否是素?cái)?shù),若是非素?cái)?shù),則返回1,否則返回0。

本題是用for(i=2;i循環(huán)語(yǔ)句分別判斷i是否為非素?cái)?shù),如果i是非素?cái)?shù),則把該數(shù)i

存入數(shù)組xx中。其中,i是控制變量,m是試題給出的整數(shù)。

參考答案:

#include

int isP(int m)

{

 

 

 

 

int j, tag = 0 ;

for(j = 2 ; j < m && !tag ; j++)

if(m % j == 0) tag = 1 ;

return tag ;

}

void fun( int m, int *k, int xx[] )

{

int i, cnt = 0 ;

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

if(isP(i)) xx[cnt++] = i ;

*k = cnt ;

}

 

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

80套:

給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按

原來(lái)從高位到低位的順序組成一個(gè)新的數(shù),并作為函數(shù)值返回。

例如,從主函數(shù)輸入一個(gè)整數(shù):27638496,函數(shù)返回值為:26846。

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

果。

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

 

 

 

 

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

給定源程序:

#include

unsigned long fun(unsigned long n)

{ unsigned long x=0, s, i; int t;

s=n;

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

i=__1__;

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

while(__2__)

{ t=s;

if(t%2==0){

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

x=x+t*i; i=__3__;

}

s=s/10;

}

return x;

}

main()

{ unsigned long n=-1;

while(n>99999999||n<0)

{ printf("Please input(0

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

}

解題思路:

第一處:對(duì)變量i賦初值,根據(jù)i的使用規(guī)則來(lái)看,i應(yīng)等于1。

第二處:while循環(huán)要求計(jì)算后的s應(yīng)大于0,所以應(yīng)填:s。

第三處:每循環(huán)一次,i要乘以10,所以應(yīng)填:i*10。

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

給定程序MODI1.C中函數(shù)fun的功能是:輸出MM列整數(shù)方陣,然后求兩條對(duì)

角線上元素之和,返回此和數(shù)。

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

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

給定源程序:

#include

#define M 5

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

int fun(int n, int xx[][])

{ int i, j, sum=0;

printf( "\nThe %d x %d matrix:\n", M, M );

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

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

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

printf( "%f ", xx[i][j] );

printf("\n");

}

 

 

 

 

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

sum += xx[i][i]+xx[i][ n-i-1 ];

return( sum );

}

main( )

{ int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

\TAB \TAB {6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf ( "\nThe sum of all elements on 2 diagnals is %d.",fun( M, aa ));

}

解題思路:

第一處:形參必須定義字符串?dāng)?shù)組的長(zhǎng)度,所以應(yīng)改為:int fun(int n,int xx[][M])

第二處:由于xx是整型的雙維數(shù)組,不能用浮點(diǎn)型輸出,所以應(yīng)改為:printf("%d

",xx[i][j]);

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

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

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

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

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

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

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

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

給定源程序:

#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: %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=(a/10)*1000+(b)*100+(a)*10+(b/10);

}