荷甲直播免费观看直播在线_丰满的继牳3中文字幕系列免费_久久婷婷激情精品综合_有码 无码 中文字幕 丝袜_国内外成人激情视频_亚洲乱码中文字幕234_韩国理论福利片午夜_亚洲一区二区三区高清精油按摩_日本韩国欧美三级在线_在线Ⅴ片免费观看视频

知ing

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

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

Pluto. 上傳

查看本書

48套:?

給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。?

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

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

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

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

給定源程序:?

#include?<stdio.h>?

#include?<string.h>?

#include?<ctype.h>?

int?fun(char?*s)?

{?int?sum=0;?

while(*s)?{?

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

if(?isdigit(*s)?)?sum+=?*s-?__1__?;?

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

__2__;?

}?

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

return?__3__?;?

}?

main()?

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

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

n=fun(s);?

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

}?

解題思路:?

本題是把字符串中是數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值并進(jìn)行累加。?

第一處:'0'字符對(duì)應(yīng)的ASCII值是48,因此數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)數(shù)值時(shí)只要減去48,即是該數(shù)字字符對(duì)應(yīng)的數(shù)值,所以應(yīng)填:48。?

第二處:到字符串下一個(gè)位置,所以應(yīng)填:s++。?

第三處:返回累加和sum,所以應(yīng)填:sum。?

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

給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算小于形參k的最大的10個(gè)能被1317整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。?

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

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

給定源程序:?

#include?<stdio.h>?

int?fun(?int?k?)?

{?int?m=0,?mc=0,?j?;?

while?((k?>=?2)?&&?(mc?<?10))?

{?

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

if?((k%13?=?0)?||?(k%17?=?0))?

{?m?=?m+?k;?mc++;?}?

k--;?

}?

return?m;?

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

?

_____?

main?(?)?

{?

printf("%d\n",?fun?(500));?

}?

解題思路:?

第一處:判斷相等的條件是==,而不是=,所以只能在比較處再添加一個(gè)=。?

第二處:經(jīng)過編譯可知,"{""}"沒有配對(duì),所以在橫線處加上"}"。?

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

編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被37整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。?

例如若n1000時(shí),程序輸出應(yīng)為:s?=?153.909064。?

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

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

給定源程序:?

#include?<math.h>?

#include?<stdio.h>?

double?fun(?int?n)?

{?

}?

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

{?

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

NONO();?

}?

解題思路:?

本題是求小于形參n同時(shí)能被37整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。?

參考答案:?

double?fun(?int?n)?

?

{?

double?sum=0.0;?

int?i;?

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

if((i?%?3==0)?&&?(i?%?7==0))?sum+=i;?

return?sqrt(sum)?;?

}?

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



49套:?

給定程序中,函數(shù)fun的功能是:將形參s所指字符串中所有ASCII碼值小于97?的字符存入形參t所指字符數(shù)組中,形成一個(gè)新串,并統(tǒng)計(jì)出符合條件的字符個(gè)數(shù)作為函數(shù)值返回。?

例如,形參s所指的字符串為:Abc@1x56*,程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:A@156*。?

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

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

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

給定源程序:?

#include?<stdio.h>?

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

{?int?n=0;?

while(*s)?

{?if(*s?<?97)?{?

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

*(t+n)=?__1__?;?n++;?}?

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

?

__2__?;?

}?

*(t+n)=0;?

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

return?__3__?;?

}?

main()?

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

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

n=fun(s,t);?

printf("\nThere?are?%d?letter?which?ASCII?code?is?less?than?97:?%s\n",n,t);?

}?

解題思路:?

本題是根據(jù)條件組成新的字符串并統(tǒng)計(jì)出符合條件的個(gè)數(shù)n。?

第一處:把符合條件的當(dāng)前字符存放到t字符串中,所以應(yīng)填:*s。?

第二處:到字符串下一個(gè)位置,所以應(yīng)填:s++。?

第三處:返回符合條件的字符個(gè)數(shù)n,所以應(yīng)填:n。?

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

給定程序MODI1.C中函數(shù)?fun?的功能是:由形參給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。?

例如,n8時(shí),輸入:193.199,195.673,195.757,196.051,196.092,196.596,?196.579,196.763?

所得平均值為:195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為:5?

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

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

