二級(jí)C語言上機(jī)試題100套_第1頁
二級(jí)C語言上機(jī)試題100套_第2頁
二級(jí)C語言上機(jī)試題100套_第3頁
二級(jí)C語言上機(jī)試題100套_第4頁
二級(jí)C語言上機(jī)試題100套_第5頁
已閱讀5頁,還剩253頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1套

1.填空題

請補(bǔ)充main函數(shù),該函數(shù)的功能是:把一個(gè)字符串中的所有小寫字母字符全部轉(zhuǎn)換成大寫字母字符,

其他字符不變,結(jié)果保存原來的字符串中。

例如:當(dāng)str[N]="123abcdefABCDEF!”,結(jié)果輸出:“123ABCDEFABCDEF!”。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

#include<stdIib.h>

#include<conio.h>

#defineN80

voidmainO

(

intj;

charstr[N]=,z123abcdefABCDEF!”;

char*pf=str;

clrscr0;

printfC***originaIstring***\n");

puts(str);

【1】;j=0

while(*(pf+j))

(

if(*(pf+j)>-a,&&*(pf+j)<='z')

(

*(pf+j)=3;*(pf+j)-32

j++;

)

else

[3];j++

}

printf(,z******newstring******\n");

puts(str);

system("pause");

)

1.填空題

[1]j=0[2]*(pf+j)-32[3]j++

2.改錯(cuò)題

下列給定程序中,函數(shù)fun()的功能是逐個(gè)比較a,b兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值小或相

等的字符依次存放到c數(shù)組中,形成一個(gè)新的字符串。

例如:a中的字符串為fshADfg,b中的字符串為sdAEdi,則c中的字符串應(yīng)為fdAADf。

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

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

試題程序:

#incIude<stdio.h>

#incIude<string.h>

voidfun(char*p,char*q,char*c)

{intk=0;

while(*p||*q)

{if(*p>=*q)

c[k]=*q;

eIsec[k]=*p;

if(*p)p++;

if(*q)q++;

k++;

)

)

main()

{chara[10]=z,fshADfgz,,b[10]=z,sdAEdic[80]={'\0"};

fun(a,b,c);

printf(z,Thestringa:");puts(a);

printf(/zThestringb:");puts(b);

printf("Theresu11:puts(c);

)

2.改錯(cuò)題

(1)錯(cuò)誤:{if(*p<=*q)

正確:{if(*p>=*q)

(2)錯(cuò)誤:k++

正確:k++;

3.編程題

請編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:

將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。

例如,當(dāng)a=16,b=35,調(diào)用該函數(shù)后,c=53610

注意:部分源程序給出如下。

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

試題程序:

#incIude<stdio.h>

voidfun(inta,intb,long*c)

(

*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;

)

main()

(

inta,b;

longc;

cIrscr();

printf(〃Inputa,b;〃);

scanf("%d%cT,&a,&b);

fun(a,b,&c);

printf("Theresultis:%ld\n”,c);

}

3.編程題

voidfun(inta,intb,long*c)

(

*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;

)

第2套

1.填空題

請補(bǔ)充main函數(shù),該函數(shù)的功能是求方程ax?+bx+c=0的兩個(gè)實(shí)數(shù)根。方程的系數(shù)a、b、c從鍵盤輸入,

如果判別式(disc=b2-4ac)小于0,則要求重新輸入a、b^c的值。

例如,當(dāng)a=1,b=2,c=1時(shí),方程的兩個(gè)根分別是x1=T.00,x2=-1.00o

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include"math.

#include<stdio.h>

main()

(

floata,b,c,disc,x1,x2;

clrscr0;

do

(

printfCInputa,b,c:〃);

scanf(z,%f,%f,%f,z,&a,&b,&c);

disc=b*b-4*a*c;

if(disc<0)

printfCdisc=%f\nInputagain!

\n〃,disc);

}whiIe([1]);disc<0

printf(〃*******theresuIt*******\n〃);

x1=【2】;(-b+sqrt(disc))/(2*a)

x2=[3];-b-sqrt(disc))/(2*a)

printfC\nx1=%6.2f\nx2=%6.2f\n〃,x1,x2);

)

1.填空題

[1]disc<0[2](-b+sqrt(disc))/(2*a)[3](-b-sqrt(disc))/(2*a)

2.改錯(cuò)題

下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公式的值。

y=1-1/(2X2)+1/(3X3)-1/(4X4)+—+(-1)^'7(mXm)

例如:m中的值為5,則應(yīng)輸出0.838611。

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

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

試題程序:

#incIude<conio.h>

#incIude<stdio.h>

doubIefun(intm)

{doubIey=1.0;

intj=1;doublej=1.0;

inti;

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

(

y+=1/(i*i);y+=j/(i*i);

)

return(y);

)

main()

(

intn=5;

cIrscr();

printf(,z\nTheresultis,fun(n));

)

2.改錯(cuò)題

1J\t誤

Z?ntj=1;

E琳

doubIej=1.0

2)xt昔

zy+=1/(i*i)

2E確

y+=j/(i*i)

3.編程題

請編一^函數(shù)voidfun(inttt[M][N],intpp[N]),tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)

組每列中最大元素,并依次放入PP所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

注意:部分源程序給出如下。

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

試題程序:

#incIude<conio.h>

#incIude<stdio.h>

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

(

inti,j,max;

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

max=tt[0][j];

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

if(tt[i][j]>max)

max=tt[i][j];

pp[j]=max;

)

main()

(

intt[M][N]={{68,32,54.12},{14,24,88,58},{42,22,44,56));

intp[N],i,j,k;

cIrscr();

printf(z,TheriginaIdatais:\rT);

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

(

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

printf("%6d",t[i][j]);

printf(z,\n,z);

)

fun(t,p);

printf(z,\nTheresu11is:\n");

for(k=O;k<N;k++)

printf("%4d”,p[k]);

printfCAnO;

)

3.編程題

voidfun(inttt[M][N],intpp[N])

inti,j,max;

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

max=tt[0][j];

/*假設(shè)各列中的扇一個(gè)元素最大*/

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

if(tt[i][j]>max)

/*如果各列中的其他元素比最大值

還大二則將更大的元素看做當(dāng)前該列中最

大的元素*/

max=tt[i][j];

pp[j]=max;

/*海各列的最大值依次放入PP數(shù)組中*/

)

)

第3套

1.填空題

請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把一個(gè)整數(shù)轉(zhuǎn)換成字符串,并倒序保存在字符數(shù)組str中。例如:

當(dāng)戶13572468時(shí),str="86427531”。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN80

charstr[N];

voidfun(Iongintn)

(

inti=0;

while([]])n>0

(

str[i]=[2];n%10+,0,

n/=10;

i++;

)

【3】;str[i]=,\0,

)

mainO

(

longintn=13572468;

clrscr0;

printf("***theorigiaIdata***\n");

printfrn=%ldz,,n);

fun(n);

printf("\n%s”,str);

1

1.填空題

[1]n>0[2]n%10+,0'[3]str[i]='\0'

2.改錯(cuò)題

下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。

(?-ox2

例如:當(dāng)給n輸入5時(shí),函數(shù)值為240;當(dāng)給n輸入3時(shí),函數(shù)值為60。

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

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

試題程序:

#incIude<stdio.h>

fun(intn);

(

intc;

if(n==1)

c=15;

eIse

c=fun(n-1)*2;

return(c);

)

main()

(

intn;

printf("Entern:");

scanf("%d",&n);

,,

printf("Theresu11:%d\n\n)fun(n));

)

2.改錯(cuò)題

(1)錯(cuò)誤:fun(intn);

正確:fun(intn)

(2)錯(cuò)誤:if(n=1)

正確:if(n==1)

3.編程題

請編寫函數(shù)fun(),對(duì)長度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按ASCII值碼升序排

列。

例如:原來的字符串為BdsihAd,則排序后輸出為BAdhisd。

注意:部分源程序給出如下。

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

試題程序:

#incIude<stdio.h>

#incIude<ctype.h>

#incIude<conio.h>

intfun(char*s,intnum)

(

chart;

inti,j;

for(i=1;i<num-2;i++)/*下標(biāo)值從1開始,用循環(huán)依次取得字符串中的字符*/

for(j=i+1;j<num-1;j++)/*將字符與其后的每個(gè)字符比較*/

if(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/

{t=s[i];/*則交換這兩個(gè)字符*/

s[i]=s[j];

1

)

main()

(

chars[10];

cIrscr();

printf("輸入7個(gè)字符的字符串:");

gets(s);

fun(s,7);

printf("\n%s”,s);

)

3.編程題

intfun(char*s,intnum)

{chart;

inti,j;

for(i=1;i<num-2;i++)/*下標(biāo)值從1開始,用循環(huán)依次取得字符串中的字符*/

for(j=i+1;j<num-1;j++)/*將字符與其后的每個(gè)字符比較*/

if(s[i]>s[j])/*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/

{t=s[i];/*則交換這兩個(gè)字符*/

s[i]=s[j];

)

)

第4套

1.填空題

數(shù)組xx[N]保存著一組3位數(shù)的無符號(hào)正整數(shù),其元素的個(gè)數(shù)通過變量num傳入函數(shù)fun()。請補(bǔ)充函數(shù)

fun(),該函數(shù)的功能是:從數(shù)組xx中找出個(gè)位和百位的數(shù)字相等的所有無符號(hào)整數(shù),結(jié)果保存在數(shù)組yy

中,其個(gè)數(shù)由函數(shù)fun()返回。

例如:當(dāng)xx[8]={135,78,72,32,222,424,333,141,541}時(shí),bb[6]={787,232,222,424,333,141}o

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<conio.h>

#defineN1000

intfun(intxx[],intbb[],intnum)

(

inti,n=0;

intg,b;

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

(

[11;xx[i]%10

b=xx[i]/100;

if(g^b)

_[2]_;bb[n++]=xx[i]

}

return[3];n

)

main0

(

intxx[8]={135,787,232,222,424,333,

141,541);

intyy[N];

intnum=O,n=O,i=O;

num=8;

clrscr();

printf(z,***originaIdata***\n〃);

for(i=O;i<num;i++)

printf(,z%u,z,xx[i]);

printf(,,\n\n\n,z);

n=fun(xx,yy,num);

printfC\nyy=〃);

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

printfC%u",yy[i]);

)

1.填空題

t1]xx[i]%10[2]bb[n++]=xx[i][3]n

2.改錯(cuò)題

下列給定程序中函數(shù)fun()的功能是計(jì)算1/n!的值。

例如:給n輸入5,則輸出0.008333。

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

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

試題程序:

#incIude<stdio.h>

#incIude<conio.h>

intfun(intn)doubIe

{doubIeresult=1.0;

if(n=0)

return1.0;

while(n>1&&n<170)

result*=n++;一

result=1/result;

returnresult;

)

main()

(

intn;

printf(,zInputN:〃);

scanf&n);

printf(,z\n1/%d!=%If\n”,n,fun(n));

)

2.改錯(cuò)題

(1)錯(cuò)誤:intfun(intn)

正確:doubIefun(intn)

(2)錯(cuò)誤:result*=n++;

正確:resu11*=n-;

3.編程題

編寫函數(shù)fun(),它的功能是求n以內(nèi)(不包括n)同時(shí)能被5與11整除的所有自然數(shù)之和的平方根s,并作

為函數(shù)值返回。

例如:n為1000時(shí),函數(shù)值應(yīng)為s=96,979379。

注意:部分源程序給出如下。

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

試題程序:

#incIude<conio.h>

#incIude<math.h>

#incIude<stdio.h>

doubIefun(intn)

doublefun(intn)

{doubles=0.0;

inti;

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

if(i%5==0&&i%ll==0)

s=s+i;

s=sqrt(s);

returns;

)

main()

(

cIrscr();

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

)

3.編程題

doublefun(intn)

(doubles=0.0;

inti;

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

/*從0?n中找到既能被5整除同時(shí)

又能被11整除的數(shù),并將這些數(shù)求和*/

if(i%5==0&&i%ll==0)

s=s+i;

s=sqrt(s);

/*對(duì)s求平方根*/

returns;

第5套

1.填空題

請補(bǔ)充main函數(shù),該函數(shù)的功能是求方程ax'+bx+cR的根(方程的系數(shù)a,b,c從鍵盤輸入)。

例如,當(dāng)a=1,b=2,c=1時(shí),方程的兩個(gè)根分別是:x1=-1.00,x2=-1.00o

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<math.h>

main()

(

floata,b,c,disc,x1,x2,p,q;

scanf("%f,%f,%f”,&a,&b,&c);

disc=b*b-4*a*c;

clrscr0;

printf(z,*******theresult*******\n,z);

if(disc>=0)

{

x1=⑴;(-b+sqrt(disc))/(2*a)

x2=(-b-sqrt(disc))/(2*a);

printfC'x1=%6.2f,x2^6.2f\n”,x1,x2);

1

else

(

P=[2];-b/(2*a)

q=[3];sqrt(fabs(disc))/(2*a)

printfCx1=%6.2f+%6.2fi\n”,p,q);

printf("x2=%6.2f-%6.2fi\n”,p,q);

)

)

1.填空題

[1](-b+sqrt(disc))/(2*a)

[2]-b/(2*a)

[3]sqrt(fabs(disc))/(2*a)

2.改錯(cuò)題

下列給定程序中函數(shù)fun()的功能是計(jì)算正整數(shù)num的各位上的數(shù)字之平方和。

例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。

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

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

試題程序:

#incIude<stdio.h>

#incIude<conio.h>

Iongfun(longnum)

(

longk=1;0

do

(

k+=(num%10)*(num%10);

num/=10;

}whiIe(num);

return(k);

)

main()

(

longn;

cIrscr();

printf(,Z\PIeaseenteranumber:,z);

scanf("%Id",&n);

printfC\n%Id\nz,,fun(n));

)

2.改錯(cuò)題

(1)錯(cuò)誤:longk=1;

正確:longk=0;

(2)錯(cuò)誤:while(num)

正確:while(num);

3.編程題

請編寫函數(shù)fun(),它的功能是求Fibonacci數(shù)列中小于t的最大的一個(gè)數(shù),結(jié)果由函數(shù)返回。其中

Fibonacci數(shù)列F(n)的定義為

F(0)=0,F(1)=1

F(n)=F(nT)+F(n-2)

例如:t=1000時(shí),函數(shù)值為987。

注意:部分源程序給出如下。

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

試題程序:

#incIude<conio.h>

#incIude<math.h>

#incIude<stdio.h>

fun(intt)

inta=1,b=1,c=0,i;/*a代表第n-2項(xiàng),b代表第n-1項(xiàng),c代表第n項(xiàng)*/

/*如果求得的數(shù)c比指定比較的數(shù)小,則計(jì)算下一個(gè)Fibonacci數(shù),

對(duì)a,b重新置數(shù)*/

c=a+b;

a=b;

b=c;

while(c<t);/*如果求得的數(shù)c比指定比較的數(shù)大時(shí),退出循環(huán)*/

c=a;/*此時(shí)數(shù)c的前一個(gè)Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/

return

)

main()

(

intn;

cIrscr();

n=1000;

printf(z,n=%d,f=%d\n”,n,fun(n));

3.編程題

intfun(intt)

(

inta=1,b=1,c=0,i;/*a代表第n-2項(xiàng),b代表第nT項(xiàng),c代表第n項(xiàng)*/

/*如果求得的數(shù)c比指定比較的數(shù)小,則計(jì)算下一個(gè)Fibonacci數(shù),

對(duì)a,b重新置數(shù)*/

c=a+b;

a=b;

b=c;

)

while(c<t);/*如果求得的數(shù)c比指定比較的數(shù)大時(shí),退出循環(huán)*/

c=a;/*此時(shí)數(shù)c的前一個(gè)Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/

returnc;

)

第六套

1.填空題

請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:計(jì)算NXN維矩陣元素的方差,結(jié)果由函數(shù)返回。維數(shù)N在主函數(shù)

中輸入。例如:

463032

a=40617

451548的計(jì)算結(jié)果是14.414

求方差的公式為:

1」

皂Xk

其中九左=i

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdIib.h>

#include<math.h>

#defineN20

doubIefun([]],intn)inta[][N]

(

inti,j;

intk;

doubIes=0.0;

doubIef=0.0;

doubIeaver=0.0;

doubIesd=0.0;

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

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

s+=a[i][j];

aver=[2】;s/(n*n)

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

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

f+=(a[i][j]-aver)*(a[i][j]-aver);

f/=(n*n);

sd=[3];sqrt(f)

returnsd;

)

mainO

(

inta[N][N];

intn;

inti,j;

doubIes;

clrscr0;

print"'*****Inputthedimensionof

arrayN*****\n");

scanf("%d",&n);

print*'*****Thearray*****\n");

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

(

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

(

a[i][j]=rand0%50;

while(a[i][j]=0)

a[i][j]=rand0%60;

printf("%4d”,a[i][j]);

)

printf(z,\n\nz,);

)

s=fun(a,n);

printf("*****THERESULT*****\n");

printfC%4.3f\n",s);

)

1.填空題

[11inta[][N][2]s/(n*n)[3]sqrt(f)

2.改錯(cuò)題

下列給定程序中,函數(shù)fun()的功能是將字符串s中位于偶數(shù)位置的字符或ASCII碼為奇數(shù)的字符放入字

符串t中(規(guī)定第一個(gè)字符放在第0位中)。

例如:字符串中的數(shù)據(jù)為ADFESHDI,則輸出應(yīng)當(dāng)是AFESDI。

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

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

試題程序:

#incIude<conio.h>

#incIude<stdio.h>

#incIude<string.h>

#defineN80

voidfun(chars,chart[])

inti,尸0;

for(i=0;i<strIen(s);i++)

if(i%2=0||s[i]%2!=0)

t[j++]=s[i];

)

main()

(

chars[N],t[N];

cIrscr();

printf(,z\nPIeaseenterstrings:;

gets(s);

fun(s,t);

printf("\nTheresu11is:%s\n”,t);

)

2.改錯(cuò)題

(1)錯(cuò)誤:voidfun(chars,chart[])

正確:voidfun(char*s,chart[])

(2)錯(cuò)誤:if(i%2=0||s[i]%2!=0)

正確:if(i%2==ojjs[i]%2!=0)

3.編程題

請編寫一個(gè)函數(shù)fun(),它的功能是計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定

n的值不大于100)。

例如:主函數(shù)從鍵盤給輸入n的值為56,則輸出為sum=1113。

注意:部分源程序給出如下。

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

試題程序:

#incIude<stdio.h>

Iongfun(intn)

)

main()

(

intn;

Iongsum;

printfCInputn:");

scanf(,,%dz,,&n);

sum=fun(n);

printf("sun產(chǎn)%Id\n”,sum);

)

3.編程題

Iongfun(intn)

(

inti;

Iongs=0;

for(i=2;i<=n-1;i++)/*從2~n7中找n的所有因子*/

if(n%i==0)

s+=i*i;/*將所有因子求平方加*/

returns;/*將平方和返回*/

)

第7套

1.填空題

請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符串str2倒置后接在字符串str1后面。

例如:str1="Howdo",str2="?oduoy”,結(jié)果輸出:"Howdoyoudo?”。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN40

voidfun(char*str1,char*str2)

(

inti=0,j=O,k=O,n;

charch;

char*p1=str1;

char*p2=str2;

whiIe(*(p1+i))

if

whiIe(*(p2+j))

j++;

n=[1];

for(;k<=j/2;k++,j—)

(

ch=*(p2+k);

*(p2+k)=*(p2+j);

"(pZ+Dkh;

)

[2]:

for(;[3];i++)

*31+。$2++;

*(p1+i)='\0';

)

main0

(

charstr1[N],str2[N];

intm,n,k;

clrscr0;

printf(z,***Inputthestringstr1&str2

***\n");

printf(,z\nstr1:z,);

gets(str1);

printf(,z\nstr2:z,);

gets(str2);

printfThestringstr1&str2***\n");

puts(str1);

puts(str2);

fun(str1,str2);

print*'***Thenewstring***\n");

puts(str1);

)

1.填空題

[1]j—[2】*(p2+n)='\0'【3】*p2

2.改錯(cuò)題

下列給定程序中,函數(shù)fun()的功能是找出100?n(不大于1000)之間百位數(shù)字加十位數(shù)字等于個(gè)位數(shù)字

的所有整數(shù),把這些整數(shù)放在s所指的數(shù)組中,個(gè)數(shù)作為函數(shù)值返回。

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

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

試題程序:

#incIude<stdio.h>

#defineN100

intfun(int*s,intn)

(

inti,j,k,a,b,c;

j=0;

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

(

k=n;

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

s[j]=i;

)

returnj;

)

main()

(

inta[N],n,num=O,i;

do

(

printf(z,\nEntern(<=1000)

scanf("%d",&n);

}

whiIe(n>1000);

num=fun(a,n);

printf(z,\n\nTheresu11:\n");

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

printf("%5d”,a[i]);

printfC\n\n,z);

)

2.改錯(cuò)題

(1)錯(cuò)誤:k=n;

正確:k=i;

(2)錯(cuò)誤:s[j]=i;

正確:s[j++]=i;

3.編程題

程序定義了NXN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請編寫函數(shù)fun(inta[][N],intn),該函

數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

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

a=254

169

537

則返回主程序后a數(shù)組中的值應(yīng)為

554

499

8610

注意:部分源程序給出如下。

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

試題程序:

#incIude<stdio.h>

#incIude<conio.h>

#incIude<stdlib.h>

#defineN5

fun(inta[][N],intn)

)

main()

(

inta[N][N],n,i,j;

cIrscr();

print*'*****Thearray*****\n");

for(i=0;i<N;i++)/*產(chǎn)生一個(gè)隨機(jī)5*5矩陣*/

(

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

(

a[i][j]=rand()%10;

,,,/

printf(%4d,a[i][j]);

)

printf("\n");

}

do

n=rand()%10;/*產(chǎn)生一*?小于5的隨機(jī)數(shù)n*/

while(n>=5);

,,,,

printf(n=%4d\nIn);

fun(a,n);

printf("*****THERESULT*****\n");

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

(

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

printf("%4d",a[i][j]);

printfCAn");

)

)

3.編程題

fun(inta[][N],intn)

(

inti,j;

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

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

a[i][j]=a[i][j]+n;/*使數(shù)組左下半三角元素中的值加上n*/

)

第8套

1.填空題

請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:按‘0'到'9'統(tǒng)計(jì)一個(gè)字符串中的奇數(shù)數(shù)字字符各自出現(xiàn)的次

數(shù),結(jié)果保存在數(shù)組num中。注意:不能使用字符串庫函數(shù)。

例如:輸入“x=112385713.456+0.909*bc”,結(jié)果為:1=3,3=2,5=2,7=1,9=2。

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

ttdefineN1000

voidfun(char*tt,intnum口)

(

inti,j;

intbb[10];

char*p=tt;

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

(

num[i]=0;

bb[i]=O;

}

while([]])

(

if(*p>='0'&&*p<='9')

[2];

P++;

}

for(i=1,j=0;i<10;i=i+2,j++)

[3];

)

main0

(

charstr[N];

intnum[10],k;

clrscr0;

printfr\nPIeaseenteracharstring:");

gets(str);

printf("\n**Theoriginalstring**\n");

puts(str);

fun(str,num);

printfC\n**Thenumberofletter**\n,z);

for(k=0;k<5;k-H-)

(

printf("\n");

printf("%d=%d”,2*k+1,num[k]);

)

printfCAn");

return;

1

1.填空題

[1]*p[2]bb[*p-01]++[3]num[j]=bb[i]

2.改錯(cuò)題

下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對(duì)調(diào),

次最小數(shù)和a[1]中的數(shù)對(duì)調(diào)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineN20

voidfun(int*a,intn)

(

inti,m,t,k;

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

(

m=i;

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

if(a[k]<a[m])

k=m;

t=a[i];

a[i]=a[m];

a[m]=t;

)

)

main()

(

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

cIrscr();

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

printf(,z%d”,b[i]);

printf("\n");

fun(b,n);

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

printf(z,%d”,b[i]);

printf("\n");

)

2.改錯(cuò)題

(1)錯(cuò)誤:for(i=0;i<n;i++)

正確:for(i=0;i<2;i++)

(2)錯(cuò)誤:k=m;

正確:m=k;

3.編程題

m個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是:將高于平均分的人數(shù)作為函數(shù)值返

回,將高于平均分的分?jǐn)?shù)放在up所指的數(shù)組中。

例如,當(dāng)score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時(shí),函數(shù)返回的人數(shù)應(yīng)該是5,

up中的數(shù)據(jù)應(yīng)為88,76,90,66,96。

注意:部分源程序給出如下。

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

試題程序:

#include<conio.h>

#include<stdio.h>

#incIude<string.h>

intfun(intscore[],intm,intup[])

I

main()

(

inti,n,up[9];

intscore[9]={24,35,88,76,90,54,59,66,96);

cIrscr();

n=fun(score,9,up);

printf("\nuptotheaveragescoreare:");

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

printf("%d”,up[i]);

)

3.編程題

intfun(intscore[],intm,intup[])

(

inti,j=0;

fIoatav=0.0;

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

av=av+score[i]/m;/*求平均值*/

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

if(score[i]>av)/*如果分?jǐn)?shù)高于平均分,則將此分

第9套

1.填空題

請補(bǔ)充main函數(shù),該函數(shù)的功能是:從字符串str中取出所有數(shù)字字符,并分別計(jì)數(shù),然后把結(jié)果保存

在數(shù)組b中并輸出,把其他字符保存在b[10]中。

例如:當(dāng)str1="ab123456789cde090”時(shí),結(jié)果為:

0:21:12:13:14:15:16:17:18:19:2othercharactor:5

注意:部分源程序給出如下。

請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語

句。

試題程序:

#include<stdio.h>

#include<conio.h>

mainO

(

inti,b[11];

char*str="ab123456789cde090”;

char*p=str;

clrscr0;

print"'***theorigialdata***\n〃);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論