国产最新a级毛片无码专区_综合亚洲欧美日韩久久精品_日本成年片在线观看66_一本到九九av电影_一级毛片免费网站播放_国内精品久久人无码大片_国产人成视频99在线观看_欧美不卡在线一本二本_国产亚洲电影av_可以免费看黄色软件

知ing

二級C語言程序設(shè)計試題50套

NCRE研究組 編 / 高等教育出版社

Pluto. 上傳

查看本書

23套:?

給定程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的最大值,并按順序依次存放于形參b所指的一維數(shù)組中。?

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

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

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

給定源程序:?

?

#include?<stdio.h>?

#define?N?4?

void?fun(int?(*a)[N],?int?*b)?

{?int?i,j;?

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

/**********found**********/?

b[i]=?__1__;?

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

/**********found**********/?

if(b[i]?__2__?a[j][i])?b[i]=a[j][i];?

}?

}?

main()?

{?int?x[N][N]={?{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}?},y[N],i,j;?

printf("\nThe?matrix?:\n");?

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

{?for(j=0;j<N;?j++)?printf("%4d",x[i][j]);?

printf("\n");?

}?

/**********found**********/?

fun(__3__);?

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

for(i=0;?i<N;?i++)?printf("%3d",y[i]);?

printf("\n");?

}?

解題思路:?

第一處:把每列的第1值賦值給b[i],所以應(yīng)填:a[0][i]。?

第二處:如果b[i]值小于a[j][i]的值,則把a[j][i]重新賦值給b[i],保存最大的值,所以應(yīng)填:<。?

第三處:在主函數(shù)中,x是存放矩陣數(shù)據(jù),y是存放每列的最大值,所以應(yīng)填:x,y。?

***************************************************?

給定程序MODI1.C中函數(shù)fun的功能是:?交換主函數(shù)中兩個變量的值。例如:

若變量a中的值原為8,b中的值為3。程序運行后a中的值為3,?b中的值為8。?

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

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

給定源程序:?

#include?<stdio.h>?

/*********found**********/?

int?fun(int?x,int?y)?

{?

int?t;?

/*********found**********/?

t=x;x=y;y=t;?

}?

main()?

{?

int?a,b;?

?

a=8;b=3;?

fun(&a,&b);?

printf("%d,?%d\n",a,b);?

}?

解題思路:?

第一處:函數(shù)形參定義不正確,在定義第2個形參時,也應(yīng)加上int。由于通過該函數(shù)實現(xiàn)兩數(shù)交換,在C語言中,必須交換地址中的值,所以應(yīng)定義為int?*x,int?*y。?

第二處:要交換地址中的值,不能交換地址,必須指定地址中的值,因此應(yīng)改為t=*x;*x=*y;*y=t;。?

***************************************************?

編寫函數(shù)fun,?函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,?函數(shù)返回所求出的素數(shù)的個數(shù)。函數(shù)fun中給出的語句僅供參考。?

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

請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?

給定源程序:?

#include?<stdio.h>?

#define?MAX?100?

int?fun(int?lim,?int?aa[MAX])?

{?

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

int?i,j,k=0;?

/*?其中變量k用于統(tǒng)計素數(shù)個數(shù)?*/?

for(i=2;i<=lim;i++)?

{?

/*?以下完成判斷aa數(shù)組中小于或等于lim的素數(shù)并統(tǒng)計個數(shù)?*/?

}?

return?k;?

}?

main()?

{?

int?limit,?i,?sum;?

int?aa[MAX]?;?

printf("輸入一個整數(shù)");?

scanf("%d",?&limit);?

sum=fun(limit,?aa);?

for(i=0?;?i?<?sum?;?i++)?{?

if(i?%?10?==?0?&&?i?!=?0)?printf("\n")?;?

printf("%5d",?aa[i])?;?

}?

NONO();?

}?

解題思路:?

本題是考察考生如何判斷一個數(shù)是素數(shù),再求出所有小于lim數(shù)的素數(shù)并存入數(shù)組aa中保存,最后由形參aa返回,素數(shù)的個數(shù)由函數(shù)值返回。?

參考答案:?

int?fun(int?lim,?int?aa[MAX])?

