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

知ing

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

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

Pluto. 上傳

查看本書

45套:?

函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]a[2]、……中,把奇數(shù)從數(shù)組中刪除,偶數(shù)個數(shù)通過函數(shù)值返回。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:91、42、36、58、7,刪除奇數(shù)后a所指數(shù)組中的數(shù)據(jù)為:42、6、8,返回值為4。?

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

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

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

給定源程序:?

#include?<stdio.h>?

#define?N?9?

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

{?int?i,j;?

j?=?0;?

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

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

if?(___1___==?0)?{?

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

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

}?

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

return?___3___;?

}?

main()?

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

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

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

printf("\n");?

n?=?fun(b,?N);?

printf("\nThe?number?of?even?%d\n",?n);?

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

?

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

printf("\n");?

}?

解題思路:?

第一處:判斷a[i]是否是偶數(shù),若是,則仍保留在原數(shù)組中a[j],所以應(yīng)填:a[i]?%?2。?

第二處:數(shù)組a中的元素位置由j來控制,每增加一個元素,則j1,所以應(yīng)填:a[j]。?

第三處:返回刪除奇數(shù)后a所指數(shù)組中數(shù)據(jù)的元素j,所以應(yīng)填:j。?

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

給定程序MODI1.C中函數(shù)fun的功能是:按以下遞歸公式求函數(shù)值。?

┌????10?(n=1)?

fun(n)=┥?

└????fun(n-1)+2?(n>1)?

例如,當(dāng)給n輸入5時,函數(shù)值為18;當(dāng)給n輸入3時,函數(shù)值為14。?

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

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

給定源程序:?

#include?<stdio.h>?

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

fun?(?n?)?

{?int?c;?

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

if(n=1)?

c?=?10?;?

else?

c=?fun(n-1)+2;?

return(c);?

}?

main()?

{?int?n;?

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

printf("The?result?:?%d\n\n",?fun(n));?

}?

解題思路:?

第一處:形參n沒有定義類型,所以應(yīng)改為:fun?(int?n)。?

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

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

假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:使字?符串中尾部的*號不得多于n;若多于n個,則刪除多余的*;若少于或等于n個,則什么也不做,?字符串中間和前面的*號不刪除。?

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

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

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

給定源程序:?

#include?<stdio.h>?

void?fun(?char?*a,int?n?)?

{?

}?

main()?

{?char?s[81];?int?n;?

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

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

fun(?s,n?);?

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

NONO();?

}?

解題思路:?

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

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

2.?找出字符串最右邊字母后出現(xiàn)'*'的第1位置。?

3.?使用while循環(huán)來處理右邊'*'是否大于n個,若大于,則取n'*'。?

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

參考答案:?

void?fun(?char?*a,int?n?)?

{?

char?*p=a?;?

int?j=0;?

while(*p)?p++;?p--;?/*?字符串的長度?*/?

while(*p?==?'*')?p--;?/*?字符串右的'*'?*/?

p++;?

while(j<n?&&?*p)?{?

p++?;?

j++;?

}?

*p?=?0?;?

?

}?

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



46套:?

給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串?dāng)?shù)組中的字符串按由長到短的順序排序,并輸出排序結(jié)果。ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。?

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

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#define?N?5?

#define?M?8?

void?fun(char?(*ss)[M])?

{?char?*ps[N],*tp;?int?i,j,k;?

for(i=0;?i<N;?i++)?ps[i]=ss[i];?

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

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

k=?__1__?;?

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

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

if(strlen(ps[k])?<?strlen(__2__)?)?k=j;?

?

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

tp=ps[i];?ps[i]=ps[k];?ps[k]=?__3__?;?

}?

printf("\nThe?string?after?sorting?by?length:\n\n");?

for(i=0;?i<N;?i++)?puts(ps[i]);?

}?

main()?

{?char?ch[N][M]={"red","green","blue","yellow","black"};?

int?i;?

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

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

fun(ch);?

}?

解題思路:?

本題是按字符串的長短進(jìn)行排序。?

第一處:外循環(huán)每循環(huán)一次,k應(yīng)保存當(dāng)前的i值,所以應(yīng)填:i。?

第二處:使用內(nèi)循環(huán)對i+1后面的字符串長度進(jìn)行比較,所以應(yīng)填:ps[j]。?

第三處:交換內(nèi)容,所以應(yīng)填:tp。?

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

已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODI1.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。?

例如,當(dāng)n10時,程序的輸出結(jié)果應(yīng)為:23.197745。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<math.h>?

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

fun(int?n)?

{?double?sum,?s0,?s1,?s2,?s;?int?k;?

sum?=?1.0;?

if?(n?<=?2)?sum?=?0.0;?

s0?=?0.0;?s1?=?0.0;?s2?=?1.0;?

for?(k?=?4;?k?<=?n;?k++)?

{?s?=?s0?+?s1?+?s2;?

sum?+=?sqrt(s);?

s0?=?s1;?s1?=?s2;?s2?=?s;?

}?

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

return?sum?

}?

