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

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

 

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

 

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

01套:

給定程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)的數(shù)去

,剩余的數(shù)按原來從高位到低位的順序組成一個新的數(shù),并通過形參指針n傳回

所指變量。

例如,輸入一個數(shù):27638496,新的數(shù):為739。

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

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

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

給定源程序:

#include

void fun(unsigned long *n)

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

i=1;

while(*n)

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

{ t=*n % __1__;

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

if(t%2!= __2__)

{ x=x+t*i; i=i*10; }

*n =*n /10;

}

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

*n=__3__;

}

main()

{ unsigned long n=-1;

while(n>99999999||n<0)

{ printf("Please input(0

fun(&n);

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

}

解題思路:

第一處:t是通過取模的方式來得到*n的個位數(shù)字,所以應(yīng)填:10。

第二處:判斷是否是奇數(shù),所以應(yīng)填:0

第三處:最后通形參n來返回新數(shù)x,所以應(yīng)填:x。

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

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

例如,給n輸入5,則輸出120.000000。

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

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

給定源程序:

#include

double fun ( int n )

{ double result = 1.0 ;

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

if n = = 0

return 1.0 ;

while( n >1 && n < 170 )

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

result *= n--

return result ;

}

main ( )

{ int n ;

printf("Input N:") ;

scanf("%d", &n) ;

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

}

解題思路:

第一處:條件語句書寫格式錯誤,應(yīng)改為:if (n==0)

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

 

 

 

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

請編寫一個函數(shù)fun,它的功能是:將一個數(shù)字字符串轉(zhuǎn)換為一個整數(shù)(不得

調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串"-1234",

函數(shù)把它轉(zhuǎn)換為整數(shù)值 -1234。函數(shù)fun中給出的語句僅供參考。

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

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

入你編寫的若干語句。

給定源程序:

#include

#include

long fun ( char *p)

{

/* 以下代碼僅供參考 */

int i, len, t; /* len為串長,t為正負標識 */

long x=0;

len=strlen(p);

if(p[0]=='-')

{ t=-1; len--; p++; }

else t=1;

/* 以下完成數(shù)字字符串轉(zhuǎn)換為一個數(shù)字 */

return x*t;

}

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

{ char s[6];

long n;

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

gets(s);

n = fun(s);

printf("%ld\n",n);

 

 

NONO ( );

}

NONO ( )

{/* 本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。 */

FILE *fp, *wf ;

int i ;

char s[20] ;

long n ;

fp = fopen("c:\\test\\in.dat","r") ;

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

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

fscanf(fp, "%s", s) ;

n = fun(s);

fprintf(wf, "%ld\n", n) ;

}

fclose(fp) ;

fclose(wf) ;

}

解題思路:

本題是將一個數(shù)字字符串轉(zhuǎn)換為一個整數(shù)。

參考答案:

#include

#include

long fun ( char *p)

{

/* 以下代碼僅供參考 */

int i, len, t; /* len為串長,t為正負標識 */

long x=0;

len=strlen(p);

if(p[0]=='-')

{ t=-1; len--; p++; }

else t=1;

/* 以下完成數(shù)字字符串轉(zhuǎn)換為一個數(shù)字 */

while(*p) x = x*10-48+(*p++);

return x*t;

}

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

{ char s[6];

long n;

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

gets(s);

n = fun(s);

printf("%ld\n",n);

NONO ( );

}

NONO ( )

{/* 本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。 */

FILE *fp, *wf ;

int i ;

char s[20] ;

long n ;

fp = fopen("c:\\test\\in.dat","r") ;

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

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

fscanf(fp, "%s", s) ;

n = fun(s);

fprintf(wf, "%ld\n", n) ;

}

fclose(fp) ;

fclose(wf) ;

}

 

注意:由于NONO( )這個函數(shù)是改卷人用的,與考生沒有什么關(guān)系,故下面從第2套試題開始均省略NONO( )

 

 

 

 

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

02套:

給定程序中,函數(shù)fun的功能是將形參給定的字符串、整數(shù)、浮點數(shù)寫到文本

文件中,再用字符方式從此文本文件中逐個讀入并顯示在終端屏幕上。

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

果。

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

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

給定源程序:

#include

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

{

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

__1__ fp;

char ch;

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

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

fclose(fp);

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

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

ch = fgetc(fp);

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

while (!feof(__2__)) {

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

putchar(__3__); ch = fgetc(fp); }

putchar('\n');

fclose(fp);

}

main()

{ char a[10]="Hello!"; int b=12345;

double c= 98.76;

fun(a,b,c);

}

 

解題思路:

本題是考察先把給定的數(shù)據(jù)寫入到文本文件中,再從該文件讀出并顯示在屏幕上。

第一處:定義文本文件類型變量,所以應(yīng)填:FILE *。

第二處:判斷文件是否結(jié)束,所以應(yīng)填:fp。

第三處:顯示讀出的字符,所以應(yīng)填:ch。

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

給定程序MODI1.C中函數(shù)fun的功能是: 依次取出字符串中所有數(shù)字字符,

成新的字符串, 并取代原字符串。

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

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

給定源程序:

#include

void fun(char *s)

{ int i,j;

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

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

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

s[j]=s[i];

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

s[j]="\0";

}

main()

{ char item[80];

printf("\nEnter a string : ");gets(item);

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

fun(item);

printf("\n\nThe string of changing is : \"%s\"\n",item );

}

解題思路:

第一處: 要求是取出原字符串中所有數(shù)字字符組成一個新的字符串,程序中是使用變量j

來控制新字符串的位置,所以應(yīng)改為:s[j++]=s[i];。

第二處: 置新字符串的結(jié)束符,所以應(yīng)改為:s[j]='\0';.

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

請編寫函數(shù)fun, 函數(shù)的功能是: MN列的二維數(shù)組中的字符數(shù)據(jù), 按列的

順序依次放到一個字符串中。

例如, 二維數(shù)組中的數(shù)據(jù)為:

W W W W

S S S S

H H H H

則字符串中的內(nèi)容應(yīng)是: WSHWSHWSH。

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

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

你編寫的若干語句。

給定源程序:

#include

#define M 3

#define N 4

 

 

void fun(char s[][N], char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 請?zhí)顚懴鄳?yīng)語句完成其功能 */

