精品午夜福利中文字av_国产成人综合网_av毛片免费观看网站_欧美影视国产综合_野花香视频中文免费观看_亚洲无码要在线视频_又粗又大又用力大交换好大好爽小静_欧美贵妇v办公室高跟鞋_亚洲国产高清a∨网站_免费中文少妇亚洲

知ing

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

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

Pluto. 上傳

查看本書

41套:?

給定程序中,函數(shù)fun的功能是:計算x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有?數(shù)均為正數(shù)),平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出。?例如,有10個正數(shù):46?30?32?40?6?17?45?15?48?26,平均值為:?30.500000?

主函數(shù)中輸出:m=30.0?

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

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

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

給定源程序:?

#include?<stdlib.h>?

#define?N?10?

double?fun(double?x[],double?*av)?

{?int?i,j;?double?d,s;?

s=0;?

for(i=0;?i<N;?i++)?s?=?s?+x[i];?

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

__1__=s/N;?

d=32767;?

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

if(x[i]<*av?&&?*av?-?x[i]<=d){?

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

d=*av-x[i];?j=__2__;}?

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

return?__3__;?

}?

main()?

{?int?i;?double?x[N],av,m;?

for(i=0;?i<N;?i++){?x[i]=rand()%50;?printf("%4.0f?",x[i]);}?

printf("\n");?

m=fun(x,&av);?

printf("\nThe?average?is:?%f\n",av);?

printf("m=%5.1f?",m);?

printf("\n");?

}?

解題思路:?

第一處:計算好的平均值通過形參av返回,所以應(yīng)填:*av。?

第二處:計算小于平均值且最接近平均值的位置j,所以應(yīng)填:i。?

第三處:返回該數(shù),所以應(yīng)填:x[j]。?

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

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

例如,若?n=10,則應(yīng)輸出:?0.617977。?

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

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

給定源程序:?

#include?<stdio.h>?

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

int?fun?(?int?n?)?

{?float?A=1;?int?i;?

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

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

A?=?1.0/(1+A);?

return?A?;?

}?

main(?)?

{?int?n?;?

printf("\nPlease?enter?n:?")?;?

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

printf("A%d=%f\n",?n,?fun(n)?)?;?

}?

解題思路:?

第一處函數(shù)的返回是浮點型數(shù),所以應(yīng)改為float?fun(int?n)。?

第二處:for的終止條件應(yīng)是i<=n。?

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

程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun,函數(shù)的功能是:使數(shù)組右上三角元素中的值乘以m?。?

例如:若m的值為2,a?數(shù)組中的值為?|?1?9?7?|??|?2?18?14|??|?2?3?8?|?則返回主程序后a數(shù)組中的值應(yīng)為?|?2?6?16|??|?4?5?6?|??|?4?5?12|?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<stdlib.h>?

#define?N?5?

int?fun?(?int?a[][N],?int?m?)?

{?

}?

?

main?(?)?

{?int?a[N][N],?m,?i,?j;?

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

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

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

{?a[i][j]?=?rand()%20;?printf(?"%4d",?a[i][j]?);?}?

printf("\n");?

}?

do?m?=?rand()%10?;?while?(?m>=3?);?

printf("m?=?%4d\n",m);?

fun?(?a?,m?);?

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

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

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

printf("\n");?

}?

NONO?(?);?

}?

解題思路:?

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

參考答案:?

int?fun?(?int?a[][N],?int?m?)?

{?

int?i,?j;?

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

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

?

a[i][j]?*=?m?;?

}?

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




42套:?

給定程序中,函數(shù)fun的功能是:?s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,并保持數(shù)字字符串和非數(shù)字字符串原有的先后次序。例如,形參s所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:defadhkjsdf3537。?

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

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

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

給定源程序:?

#include?<stdio.h>?

void?fun(char?*s)?

{?int?i,?j=0,?k=0;?char?t1[80],?t2[80];?

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

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

{?

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

t2[j]=s[i];?___1___;?

}?

else?t1[k++]=s[i];?

t2[j]=0;?t1[k]=0;?

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

for(i=0;?i<k;?i++)?___2___;?

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

for(i=0;?i<___3___;?i++)?s[k+i]=t2[i];?

}?

main()?

{?char?s[80]="ba3a54j7sd567sdffs";?

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

fun(s);?

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

}?

解題思路:?

t2是存放數(shù)字字符串,t1是存放非數(shù)字字符串。?

第一處:t2存放數(shù)字字符串的位置是由j來控制的,每添加一個,j必須加1,所以應(yīng)填:j++。?

第二處:利用for循環(huán)把t1字符串添加到原字符串s中,所以應(yīng)填:s[i]=t1[i]。?

第三處:利用for循環(huán)把t2字符串添加到原字符串s的尾部,其中數(shù)字字符串的長度為j,所以應(yīng)填:j。?

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

給定程序MODI1.C中函數(shù)?fun?的功能是:用冒泡法對6個字符串按由小到大的順序進行排序。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#define?MAXLINE?20?