{?

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

int?i,j,k=0;?

/*?其中變量k用于統(tǒng)計素數(shù)個數(shù)?*/?

for(i=2;i<=lim;i++)?

{?

/*?以下完成判斷aa數(shù)組中小于或等于lim的素數(shù)并統(tǒng)計個數(shù)?*/?

for(j?=?2?;?j?<=?(i/2)?;?j++)?

if(i?%?j?==?0)?break;?

if(j?>?(i/2))?aa[k++]?=?i;?

}?

return?k;?

}?

※※※※※※※※※※※※※※※※※※※※※※※※※?



24套:?

程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是將形參a中的數(shù)據(jù)進行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進行輸出。?

例如:傳給形參a的數(shù)據(jù)中,學(xué)號、姓名、和三門課的成績依次是:10001、?

"ZhangSan"95、8088,修改后的數(shù)據(jù)應(yīng)為:10002、"LiSi"96、81、89。?

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

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

struct?student?{?

long?sno;?

char?name[10];?

float?score[3];?

};?

/**********found**********/?

__1__?fun(struct?student?a)?

{?int?i;?

a.sno?=?10002;?

/**********found**********/?

strcpy(__2__,?"LiSi");?

/**********found**********/?

for?(i=0;?i<3;?i++)?__3__+=?1;?

return?a;?

}?

main()?

{?struct?student?s={10001,"ZhangSan",?95,?80,?88},?t;?

int?i;?

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

printf("\nNo:?%ld?Name:?%s\nScores:?",s.sno,?s.name);?

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

printf("\n");?

t?=?fun(s);?

printf("\nThe?data?after?modified?:\n");?

?

printf("\nNo:?%ld?Name:?%s\nScores:?",t.sno,?t.name);?

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

printf("\n");?

}?

解題思路:?

本題是對結(jié)構(gòu)體變量中的值進行修改并通過函數(shù)值返回。?

第一處:必須定義結(jié)構(gòu)返回類型,所以應(yīng)填:struct?student。?

第二處:對姓名進行修改,所以應(yīng)填:a.name。?

第三處:分別對成績增加1分,所以應(yīng)填:a.score[i]。?

***************************************************?

假定整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。給定程序MODI1.C中函數(shù)fun?的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個數(shù)。?

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

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

給定源程序:?

#include?<stdio.h>?

#define?N?20?

fun(int?*a,int?n,int?x)?

{?int?p=0,i;?

a[n]=x;?

while(?x!=a[p]?)?

\TAB?p=p+1;?

/**********found**********/?

if(P==n)?return?-1;?

else?

{?for(i=p;i<n;i++)?

/**********found**********/?

\TAB?a[i+1]=a[i];?

return?n-1;?

}?

}?

main()?

{?int?w[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;?

n=10;?

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

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

printf("\nInput?x?(to?delete):?");?scanf("%d",&x);?

printf("Delete?:?%d\n",x);?

n=fun(w,n,x);?

if?(?n==-1?)?printf("***Not?be?found!***\n\n");?

else?

{?printf("The?data?after?deleted:\n");?

for(i=0;i<n;i++)?printf("%5d",w[i]);printf("\n\n");?

}?

}?

解題思路:?

第一處:?條件語句中的小寫p錯寫成大寫P了。?

?

第二處:?刪除元素,應(yīng)該是后面位置的元素值賦值給前面的位置上,所以應(yīng)改為:?

a[i]=a[i+1];。?

***************************************************?

學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s,?請編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,注意:分?jǐn)?shù)最低的學(xué)生可能不止一個,函數(shù)返回分?jǐn)?shù)最低的學(xué)生的人數(shù)。?

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

請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?

給定源程序:?

#include?<stdio.h>?

#define?N?16?

typedef?struct?

{?char?num[10];?

int?s;?

}?STREC;?

int?fun(?STREC?*a,?STREC?*b?)?

{?

}?

main()?

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

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

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

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

STREC?h[N];?

int?i,n;FILE?*out?;?

n=fun(?s,h?);?

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

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

printf("%s?%4d\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<n;?i++)?

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

fclose(out);?

}?

解題思路:?