給定源程序:?

#include?<stdio.h>?

int?fun(float?x[],?int?n)?

{?

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

int?j,?c=0,?float?xa=0.0;?

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

xa?+=?x[j]/n;?

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

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

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

if?(x[j]?=>?xa)?

c++;?

return?c;?

}?

main?(?)?

{?float?x[100]?=?{193.199,?195.673,?195.757,?196.051,?196.092,?196.596,?196.579,?196.763};?

printf("%d\n",?fun?(x,?8));?

}?

解題思路:?

第一處:兩種類型變量定義之間應(yīng)該用分號(hào),所以應(yīng)改為:int?j,?c=0;?float?xa=0.;。?

第二處:在C語言中,大于等于應(yīng)表達(dá)為>=。?

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

編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。mn?為兩個(gè)正整數(shù)且要求m?>?n。?

m!?

P?=?───?

n!(m-n)!?

例如:m12,n8時(shí),運(yùn)行結(jié)果為495.000000。?

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

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

給定源程序:?

#include?<stdio.h>?

float?fun(int?m,?int?n)?

{?

}?

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

{?

printf("P=%f\n",?fun?(12,8));?

NONO();?

}?

解題思路:?

本題是計(jì)算階乘。?

參考答案:?

#include?<stdio.h>?

long?jc(int?m)?

{?

long?s=1;?

int?i?;?

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

return?s;?

}?

?

float?fun(int?m,?int?n)?

{?

float?p;?

p=1.0*jc(m)/jc(n)/jc(m-n)?;?

return?p;?

}?

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




50套:?

給定程序中,函數(shù)fun的功能是:N×N矩陣,以主對(duì)角線為對(duì)稱線,對(duì)稱元素相加并將結(jié)果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣:?

1?2?3?

4?5?6?

7?8?9?

計(jì)算結(jié)果為1?0?0?

6?5?0?

10?14?9?

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

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

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

給定源程序:?

#include?<stdio.h>?

#define?N?4?

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

void?fun(int?(*t)___1___?)?

?

{?int?i,?j;?

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

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

{?

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

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

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

___3___?=0;?

}?

}?

}?

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<N;?i++)?

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

printf("\n");?

}?

fun(t);?

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

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

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

printf("\n");?

}?

}?

解題思路:?

第一處:形參t的定義,整數(shù)數(shù)組其寬度為N,所以應(yīng)填:[N]。?

第二處:對(duì)稱元素相加,其結(jié)果仍存放在左下三角元素中,所以應(yīng)填:t[i][j]。?

第三處:右上三角元素置為0,所以應(yīng)填:t[j][i]。?

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

給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中xy的值不等,zy的值不等。?

例如,當(dāng)x的值為9、y的值為11z的值為15時(shí),函數(shù)值為?-3.50。?

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

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

給定源程序:?

#include?<stdio.h>?

#include?<math.h>?

#include?<stdlib.h>?

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

#define?FU(m,n)?(m/n)?

float?fun(float?a,float?b,float?c)?

{?float?value;?

value=FU(a+b,a-b)+FU(c+b,c-b);?

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

Return(Value);?

}?

?

main()?

{?float?x,y,z,sum;?

printf("Input?x?y?z:?");?

scanf("%f%f%f",&x,&y,&z);?

printf("x=%f,y=%f,z=%f\n",x,y,z);?

if?(x==y||y==z){printf("Data?error!\n");exit(0);}?

sum=fun(x,y,z);?

printf("The?result?is?:?%5.2f\n",sum);?

}?

解題思路:?

第一處:define定義錯(cuò)誤,所以應(yīng)改為:#define?FU(m,n)?((m)/(n))。?

第二處:return錯(cuò)寫成Return,變量value錯(cuò)寫成Value。?

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

規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和尾部的*號(hào)不刪除。?

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

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

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

給定源程序:?

#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.?利用循環(huán)掃描出字符串左邊第1個(gè)字符不是'*'的字符。?

2.?再利用循環(huán)把以后的字符依次移動(dòng)原字符串首地址開始存放。?

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

參考答案:?

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

{?

int?j=0;?

char?*p?=?a?;?

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

while(*p)?{?

a[j++]?=?*p?;?

p++;?

}?

a[j]=0?;?

}?

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



查看更多