fun?(?char?*pstr[6])?

{?int?i,?j?;?

char?*p?;?

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

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

for?(j?=?i?+?1,?j?<?6,?j++)?

{?

if(strcmp(*(pstr?+?i),?*(pstr?+?j))?>?0)?

{?

?

p?=?*(pstr?+?i)?;?

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

*(pstr?+?i)?=?pstr?+?j?;?

*(pstr?+?j)?=?p?;?

}?

}?

}?

}?

main(?)?

{?int?i?;?

char?*pstr[6],?str[6][MAXLINE]?;?

for(i?=?0;?i?<?6?;?i++)?pstr[i]?=?str[i]?;?

printf(?"\nEnter?6?string(1?string?at?each?line):?\n"?)?;?

for(i?=?0?;?i?<?6?;?i++)?scanf("%s",?pstr[i])?;?

fun(pstr)?;?

printf("The?strings?after?sorting:\n")?;?

for(i?=?0?;?i?<?6?;?i++)?printf("%s\n",?pstr[i])?;?

}?

解題思路:?

第一處:for循環(huán)語句中缺少分號。?

第二處:應(yīng)該把pstr+j位置上的值賦值給*(pstr+i)上,所以應(yīng)改為:?

*(pstr+i)=*(pstr+j);。?

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

請編寫函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。?

例如,若輸入字符串:?123412132,輸入字符為:?1,則輸出:3。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#define?M?81?

int?fun(char?*ss,?char?c)?

{?

}?

main()?

{?char?a[M],?ch;?

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

printf("\nPlease?enter?a?char:");?ch?=?getchar();?

printf("\nThe?number?of?the?char?is:?%d\n",?fun(a,?ch));?

NONO?(?);?

}?

?

解題思路:?

本題是考察考生怎樣從字符串中找出指定字符的個數(shù)。使用while循環(huán)語句來字符串是否結(jié)束,如果沒有結(jié)束,則判斷當(dāng)前字符是否是指定的字符,如果是指定的字符,則個數(shù)cnt1,直至字符串結(jié)束為止,最后由函數(shù)返回。?

參考答案:?

int?fun(char?*ss,?char?c)?

{?

int?cnt?=?0?;?

char?*p?=?ss?;?

while(*p)?{?

if(*p?==?c)?cnt++?;?

p++?;?

}?

return?cnt?;?

}?

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




43套:?

給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中查找與形參t所指字符串相同的串,找到后返回該串在字符串?dāng)?shù)組中的位置(下標(biāo)值),未找到則返回-1。ss所指字符串?dāng)?shù)組中共有N個內(nèi)容不同的字符串,且串長小于M。?

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

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#define?N?5?

#define?M?8?

int?fun(char?(*ss)[M],char?*t)?

{?int?i;?

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

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

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

if(strcmp(ss[i],t)==0?)?return?__2__?;?

return?-1;?

}?

main()?

{?char?ch[N][M]={"if","while","switch","int","for"},t[M];?

int?n,i;?

printf("\nThe?original?string\n\n");?

for(i=0;i<N;i++)puts(ch[i]);?printf("\n");?

printf("\nEnter?a?string?for?search:?");?gets(t);?

n=fun(ch,t);?

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

if(n==?__3__)?printf("\nDon't?found!\n");?

else?printf("\nThe?position?is?%d?.\n",n);?

}?

解題思路:?

本題是考察在字符串查找指定的子串。?

第一處:利用for循環(huán),從幾個字符串中進行查找,程序中已經(jīng)給定了N個字符串,所以應(yīng)填:N。?

第二處:在字符串已經(jīng)找到,則返回字符串?dāng)?shù)組中的位置(下標(biāo)值),所以應(yīng)填:i。?

第三處:如果沒有發(fā)現(xiàn),則顯示沒有找到信息,所以應(yīng)填:-1。?

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

給定程序MODI1.C中函數(shù)fun的功能是:從整數(shù)155之間,選出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中a1放個位數(shù),a2放十位數(shù)。?

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

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

給定源程序:?

#include?<stdio.h>?

fun(?int?*b?)?

{?int?k,a1,a2,i=0;?

for(k=10;?k<=55;?k++)?{?

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

a2=k/1O;?

a1=k-a2*10;?

if((k%3==0?&&?a2==5)||(k%3==0?&&?a1==5))?

{?b[i]=k;?i++;?}?

}?

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

return?k;?

}?

main(?)?

{?int?a[100],k,m;?

m=fun(?a?);?

printf("The?result?is?:\n");?

for(k=0;?k<m;?k++)?printf("%4d",a[k]);?printf("\n");?

}?

解題思路:?

第一處:?取當(dāng)前變量k的十位數(shù)字上的數(shù),所以應(yīng)改為:a2=k/10;。?

第二處:?要求統(tǒng)計個數(shù)并存入變量i中,最后返回i,所以應(yīng)改為:return?i;。?

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

假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。?

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。?

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

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

給定源程序:?

#include?<stdio.h>?

void?fun(?char?*a?)?