main?(?)?

{?int?n;?

printf("Input?N=");?

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

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

?

}?

解題思路:?

第一處:由于函數(shù)返回是實數(shù),所以必須定義返回的類型,只有整型或無結(jié)果返回可以忽略,其他必須定義返回的類型,所以要在此行前加上doublefloat。?

第二處:該行缺少分號。?

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

編寫函數(shù)fun,它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。?

例如,當(dāng)n?=?10,x0.3時,函數(shù)值為1.349859。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<math.h>?

double?fun(double?x?,?int?n)?

{?

}?

main()?

{?

printf("%f\n",?fun(0.3,10));?

NONO();?

}?

解題思路:?

本題是根據(jù)給定的公式計算結(jié)果。使用for循環(huán)語句依次求出每一項的值,分別進(jìn)行累加并把結(jié)果存入變量s中,最后把s作為函數(shù)值返回。其中,jc函數(shù)是計算階乘的。?

參考答案:?

#include?<stdio.h>?

#include?<math.h>?

long?jc(int?n)?

?

{?

long?s?=?1?;?

int?i?;?

for(i?=?1?;?i?<=?n?;?i++)?s?*=?i?;?

return?s?;?

}?

double?fun(double?x?,?int?n)?

{?

double?s?=?1.0,?y?=?x?;?

int?i?;?

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

s?+=?y?/?(double)jc(i)?;?

y?*=?x?;?

}?

return?s?;?

}?

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



47套:?

給定程序中,函數(shù)fun的功能是:找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計出其出現(xiàn)的次數(shù)。?

例如,形參s所指的字符串為:abcAbsmaxless,程序執(zhí)行后的輸出結(jié)果為:?

letter?'a'?:?3?times?

letter?'s'?:?3?times?

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

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#include?<ctype.h>?

void?fun(char?*s)?

{?int?k[26]={0},n,i,max=0;?char?ch;?

while(*s)?

{?if(?isalpha(*s)?)?{?

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

ch=tolower(__1__);?

n=ch-'a';?

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

k[n]+=?__2__?;?

}?

s++;?

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

if(max<k[n])?max=?__3__?;?

}?

printf("\nAfter?count?:\n");?

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

if?(k[i]==max)?printf("\nletter?\'%c\'?:?%d?times\n",i+'a',k[i]);?

}?

main()?

{?char?s[81];?

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

fun(s);?

}?

解題思路:?

本題是找出字符串中出現(xiàn)頻率最高的字母并統(tǒng)計出其次數(shù)。?

第一處:將當(dāng)前字母轉(zhuǎn)換為小寫字母,所以應(yīng)填:*s。?

第二處:把該字母出現(xiàn)的個數(shù)累加到指定的數(shù)組中,所以應(yīng)填:1。?

第三處:如果當(dāng)前該字母出現(xiàn)次數(shù)大于最大次數(shù)max,那么把該次數(shù)賦值給max,所以應(yīng)填:?k[n]。?

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

給定程序MODI1.C中函數(shù)?fun?的功能是:求S的值。?

例如,當(dāng)k10時,函數(shù)值應(yīng)為:1.533852。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<math.h>?

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

void?fun(?int?k?)?

{?int?n;?float?s,?w,?p,?q;?

?

n?=?1;?

s?=?1.0;?

while?(?n?<=?k?)?

{?w?=?2.0?*?n;?

p?=?w?-?1.0;?

q?=?w?+?1.0;?

s?=?s?*?w?*w/p/q;?

n++;?

}?

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

return?s?

}?

main?(?)?

{?

printf("%f\n",?fun?(10));?

}?

解題思路:?

第一處:由于函數(shù)返回是實數(shù),所以必須定義返回的類型,只有整型或無結(jié)果返回可以忽略,其他必須定義返回的類型,所以要在此行前加上doublefloat。?

第二處:缺少分號。?

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

編寫函數(shù)fun,它的功能是:計算并輸出下列級數(shù)和:?1?1?1?

S?=?──?+?──?+?…?+?───?

1×2?2×3?n(n+1)?

例如,當(dāng)n?=?10時,函數(shù)值為:0.909091。?

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

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

給定源程序:?

#include?<stdio.h>?

double?fun(?int?n?)?

{?

}?

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

{?

printf("%f\n",?fun(10));?

NONO();?

}?

解題思路:?

本題是根據(jù)公式計算結(jié)果。使用for循環(huán)語句進(jìn)行計算。但要注意的是:在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),所以所除的結(jié)果也是整數(shù),因此1應(yīng)取實數(shù)或進(jìn)行實型的類型轉(zhuǎn)換。?

參考答案:?

double?fun(?int?n?)?

{?

double?s?=?0.0?;?

int?i?;?

for(i?=?1?;?i?<=?n?;?i++)?s?=?s?+?1.0?/?(i?*?(i?+?1))?;?

return?s?;?

}?

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



查看更多