{

}

b[n]='\0';

}

main()

{ char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};

int i,j;

printf("The matrix:\n");

for(i=0; i

{ for(j=0;j3c",w[i][j]);

printf("\n");

}

fun(w,a);

printf("The A string:\n");puts(a);

printf("\n\n");

NONO();

}

 

解題思路:

本題是把二維數(shù)組中的字符數(shù)據(jù)按列存放到一個字符串中。

1. 計算存放到一維數(shù)組中的位置。

2. 取出二維數(shù)組中的字符存放到一維數(shù)組(已計算出的位置)中。

參考答案:

void fun(char s[][N], char *b)

{

int i,j,n=0;

for(i=0; i < N;i++) /* 請?zhí)顚懴鄳?yīng)語句完成其功能 */

{

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

b[n] = s[j][i] ;

n = i * M + j + 1;

}

}

b[n]='\0';

}

 

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

03套:

程序通過定義學生結(jié)構(gòu)體變量,存儲了學生的學號、姓名和3門課的成績。所

有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename

指文件中最后一個學生的數(shù)據(jù),即用新的學生數(shù)據(jù)覆蓋該學生原來的數(shù)據(jù),其它學

生的數(shù)據(jù)不變。

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

果。

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

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

給定源程序:

#include

#define N 5

typedef struct student {

long sno;

char name[10];

float score[3];

} STU;

void fun(char *filename, STU n)

{ FILE *fp;

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

fp = fopen(__1__, "rb+");

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

fseek(__2__, -1L*sizeof(STU), SEEK_END);

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

fwrite(&n, sizeof(STU), 1, __3__);

fclose(fp);

}

main()

{ STU t[N]={ {10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88},

{10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87},

{10005,"ZhangSan", 95, 80, 88}};

STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N];

int i,j; FILE *fp;

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

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

fclose(fp);

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

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

fclose(fp);

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

for (j=0; j

{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);

printf("\n");

}

fun("student.dat", n);

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

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

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

fclose(fp);

for (j=0; j

{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);

printf("\n");

}

}

解題思路:

本題是考察如何從文件中讀出數(shù)據(jù),再把結(jié)構(gòu)中的數(shù)據(jù)寫入文件中。

第一處:從指定的文件中讀出數(shù)據(jù),所以應(yīng)填:filename

第二處:讀取文件fp的最后一條記錄,所以應(yīng)填:fp。