本題是把符合條件的學(xué)生記錄存入到另一個結(jié)構(gòu)體,人數(shù)通過函數(shù)返回,記錄由實參b返回。?

1.?符合條件的學(xué)生人數(shù)存在變量j(初始值為0)中,最后返回其值。?

2.?利用for循環(huán)語句,依次判斷是否符合條件,如果成績相等,則把記錄存入b中,人數(shù)j?1;如果當(dāng)前成績a[i].s小于最低成績min,那么人數(shù)重新初始化為0,把當(dāng)前成績存入最低成績中,人數(shù)j1。?

3.?直至循環(huán)結(jié)束為止。?

參考答案:?

int?fun(?STREC?*a,?STREC?*b?)?

{?

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

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

if(min?>?a[i].s)?{?

j?=?0?;?b[j++]?=?a[i]?;?min?=?a[i].s?;?

}?

else?if(min?==?a[i].s)?

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

}?

return?j?;?

}?

※※※※※※※※※※※※※※※※※※※※※※※※※?




25套:?

人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號唯一。函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回數(shù)據(jù)中的編號為空串。?

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

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#define?N?8?

?

typedef?struct?

{?char?num[10];?

int?year,month,day?;?

}STU;?

/**********found**********/?

___1___?fun(STU?*std,?char?*num)?

{?int?i;?STU?a={"",9999,99,99};?

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

/**********found**********/?

if(?strcmp(___2___,num)==0?)?

/**********found**********/?

return?(___3___);?

return?a;?

}?

main()?

{?STU?std[N]={?{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},?

{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},?

{"777777",1983,6,22},{"888888",1984,8,19}};?

STU?p;?char?n[10]="666666";?

p=fun(std,n);?

if(p.num[0]==0)?

printf("\nNot?found?!\n");?

else?

{?printf("\nSucceed?!\n?");?

printf("%s?%d-%d-%d\n",p.num,p.year,p.month,p.day);?

}?

}?

解題思路:?

本題是要求從給定的人員數(shù)據(jù)中找出編號相同的記錄數(shù)據(jù)。?

第一處:從返回值來看,是返回一個結(jié)構(gòu)型的值,所以應(yīng)填:STU。?

第二處:判斷結(jié)構(gòu)變量中的編號num是否相等,所以應(yīng)填:stu[i].num。?

第三處:返回編號相等的記錄值,所以應(yīng)填:std[i]。?

***************************************************?

給定程序MODI1.C中函數(shù)fun的功能是:從s所指字符串中,找出與t所指字符串相同的子串的個數(shù)作為函數(shù)值返回。?

例如,當(dāng)s所指字符串中的內(nèi)容為:"abcdabfab"t所指字符串的內(nèi)容為:?"ab",則函數(shù)返回整數(shù)3。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

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

{?

int?n;?char?*p?,?*r;?

n?=?0;?

while?(?*s?)?

?

{?p?=?s;?r?=?t;?

while?(?*r?)?

if?(?*r?==?*p?)?{?

/************found************/?

r++;?p++?

}?

else?break;?

/************found************/?

if?(?r?==?'\0'?)?

n++;?

s++;?

}?

return?n;?

}?

main()?

{?

char?s[100],?t[100];?int?m;?

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

printf("\nPlease?enter?substring?t:");?scanf("%s",?t);?

m?=?fun(?s,?t);?

printf("\nThe?result?is:?m?=?%d\n",?m);?

}?

解題思路:?

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

第二處:判斷r的當(dāng)前字符是否是字符串結(jié)束符,所以應(yīng)改為:if(*r==0)。?

***************************************************?

函數(shù)fun的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。?

例如,若s所指字符串中的內(nèi)容為:"ABCDEFG12345",其中字符BASCII碼值為偶數(shù)、…、字符2ASCII碼值為偶數(shù)、…?都應(yīng)當(dāng)刪除,其它依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"ACEG135"。?

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

請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

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

?

}?

解題思路:?

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

參考答案:?

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

{?

int?i,?j?=?0?;?

for(i?=?0?;?i?<?strlen(s);?i++)?if(s[i]?%?2)?t[j++]?=?s[i]?;?

t[j]?=?0?;?

}?

※※※※※※※※※※※※※※※※※※※※※※※※※?



查看更多