{?

}?

main()?

{?char?s[81];?

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

fun(?s?);?

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

NONO();?

?

}?

解題思路:?

本題是考察字符串的移動。?

1.?使用while循環(huán)語句和字符串指針p掃描出尾部的*號。?

2.?定義兩個字符串中間變量st,其中s是存放*號后面的字符串,t是存放*號字符串。?

3.?最后利用字符串拷貝和連接,重新組成字符串a。?

參考答案:?

void?fun(?char?*a?)?

{?

char?*p?=?a?;?

while(*p)?p++?;?p--?;?

while(*p?==?'*')?p--?;?

p++?;?

*p?=?0?;?

}?

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



44套:?

函數(shù)fun的功能是進行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符'0''9',?'0'轉(zhuǎn)換成'9','1'轉(zhuǎn)換成'8','2'轉(zhuǎn)換成'7',……,'9'轉(zhuǎn)換成'0';若是其它字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。?

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

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

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

給定源程序:?

#include?<stdio.h>?

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

___1___?fun(char?ch)?

{?

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

if?(ch>='0'?&&?___2___)?

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

return?'9'-?(ch-___3___);?

return?ch?;?

}?

main()?

{?char?c1,?c2;?

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

c1='2';?c2?=?fun(c1);?

printf("c1=%c?c2=%c\n",?c1,?c2);?

c1='8';?c2?=?fun(c1);?

printf("c1=%c?c2=%c\n",?c1,?c2);?

c1='a';?c2?=?fun(c1);?

printf("c1=%c?c2=%c\n",?c1,?c2);?

}?

解題思路:?

第一處:要求返回處理好的字符,所以應(yīng)填:char。?

第二處:判斷該字符是否是數(shù)字,所以應(yīng)填:ch<='9'。?

第三處:只要減去'0'ASCII值,即可得到要求的結(jié)果,所以應(yīng)填:'0'。?

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

給定程序MODI1.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b?中,要求每復(fù)制三個字符之后插入一個空格。?

例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,?

調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABC?DEF?GHI?JK。?

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

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

給定源程序:?

#include?<stdio.h>?

?

void?fun(char?*p,?char?*b)?

{?int?i,?k=0;?

while(*p)?

{?i=1;?

while(?i<=3?&&?*p?)?{?

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

b[k]=p;?

k++;?p++;?i++;?

}?

if(*p)?

{?

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

b[k++]="?";?

}?

}?

b[k]='\0';?

}?

main()?

{?char?a[80],b[80];?

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

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

fun(a,b);?

printf("\nThe?string?after?insert?space:?");?puts(b);?printf("\n\n");?

}?

解題思路:?

第一處:把指針p所指的值賦值給b[k]中。?

第二處:把空格字符賦值給b[k++]中,而不是一個空格的字符串。?

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

N名學(xué)生的成績已在主函數(shù)中放入一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點。請編寫函數(shù)fun,它的功能是:求出平均分,由函數(shù)值返回。?

例如,若學(xué)生的成績是:85,7669,8591,7264,87,?則平均分應(yīng)當(dāng)是:78.625。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<stdlib.h>?

#define?N?8?

struct?slist?

{?double?s;?

struct?slist?*next;?

};?

typedef?struct?slist?STREC;?

double?fun(?STREC?*h?)?

{?

}?

?

STREC?*?creat(?double?*s)?

{?STREC?*h,*p,*q;?int?i=0;?

h=p=(STREC*)malloc(sizeof(STREC));p->s=0;?

while(i<N)?

{?q=(STREC*)malloc(sizeof(STREC));?

q->s=s[i];?i++;?p->next=q;?p=q;?

}?

p->next=0;?

return?h;?

}?

outlist(?STREC?*h)?

{?STREC?*p;?

p=h->next;?printf("head");?

do?

{?printf("->%4.1f",p->s);p=p->next;}?

while(p!=0);?

printf("\n\n");?

}?

main()?

{?double?s[N]={85,76,69,85,91,72,64,87},ave;?

STREC?*h;?

h=creat(?s?);?outlist(h);?

ave=fun(?h?);?

printf("ave=?%6.3f\n",ave);?

NONO();?

}?

解題思路:?

本題是計算鏈表結(jié)構(gòu)中成績的平均分。具體操作請看答案程序中的說明。?

參考答案:?

#include?<stdio.h>?

#include?<stdlib.h>?

double?fun(?STREC?*h?)?

{?

STREC?*p=h->next;?/*?由于頭結(jié)點中沒有存放數(shù)據(jù)?*/?

double?av=0.0;?/*?對計算成績平均值的變量進行初始化?*/?

int?n?=?0?;?

while(p!=NULL)?{?/*?判斷鏈表是否結(jié)束?*/?

av?=?av?+?p->s?;?/*?對成績進行累加?*/?

p=p->next;?/*?到下一個結(jié)點位置?*/?

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

}?

av?/=?n?;?/*?計算成績平均值?*/?

return?av?;?/*?返回成績平均值?*/?

}?

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



查看更多