第三處:再把讀出的記錄,寫入文件fp指定的位置上,所以應(yīng)填:fp。

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

給定程序MODI1.C中的函數(shù)Creatlink的功能是創(chuàng)建帶頭結(jié)點的單向鏈表,

為各結(jié)點數(shù)據(jù)域賦0m-1的值。

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

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

給定源程序:

#include

#include

typedef struct aa

{ int data;

struct aa *next;

} NODE;

NODE *Creatlink(int n, int m)

{ NODE *h=NULL, *p, *s;

int i;

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

p=(NODE )malloc(sizeof(NODE));

h=p;

p->next=NULL;

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

{ s=(NODE *)malloc(sizeof(NODE));

s->data=rand()%m; s->next=p->next;

p->next=s; p=p->next;

}

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

return p;

}

outlink(NODE *h)

{ NODE *p;

p=h->next;

printf("\n\nTHE LIST :\n\n HEAD ");

while(p)

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

p=p->next;

}

printf("\n");

}

main()

{ NODE *head;

head=Creatlink(8,22);

outlink(head);

}

解題思路:

第一處: 指向剛分配的結(jié)構(gòu)指針,所以應(yīng)改為:p=(NODE *)malloc(sizeof(NODE));

第二處: 在動態(tài)分配內(nèi)存的下一行語句是,使用臨時結(jié)構(gòu)指針變量h保存p指針的初始位置,

最后返回不能使用p,是因為p的位置已經(jīng)發(fā)生了變化,所以應(yīng)改為返回h。

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

請編寫函數(shù)fun, 函數(shù)的功能是:統(tǒng)計一行字符串中單詞的個數(shù),作為函數(shù)值返

回。一行字符串在主函數(shù)中輸入, 規(guī)定所有單詞由小寫字母組成,單詞之間由若干

個空格隔開, 一行的開始沒有空格。

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

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

你編寫的若干語句。

給定源程序:

#include

#include

#define N 80

int fun( char *s)

{

}

main()

{ char line[N]; int num=0;

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

num=fun( line );

printf("The number of word is : %d\n\n",num);

NONO();

}

 

解題思路:

本題是統(tǒng)計字符串中的單詞數(shù)。

1. 利用while循環(huán)語句和指針變量,當字符為空格時,則單詞數(shù)k1。

2. 循環(huán)結(jié)束返回k。

參考答案:

 

int fun( char *s)

{

int k = 1 ;

while(*s) {

if(*s == ' ') k++ ;

s++ ;

}

return k ;

}

 

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

04套:

程序通過定義學生結(jié)構(gòu)體變量,存儲了學生的學號、姓名和3門課的成績。所

有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指

的文件中讀入學生數(shù)據(jù),并按照學號從小到大排序后,再用二進制方式把排序后的

學生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。

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

果。

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

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

給定源程序:

#include

#define N 5

typedef struct student {

long sno;

char name[10];

float score[3];

} STU;

void fun(char *filename)

{ FILE *fp; int i, j;

STU s[N], t;

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

fp = fopen(filename, __1__);

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

fclose(fp);

for (i=0; i

for (j=i+1; j

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

if (s[i].sno __2__ s[j].sno)

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

fp = fopen(filename, "wb");

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

__3__(s, sizeof(STU), N, fp); /* 二進制輸出 */

fclose(fp);

}

main()

{ STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78},

{10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87},

{10001,"MaChao", 91, 92, 77}}, ss[N];

int i,j; FILE *fp;

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

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

fclose(fp);

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

for (j=0; j

{ printf("\nNo: %ld Name: %-8s Scores: ",t[j].sno, t[j].name);

for (i=0; i<3; i++) printf("%6.2f ", t[j].score[i]);

printf("\n");

}

fun("student.dat");

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

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

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

fclose(fp);

for (j=0; j

{ printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);

printf("\n");

}

}

解題思路:

本題是考察把結(jié)構(gòu)中的數(shù)據(jù)寫入文件。

第一處:建立文件的類型,考慮到是把結(jié)構(gòu)中的數(shù)據(jù)(結(jié)構(gòu)中的數(shù)據(jù)包含不打印的字符)

從文件中讀出,所以應(yīng)填:"rb"。

第二處:判斷當前學號是否大于剛讀出的學號進行相比,如果大于,則進行交換,所以應(yīng)

填:>。

第三處:把已排序的結(jié)構(gòu)數(shù)據(jù),重新寫入文件,所以應(yīng)填:fwrite。

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

給定程序MODI1.C中函數(shù)fun的功能是: 在字符串的最前端加入n*, 形成

新串, 并且覆蓋原串。

注意: 字符串的長度最長允許為79。

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

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

給定源程序:

#include

#include

void fun ( char s[], int n )

{

char a[80] , *p;

int i;

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

s=p;

for(i=0; i

do

{ a[i]=*p;

i++;

}

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

while(*p++)

a[i]=0;

strcpy(s,a);

}

main()

{ int n; char s[80];

printf("\nEnter a string : "); gets(s);

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

printf("\nEnter n ( number of * ) : "); scanf("%d",&n);

fun(s,n);

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

}

解題思路:

第一處: 指針p應(yīng)指向s,所以應(yīng)改為:p=s;。

第二處: 死循環(huán),當do while循環(huán)執(zhí)行一次,臨時變量p應(yīng)該指向字符串的下一位置,所以

應(yīng)改為:while(*p++);。

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

請編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計各年齡段的人數(shù)。N個年齡通過調(diào)用隨機

函數(shù)獲得,并放在主函數(shù)的age數(shù)組中;要求函數(shù)把09歲年齡段的人數(shù)放在d[0]

,1019歲年齡段的人數(shù)放在d[1],2029歲年齡段的人數(shù)放在d[2],

其余依此類推, 100 (100)以上年齡的人數(shù)都放在d[10]中。結(jié)果在主函數(shù)

中輸出。

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

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

你編寫的若干語句。

給定源程序:

#include

#define N 50

#define M 11

void fun( int *a, int *b)

{

}

double rnd()

{ static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m; return((double)r/m);

}

main()

{ int age[N], i, d[M];

for(i=0; i

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

for(i=0;i

printf("\n\n");

fun( age, d);

for(i=0;i<10;i++)printf("M---M : M\n",i*10,i*10+9,d[i]);

printf(" Over 100 : M\n",d[10]);

NONO(d);

}

 

解題思路:

本題是統(tǒng)計各年齡段的人數(shù)。

1. 初始化各年齡段人數(shù)為0

2. 使用for循環(huán)以及求出各年齡的十位數(shù)字作為存放人數(shù)的地址,如果大于值大于10,則

存入d[10]中(大于110歲的人)。

參考答案:

void fun( int *a, int *b)

{

int i, j ;

for(i = 0 ; i < M ; i++) b[i] = 0 ;

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

j = a[i] / 10 ;

if(j > 10) b[M - 1]++ ; else b[j]++ ;

}

}

double rnd()

{ static t=29,c=217,m=1024,r=0;

r=(r*t+c)%m; return((double)r/m);

}

 

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

05套:

給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點數(shù)寫到文本

文件中,再用字符串方式從此文本文件中逐個讀入,并調(diào)用庫函數(shù)atoiatof

字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點數(shù),然后將其顯示在屏幕上。

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

果。

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

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

給定源程序:

#include

#include

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("\nThe result :\n\n%s %d %f\n", str, a1, f1);

}

main()

{ char a[10]="Hello!"; int b=12345;

double c= 98.76;

fun(a,b,c);

}

解題思路:

本題是考察先把給定的數(shù)據(jù)寫入到文本文件中,再從該文件讀出并轉(zhuǎn)換成相應(yīng)的整數(shù)、浮

點數(shù)顯示在屏幕上。

第一處:定義文本文件類型變量,所以應(yīng)填:FILE *。

第二處:關(guān)閉剛寫入的文件,所以應(yīng)填:fclose(fp)。

第三處:從文件中讀出數(shù)據(jù),所以應(yīng)填:fp。

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

給定程序MODI1.C中函數(shù)fun的功能是: N名學生的學習成績,按從高到低的

順序找出前m(m10)名學生來, 并將這些學生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存

儲區(qū)中, 此存儲區(qū)的首地址作為函數(shù)值返回。

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

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

給定源程序:

#include

#include

#include

#define N 10

typedef struct ss

{ char num[10];

int s;

} STU;

STU *fun(STU a[], int m)

{ STU b[N], *t;

int i,j,k;

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

t=(STU *)calloc(sizeof(STU),m)

for(i=0; i

for(k=0; k

{ for(i=j=0; i

if(b[i].s > b[j].s) j=i;

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

 t(k)=b(j);

b[j].s=0;

}

return t;

}

outresult(STU a[], FILE *pf)

{ int i;

for(i=0; i

fprintf(pf,"No = %s Mark = %d\n", a[i].num,a[i].s);

fprintf(pf,"\n\n");

}

main()

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

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

STU *pOrder;

int i, m;

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

outresult(a, stdout);

printf("\nGive the number of the students who have better score: ");

scanf("%d",&m);

while( m>10 )

{ printf("\nGive the number of the students who have better score: ");

scanf("%d",&m);

}

pOrder=fun(a,m);

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

printf("The top :\n");

for(i=0; i

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

free(pOrder);

}

解題思路:

第一處: 語句最后缺少分號。

第二處: 應(yīng)該使用方括號,而不是圓括號。

像此類,使用編譯,即可發(fā)現(xiàn)。

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

請編寫函數(shù)fun, 函數(shù)的功能是: 刪去一維數(shù)組中所有相同的數(shù), 使之只剩一

個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

例如, 一維數(shù)組中的數(shù)據(jù)是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。

刪除后,數(shù)組中的內(nèi)容應(yīng)該是: 2 3 4 5 6 7 8 9 10。

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

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

你編寫的若干語句。

給定源程序:

#include

#define N 80

int fun(int a[], int n)

{

}

main()

{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;

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

for(i=0; in=fun(a,n);

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

for(i=0;i}

 

解題思路:

本題是刪除已排序過數(shù)組中的相同數(shù)。

1. 取出數(shù)組中的第1個數(shù)存放在臨時變量k中,再利用for循環(huán)來依次判斷所有的數(shù)。

2. 如果取出的數(shù)和k相比,如果不相同,則仍存放在原數(shù)組中,其中存放的位置由j來控制,

接著把這個數(shù)重新存入k。如果相同,則取下一數(shù)。

參考答案:

 

int fun(int a[], int n)

{

int i, j = 1, k = a[0] ;

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

if(k != a[i]) {

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

k = a[i] ;

}

a[j] = 0 ;

return j ;

}

 

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

06套:

給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值。當調(diào)用正

確時, 程序輸出:

x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000

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

果。

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

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

給定源程序:

#include

double f1(double x)

{ return x*x; }

double f2(double x, double y)

{ return x*y; }

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

__1__ fun(int i, double x, double y)

{ if (i==1)

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

return __2__(x);

else

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

return __3__(x, y);

}

main()

{ double x1=5, x2=3, r;

r = fun(1, x1, x2);

r += fun(2, x1, x2);

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

}

解題思路:

本題是根據(jù)給定的公式來計算函數(shù)的值。

第一處:程序中使用雙精度double類型進行計算,所以函數(shù)的返回值類型也為double,所

以應(yīng)填:double。

第二處:當i等于1時,則返回f1函數(shù)的值,所以應(yīng)填:f1

第三處:如果i不等于1,則返回f2函數(shù)的值,所以應(yīng)填:f2。

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

給定程序MODI1.C中函數(shù)fun的功能是: 比較兩個字符串,將長的那個字符串

的首地址作為函數(shù)值返回。

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

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

給定源程序:

#include

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

char fun(char *s, char *t)

{ int sl=0,tl=0; char *ss, *tt;

ss=s; tt=t;

while(*ss)

{ sl++;

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

(*ss)++;

}

while(*tt)

{ tl++;

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

(*tt)++;

}

if(tl>sl) return t;

else return s;

}

main()

{ char a[80],b[80],*p,*q; int i;

printf("\nEnter a string : "); gets(a);

printf("\nEnter a string again : "); gets(b);

printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b));

}

解題思路:

第一處: 試題要求返回字符串的首地址,所以應(yīng)改為:char *fun(char *s,char *t)

第二處: 取字符串指針ss的下一個位置,所以應(yīng)改為:ss++;。

第三處:取字符串指針tt的下一個位置,所以應(yīng)改為:tt++;。

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

請編寫函數(shù)fun,函數(shù)的功能是: 移動字符串中的內(nèi)容,移動的規(guī)則如下: 把第

1到第m個字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。

例如, 字符串中原有的內(nèi)容為: ABCDEFGHIJK, m的值為3, 則移動后, 字符串

中的內(nèi)容應(yīng)該是: DEFGHIJKABC。

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

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

你編寫的若干語句。

給定源程序:

#include

#include

#define N 80

void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個位置 */

{

int i; char t;

t=w[0];

for(i=0;i

w[i]=w[i+1];

w[strlen(w)-1]=t;

}

void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */

{

}

main()

{ char a[N]= "ABCDEFGHIJK";

int m;

printf("The original string:\n");puts(a);

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

fun(a,m);

printf("\nThe string after moving:\n");puts(a);

printf("\n\n");

NONO();

}

 

解題思路:

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

1. 由于函數(shù)fun1是將字符串中字符循環(huán)左移一個位置,并通過實參w返回循環(huán)左移一個位

置的字符串。

2. 利用循環(huán)for語句來操作多少個字符(m)需要循環(huán)左移。

參考答案:

 

 

void fun1(char *w) /* 本函數(shù)的功能是將字符串中字符循環(huán)左移一個位置 */

{

int i; char t;

t=w[0];

for(i=0;i

w[i]=w[i+1];

w[strlen(w)-1]=t;

}

void fun(char *w, int m) /* 可調(diào)用fun1函數(shù)左移字符 */

{

int i;

for(i = 0 ; i < m ; i++) fun1(w);

}

 

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

07套:

程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學生的信息。函

數(shù)fun的功能是輸出這位學生的信息。

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

果。

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

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

給定源程序:

 

 

#include

typedef struct

{ int num;

char name[9];

char sex;

struct { int year,month,day ;} birthday;

float score[3];

}STU;

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

void show(STU ___1___)

{ int i;

printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,

tt.birthday.year, tt.birthday.month, tt.birthday.day);

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

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

printf("%5.1f", ___2___);

printf("\n");

}

main( )

{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };

printf("\nA student data:\n");

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

show(___3___);

}

解題思路:

本題是利用結(jié)構(gòu)體變量存儲了一名學生的信息。

第一處:tt變量在函數(shù)體fun已經(jīng)使用,所以應(yīng)填:tt

第二處:利用循環(huán)分別輸出學生的成績數(shù)據(jù),所以應(yīng)填:tt.score[i]。

第三處:函數(shù)的調(diào)用,所以應(yīng)填:std

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

給定程序MODI1.C中函數(shù) fun 的功能是:求出數(shù)組中最大數(shù)和次最大數(shù),并

把最大數(shù)和a[0]中的數(shù)對調(diào)、次最大數(shù)和a[1]中的數(shù)對調(diào)。

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

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

給定源程序:

#include

#define N 20

int fun ( int * a, int n )

{ int i, m, t, k ;

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

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

m=0;

for(k=i+1;k

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

if(a[k]>a[m]) k=m;

t=a[i];a[i]=a[m];a[m]=t;

}

 

 

}

main( )

{ int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;

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

fun ( b, n );

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

}

解題思路:

第一處:外循環(huán)每循環(huán)一次,把當前位置i賦值給m,所以應(yīng)改為:m=i;。

第二處:通過內(nèi)循環(huán)來找出最大的一個數(shù)的位置k,所以應(yīng)改為:if(a[k]>a[m]) m=k;。

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

請編寫一個函數(shù) unsigned fun ( unsigned w )w 是一個大于10的無符

號整數(shù),若 w n (n 2)位的整數(shù),函數(shù)求出w的低 n-1位的數(shù)作為函數(shù)值返

回。

例如:w 值為 5923,則函數(shù)返回 923; w 值為 923 則函數(shù)返回 23

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

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

你編寫的若干語句。

給定源程序:

#include

unsigned fun ( unsigned w )

{

}

main( )

{ unsigned x;

printf ( "Enter a unsigned integer number : " ); scanf ( "%u", &x );

printf ( "The original data is : %u\n", x );

if ( x < 10 ) printf ("Data error !");

else printf ( "The result : %u\n", fun ( x ) );

NONO( );

}

 

解題思路:

本題是考察考生怎樣獲取一個符合要求的無符號整數(shù)。本題是應(yīng)用if條件語句首先判斷給

出的數(shù)是幾位數(shù),再模相應(yīng)的值,最后得出的余數(shù)就是結(jié)果。

參考答案:

unsigned fun ( unsigned w )

{

if(w>10000) w %= 10000 ;

else if(w>1000) w %= 1000 ;

else if(w>100) w %= 100 ;

else if(w>10) w %=10 ;

return w ;

}

 

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

08套:

給定程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學生的學號、

姓名和3門課的成績。函數(shù)fun的功能是將該學生的各科成績都乘以一個系數(shù)a。

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

果。

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

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

給定源程序:

#include

 

 

typedef struct

{ int num;

char name[9];

float score[3];

}STU;

void show(STU tt)

{ int i;

printf("%d %s : ",tt.num,tt.name);

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

printf("%5.1f",tt.score[i]);

printf("\n");

}

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

void modify(___1___ *ss,float a)

{ int i;

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

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

ss->___2___ *=a;

}

main( )

{ STU std={ 1,"Zhanghua",76.5,78.0,82.0 };

float a;

printf("\nThe original number and name and scores :\n");

show(std);

printf("\nInput a number : "); scanf("%f",&a);

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

modify(___3___,a);

printf("\nA result of modifying :\n");

show(std);

}

解題思路:

本題是利用結(jié)構(gòu)體存儲學生記錄并由實參ss返回。

第一處:實參ss是一個結(jié)構(gòu)型指針變量,所以應(yīng)填:STU。

第二處:該學生的各科成績都乘以一個系數(shù)a,所以應(yīng)填:score[i]。

第三處:函數(shù)的調(diào)用,由于函數(shù)定義時使用的指針結(jié)構(gòu)型變量,所以應(yīng)填:&std。

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

給定程序MODI1.C中函數(shù)fun的功能是:求k!k<13),所求階乘的值作為函

數(shù)值返回。例如:若k = 10,則應(yīng)輸出:3628800

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

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

給定源程序:

#include

long fun ( int k)

{

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

if k > 0

return (k*fun(k-1));

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

else if ( k=0 )

return 1L;

}

main()

{ int k = 10 ;

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

}

解題思路:

第一處:條件判斷缺少圓括號。

第二處:判斷相等的符號是==。

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

程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)

fun(int a[][N], int n),函數(shù)的功能是:使數(shù)組左下三角元素中的值乘以n 。

例如:若n的值為3a 數(shù)組中的值為

| 1 9 7 |                                  | 3   9   7 |

a = | 2 3 8 | 則返回主程序后a數(shù)組中的值應(yīng)為  | 6   9   8 |

| 4 5 6 |                                 | 12  15  18|

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

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

你編寫的若干語句。

給定源程序:

#include

#include

#define N 5

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

{

}

main ( )

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

printf("***** The array *****\n");

for ( i =0; i

{ for ( j =0; j

{ a[i][j] = rand(); printf( "M", a[i][j] ); }

printf("\n");

}

do n = rand() ; while ( n >=3 );

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

fun ( a, n );

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

for ( i =0; i

{ for ( j =0; j

printf("\n");

}

NONO( );

}

 

解題思路:

本題是利用兩重循環(huán)給二維數(shù)組左下三角元素中的值乘以n。

參考答案:

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

{

int i, j;

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

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

a[i][j] *= n ;

}

 

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

09套:

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

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

果。

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

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

給定源程序:

#include

#include

#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

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

outlist(head);

fun(head);

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

outlist(head);

}

解題思路:

本題是考察使用鏈表方法,使用兩重while循環(huán)語句,對鏈表的結(jié)點數(shù)據(jù)進行升序排列。

第一處:由于外循環(huán)變量使用p指針,內(nèi)循環(huán)變量使用q指針,所以q指向必須指向pnext

指針,因此應(yīng)填寫:p.next

第二處:判斷內(nèi)循環(huán)q指針是否結(jié)束,所以應(yīng)填:q。

第三處:外循環(huán)控制變量p指向自己的next指針,所以應(yīng)填:p.next

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

給定程序MODI1.C中函數(shù)fun的功能是: s所指字符串中的字母轉(zhuǎn)換為按字母

 

 

序列的后續(xù)字母(Z轉(zhuǎn)換為A, z轉(zhuǎn)換為a),其它字符不變。

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

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

給定源程序:

#include

#include

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("\n Enter a string with length < 80. :\n\n "); gets(s);

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

fun ( s );

printf ("\n\n The Cords :\n\n "); puts(s);

}

解題思路:

第一處: 使用while循環(huán)來判斷字符串指針s是否結(jié)束,所以應(yīng)改為:while(*s)。

第二處: 取字符串指針s的下一個位置,所以應(yīng)改為:s++;

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

請編寫函數(shù)fun, 函數(shù)的功能是: 移動一維數(shù)組中的內(nèi)容; 若數(shù)組中有n個整

數(shù), 要求把下標從0p(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。

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

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

你編寫的若干語句。

給定源程序:

#include

#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; iprintf("\n\nEnter p: ");scanf("%d",&p);

fun(a,p,n);

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

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

NONO();

}

 

解題思路:

本題是考察一維數(shù)組的操作。

1. 定義一維數(shù)組中間變量b,把n值后面數(shù)組中的內(nèi)容存入b中。

2. 再把m前的數(shù)組中的內(nèi)容存入b中。

3. 最后把數(shù)組b的內(nèi)容依次存放到w中。

參考答案:

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

{

int i, j = 0, b[N] ;

for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ;

for(i = 0 ; i <= p ; i++) b[j++] = w[i] ;

for(i = 0 ; i < n ; i++) w[i]= b[i] ;

}

 

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

10套:

給定程序中,函數(shù)fun的功能是:判定形參a所指的N×N(規(guī)定N為奇數(shù))的矩

陣是否是"幻方",若是,函數(shù)返回值為1; 不是,函數(shù)返回值為0。"幻方"的判定

條件是:矩陣每行、每列、主對角線及反對角線上元素之和都相等。

例如,以下3×3的矩陣就是一個"幻方"

4 9 2

3 5 7

8 1 6

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

果。

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

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

給定源程序:

#include

#define N 3

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

{ int i,j,m1,m2,row,colum;

m1=m2=0;

for(i=0; i

{ j=N-i-1; m1+=a[i][i]; m2+=a[i][j]; }

if(m1!=m2) return 0;

for(i=0; i

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

row=colum= __1__;

for(j=0; j

{ row+=a[i][j]; colum+=a[j][i]; }

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

if( (row!=colum) __2__ (row!=m1) ) return 0;

}

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

return __3__;

}

 

 

main()

{ int x[N][N],i,j;

printf("Enter number for array:\n");

for(i=0; i

for(j=0; j

printf("Array:\n");

for(i=0; i

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

}

if(fun(x)) printf("The Array is a magic square.\n");

else printf("The Array isn't a magic square.\n");

}

解題思路:

第一處:行列變量rowcolum的值初始化為0。

第二處:兩個條件只要有一個不滿足就返回0,所以應(yīng)填:||。

第三處:如果矩陣是“幻方”,則返回1。

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

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

   1     1          1

t = 1 - ----- - ----- - …… - -----

   2     3         m

例如,若主函數(shù)中輸入5,則應(yīng)輸出 -0.283333。

請改正函數(shù)fun中的錯誤或在橫線處填上適當?shù)膬?nèi)容并把橫線刪除, 使它能

計算出正確的結(jié)果。

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

給定源程序:

#include

double fun( int m )

{

double t = 1.0;

int i;

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

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

 ____________;

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

_______;

}

main()

{

int m ;

printf( "\nPlease enter 1 integer numbers:\n" );

scanf( "%d", &m);

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

}

解題思路:

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

t-=1.0/i

第二處:應(yīng)是返回公式的值,函數(shù)中公式的值是存放在臨時變量t中,所以應(yīng)填return t;

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

請編寫一個函數(shù),函數(shù)的功能是刪除字符串中的所有空格。

例如, 主函數(shù)中輸入"asd af aa z67", 則輸出為 "asdafaaz67"。

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

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

你編寫的若干語句。

給定源程序:

#include

#include

int fun(char *str)

{

}

main()

{

char str[81];

int n;

printf("Input a string:") ;

gets(str);

puts(str);

fun(str);

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

NONO();

}

 

解題思路:

本題是考察考生怎樣利用字符串指針來刪除字符串的空格字符。在函數(shù)開始處把指針p先指

向字符串str以及位置變量i0,然后采用while循環(huán)和字符串指針p來處理的,每循環(huán)一次來判

斷指針p所指的字符是否為空格,如果不是空格,則把該字符寫到str字符串中,位置由i來控制,

如果是空格,則不處理,繼續(xù)取下一字符,直至字符串結(jié)束為止,最后再把字符串結(jié)束符寫到位置為istr上,再通過形參str返回。

參考答案:

int fun(char *str)

{

char *p = str ;

int i = 0 ;

while(*p) {

if(*p != ' ') str[i++] = *p ;

p++ ;

}

str[i] = 0 ;

}