計(jì)算機(jī)C語(yǔ)言上機(jī)題及答案_第1頁(yè)
計(jì)算機(jī)C語(yǔ)言上機(jī)題及答案_第2頁(yè)
計(jì)算機(jī)C語(yǔ)言上機(jī)題及答案_第3頁(yè)
計(jì)算機(jī)C語(yǔ)言上機(jī)題及答案_第4頁(yè)
計(jì)算機(jī)C語(yǔ)言上機(jī)題及答案_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

期末考試說(shuō)明

本次考試全部采用筆試形式,分為如下三種題型

一、程序閱讀題(10空X2分/空=20分)

二、程序修改題(10空X2分/空=20分)

三、程序設(shè)計(jì)題(6題X10分/題=60分)

程序閱讀和修改題主要涉及知識(shí)點(diǎn)如下:

scanf和printf、switch循環(huán)(for、while、do-while)及和break、continue結(jié)合、

二維數(shù)組處理、字符串處理、函數(shù)遞歸調(diào)用、static、宏定義展開、文件定義、打開fopen、

關(guān)閉fclose和讀寫操作(fscanf和fprintf)

程序設(shè)計(jì)題主要考核如下內(nèi)容:

1.單純的分支結(jié)構(gòu)

2.單純的一層循環(huán)結(jié)構(gòu)

3.實(shí)現(xiàn)完整的函數(shù):函數(shù)的定義、函數(shù)體的編寫、帶返回值的和不帶返回值的函數(shù)、值

傳遞、地址傳遞。涉及到分支、循環(huán)、數(shù)組、字符串、結(jié)構(gòu)體等。

以下內(nèi)容不做考試要求:

指向二維數(shù)組的指針、指針函數(shù)、指針數(shù)組、多級(jí)指針、共用體、枚舉、位運(yùn)算、文件

fseek、ftelkfread和fwrite

計(jì)算機(jī)C語(yǔ)言上機(jī)題、

第四章

4.1溫度轉(zhuǎn)換,第一個(gè)數(shù)據(jù)(1或2)確定轉(zhuǎn)換的類型:華氏轉(zhuǎn)攝氏(1);攝氏轉(zhuǎn)華氏(2);

#include<stdio.h>

intmain()

(

intx;

floatC,F,a;

scanf("%d%f',&x,&a);

if(x==l)

(

C=(a-32)*5/9;

printf("TheCentigradeis%.2f\nu,C);

)

else

(

F=(a*9/5)+32;

printf("ThcFahrenheitis%.2f\n'\F);

)

return0;

)

第五章

5.1輸出一行星號(hào)

#include<stdio.h>

#include<stdlib.h>

intmain()

(

inta,b=I;

scanf("%d",&a);

while(b<=a)

{

printf("*");

b=b+1;

)

printf("\n");

return0;

}

5.2打印平行四邊形

問(wèn)題描述

輸入圖形的高n,輸出如下例(n=5)所示的圖形.

*****

*****

*****

*****

*****

輸入

整數(shù)n例如5

輸出

由*組成的高為5的平行四邊形

#include<stdio.h>

#include<stdlib.h>

inimain()

{

inta,b,c,n;

scanf("%d",&n);

a=l;

while(a<=n)

(

b=l;

while(b<=a-l)

(

printfC");

b=b+l;

)

c=l;

while(c<=n)

(

printfC*");

c=c+1;

}printfC\n");

a=a+l;

I

return0;

)

5.3編程計(jì)算

問(wèn)題描述

編寫程序,輸入n的值,求:i-i/2+i/3-i/4+i/5-i/6+i/7????+i/n(保留四位小數(shù))

輸入

n的值

輸出

上述算式的求和結(jié)果(結(jié)果保留四位小數(shù))

輸入樣例

1

輸出樣例

sum=i.oooo

#includc<stdio.h>

#include<stdlib.h>

#include<math.h>

intmain()

{

intn,a=l;

doublesum=0;

scanf("%d”,&n);

while(a<=n)

(

sum=sum+(1.0/a)*pow(-1,a-1);

a=a+1;

)

printf("sum=%.41f\n,,,sum);

return0;

}

5.4分?jǐn)?shù)序列

問(wèn)題描述

2358_1321_

有一個(gè)分?jǐn)?shù)序列:1235813輸入整數(shù)必求出其前n項(xiàng)

的和。

輸入

整數(shù)n

輸出

上述分?jǐn)?shù)序列的前n項(xiàng)之和

提示:輸出語(yǔ)句格式為printf(Hsum=%i6.iof\nH,s);

輸入樣例

1

輸出樣例

sum=2.0000000000

#include<stdio.h>

#include<stdlib.h>

intmain()

(

intn,c,i=l;

doubles=0,a=2,b=1;

scanf("%d",&n);

while(i<=n)

(

s=s+a/b;

c=a;

a=a+b;

b=c;

i++;

}

printf("sum=%16.1OfXn'^s);

return0;

)

5.5求e的值

問(wèn)題描述

編寫程序,從鍵盤輸入整數(shù)n,求e的值。e=i+i/i!+i/2!+i/3!+..+i/n!注意:用

double型數(shù)據(jù)計(jì)算。

輸入

整數(shù)n

輸出

e的值

提示:輸出語(yǔ)句printf(ne=%i6.iof\nM,e);

輸入樣例

2

輸出樣例

e=2.5000000000

#includc<stdio.h>

#include<stdlib.h>

intmain()

{

intn;

doubleb=l,a=1,i=l,e=l;

scanf(,'%d*',&n);

while(i<=n)

(

while(a<=i)

(

b=b/a;

a++;

I

e=e+b;

i++;

)

printf("e=%16.1Of\nn,e);

return0;

)

5.6求最大公約數(shù)

問(wèn)題描述

輸入兩個(gè)正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)

輸入

兩個(gè)正整數(shù)m和n

輸出

m和n的最大公約數(shù)和最小公倍數(shù)

輸入樣例

28

輸出樣例

thegreatestcommondivisoris2

theleastcommonmultipleis8

#include<stdio.h>

#include<stdlib.h>

inimain()

{

intr=l,m,n,d,a,b;

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

a=m;

b=n;

if(m%n==O&&m^>n)

(

r=n;

)

if(m%n==0&&m<n)

(

r=m;

}

while((m%n)!=0)

(

r=m%n;

m=n;

n=r;

I

d=a/r*b;

printf("thegreatestcommondivisoris%d\n",r);

printf("theleastcommonmultipleis%d\n",d);

return0;

I

5.7水仙花數(shù)

問(wèn)題描述

輸出所有的水仙花數(shù)。所謂的水仙花數(shù)是指一個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本

身。例如153是一水仙花數(shù),因?yàn)?53=13+53+33

輸入

無(wú)

輸出

所有的水仙花數(shù)提示:輸出語(yǔ)句printf(H%d\nH,n);

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inin=IOO,a,b,c,d;

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

(

a=n%10;

b=n/10%10;

c=n/100%10;

d=a*a*a+b*b*b+c*c*c;

if(n==d)

(

printf("%d\n'\n);

}

}

return0;

}

5.8完數(shù)

問(wèn)題描述

一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。例如,6的因子為1,2,3,且

6=1+2+3,因此6是完數(shù)。

輸入

一個(gè)正整數(shù)n

輸出

判斷n是否為完數(shù)。如果是,則輸出Yes和它的所有因子;否則,輸出No

輸入樣例

6

輸出樣例

Yes,itsfactorsare123

#include<stdio.h>

#include<stdlib.h>

intmain()

(

intn,a=l,c,b=O;

scanf("%d”,&n);

fbr(a=1;a<n;a++)

(

c=n%a;

if(c==O)

(

b=b+a;

)

}

if(n==b)

1

printf("Yies,itsfactorsare');

fbr(a-1,a<n;a十十)

(

c=n%a;

if(c==O)

(

prinlfC%d",a);

else

{

printf("No");

)

printf("\n");

return0;

)

5.9素?cái)?shù)

問(wèn)題描述

輸入兩個(gè)正整數(shù)m和n,求出[m,n]區(qū)間的所有素?cái)?shù)

輸入

兩個(gè)整數(shù)m和n

輸出

[m,n]區(qū)間的所有素?cái)?shù)

輸入樣例

210

輸出樣例

2357

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inti,a,n,m;

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

fbr(a=m;a<n;a++)

{

fbr(i=2;i<=a;i++)

{

if(a%i==O)

{

break;

)

}

if(i==a)

(

printf("%d",a);

)

)

printfC'\n");

return0;

I

5.10回文數(shù)

問(wèn)題描述

輸入一個(gè)正整數(shù),判斷是否為回文數(shù)。

輸入

一個(gè)正整數(shù)n

輸出

如果是,輸出Yes,否則輸出No

輸入樣例

12321

輸出樣例

Yes

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inta,n,m=0;

scanf(',%d,,,&n);

a=n;

while(n!=O)

(

m=m*10+n%10;

n=n/10;

)

if(m==a)

(

printf("Yes\n");

)

else

(

prinlf("No'n”);

)

return0;

}

5.11貪吃的猴子

問(wèn)題描述

有一只猴子,第一天摘了若干個(gè)桃子,當(dāng)即吃了一半,但還覺(jué)得不過(guò)癮,就又多吃了

一個(gè)。第2天早上乂將剩卜的桃子吃掉一半,還是覺(jué)得不過(guò)癮,就乂多吃了兩個(gè)。以后

每天早上都吃了前一天剩下的一半加天數(shù)個(gè)(例如,第5天吃了前一天剩下的一半加5

個(gè))。到第n天早上再想吃的時(shí)候,就只剩下一個(gè)桃子了。

輸入

天數(shù)n

輸出

第一天的桃子個(gè)數(shù)。提示:輸出語(yǔ)句為

printf(HThemonkeygot%dpeachsinfirstday.\nn,sum);

輸入樣例

5

輸出樣例

Themonkeygot114peachsinfirstday.

提示:

問(wèn)題分析:

總共to

日吃掉剩余

1tO/2+1tO-(tO/2+l)=tO/2-ltl=tO/2-l=>to=(tl+l)*2

2tl/2+2tl-(tl/2+2)=tl/2-2t2=tl/2-2=>tl=(t2+2)*2

n-1tn-2/2+(n-l)tn-2-(tn-2/2+(n-l))=tn-2/2-(Il-l)tn-i=tn-2/2-(n-l)=>tn-2=(tn-i+Il-l)*2

H1Otn-i=l

#include<stdio.h>

#includc<stdlib.h>

intmain()

(

doublen,i,m=l;

scanf("%ir,&n);

for(i=l;i<=n-l;i++)

(

m=(n-i+m)*2;

)

printf(,'Themonkeygot%.01fpeachsinfirstday.\n'\m);

return0;

)

5.12馬戲團(tuán)人數(shù)

問(wèn)題描述

一個(gè)馬戲團(tuán)表演,n個(gè)座位全滿,全部門票收入是120元,現(xiàn)在知道,男人每人5元,

女人每人2元,小孩每人1角。根據(jù)總?cè)藬?shù),計(jì)算出男人、女人和小孩各多少人。

輸入

總?cè)藬?shù)n

輸出

男人、女人和小孩人數(shù),若n人無(wú)法滿足條件,則輸出“Nooutput'n

#include<stdio.h>

#include<stdlib.h>

intmain()

(

intx,y,z,n;

scanf("%dn,&n);

fbr(x=0;x>=0&&x<=24;x++)

(

for(y=0;y>=0&&y<=60;y++)

(

z=n-x-y;

if(50*x+20*y+z==1200&&z>=0)

{

printf("%d%d%d\n",x,y,z);

if((n%5)!=0&&(n%2)!=0&&(50*x+20*y+z)!=1200)

(

printf("Nooulput\n");

)

return0;

}

5.13迭代法

問(wèn)題描述

用迭代法求x=。求平方根的迭代公式為:

要求前后兩次求出的X的差的絕對(duì)值小于1O工

輸入

a

輸出

右的值

輸入樣例

4

輸出樣例

Thesquarerootof4.00is2.00000

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

intmain()

(

floata,xi,x2;

scanf(M%f,,&a);

xi=sqrt(a);

x2=i/2*(xi+a/xi);

do

{

xi=sqrt(a);

x2=i/2*(xi+a/xi);

}while(fabs(x2-xi)<o.oooooi);

printf("Thesquarerootof%.2fis%,5f\n",a,xi);

returno;

}

5.14cos(x)-x=o

利用以下所示的簡(jiǎn)單迭代方法求方程:cos(x)-x=o的一個(gè)實(shí)根。

Xn+i=COS(Xn)

迭代步驟如下:

⑴輸入數(shù)據(jù)給XI;

(2)XO=X1,把XI的值賦給X0;

(3)xi=cos(xo),求出一個(gè)新的xi;

(4)若X0-X1的絕對(duì)值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2);

(5)所求XI就是方程cos(x)-x=o的一個(gè)實(shí)根,輸出XI,輸出語(yǔ)句為printf(ux=%lf',x);o

提示:本題xo和xi定義為doub加類型

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

intmain()

(

doublea,b;

scanf("%lf\n",&a);

b=cos(a);

while(fabs(b-a)>0.000001)

(

a=b;

b=cos(a);

}

printf("x=%f\n'\b);

return0;

}

5.15求一個(gè)三位數(shù),其值等于其各位階乘之和

問(wèn)題描述

編寫程序,求某三位數(shù),該數(shù)值的大小正好是組成這個(gè)數(shù)的三個(gè)位上的數(shù)字階乘之和。

輸入

無(wú)

輸出

滿足上述條件的三位數(shù)。提示:輸出格式為printf("%d\n”,mim);

#include<stdio.h>

#include<stdlib.h>

intmain()

inta,b,c,ij,k,m,n,s;

fbr(a=l;a<=9;a++)

for(b=l;b<=9;b十十)

for(c=l;c<=9;c++)

m=l;

n=l;

s=l;

for(i=1;i<=a;i++)

m*=i;

for(j=l;j<=b;j++)

n*=j;

for(k=1;k<=c;k++)

s*=k;

if(lOO*a+lO*b+c==m+n+s)

printf("%d\n",m+n+s);

return0;

第六章

6.1誰(shuí)能出線

背景:

電視臺(tái)舉辦“超級(jí)學(xué)生”才藝大賽,由于報(bào)名人數(shù)狂多,所以要先進(jìn)行分組預(yù)賽。按規(guī)定,

每10名學(xué)生為一個(gè)預(yù)賽小組,評(píng)委打出分?jǐn)?shù)(0~100分),各小組第一名可以進(jìn)入下

一輪;如果有多名學(xué)生得分相同都是第一名,則可同時(shí)進(jìn)入下一輪。

輸入:

按順序給出一個(gè)小組1O個(gè)人的最后得分(int)。

輸出:

能夠出線的學(xué)生序號(hào)(o~9)。

#include<stdio.h>

#include<stdlib.h>

#dcfineN10

intmain()

{

inta[N],i,n,m;

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

scanf("%d",&a[i]);

m=a[O];

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

(

if(m<a[i])

{

m=a[i];

)

)

fdr(i=O;i<10;i++)

(

if(m==a[i])

(

n-i;

printf("%d\n",n);

}

}

return0;

)

6.2統(tǒng)計(jì)素?cái)?shù)個(gè)數(shù)

求出2到m之間(含m,m<=iooo)所有素?cái)?shù)并放在數(shù)組a中。

輸入:正整數(shù)m

輸出:從小到大的所有素?cái)?shù),及個(gè)數(shù)(素?cái)?shù)輸出的時(shí)候用%4d來(lái)控制)

如:

輸入:1O

輸出:2357

4

#include<stdio.h>

#defineN500

intmain()

{

inta[N],m,ij,x,k=0;

scanf(H%d'\&m);

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

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

if(i%j==O)

(

break;

if(i==j)

(

a[k]=j;

k++;

)

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

(

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

}

printf("\n");

printf("%d\n';k);

return0;

)

6.3冒泡法排序

冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大

數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后

比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),

將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第

一對(duì)數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第

2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)

是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列

中是第二大的數(shù))。如此下去,重更以上過(guò)程,直至最終完成排序。由于在排序

過(guò)程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。

編寫程序,對(duì)輸入的十個(gè)數(shù)按照從小到大排序

#include<stdio.h>

#includc<stdlib.h>

#defineN10

intmain()

(

inta[N],i,j,t;

fbr(i=O;i<N;i++)

scanff%d”,&a[i]);

for(i=O;i<(N-l);i++)

(

fbr(j=i+l;j<N;j++)

{

if(a[j]<a[i])

{

t=a[j];

a[j]=a[i];

a[i]=t;

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

)

printfC%d';a[i]);

printf("\n");

return0,

}

6.4插入法排序

如果一個(gè)數(shù)組中保存的元素是有序的(由小到大),向這個(gè)數(shù)組中插入一個(gè)數(shù),使得插

入后的數(shù)組元素依然保持有序。

定義一個(gè)數(shù)組,長(zhǎng)度為11,初始元素為10個(gè),按照從小到大的方式輸入,然后輸入一

個(gè)要插入的元素,使得插入后仍然有序。

#include<stdio.h>

#include<stdlib.h>

#dcfineN10

intmain()

{

inia[N+l],i,x,k;

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

{

scanf("%d”,&a[i]);

}

scanf("%d”,&x);

fbr(i=9;i>=0;i-)

if(a[i]<=x)

(

k=i+l;

break;

else

k=0;

}

}

fbr(i=10;i>k;i-)

(

a[i]=a[i-l];

}

a[k]=x;

for(i=O;i<N+l;i++)

1

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

)

printf("\n");

return0;

1

6.5求各位數(shù)字中組成的最大數(shù)

任意輸入一個(gè)自然數(shù),輸出該自然數(shù)的各位數(shù)字組成的最大數(shù)。例如,輸入1593,則

輸出為9531。

輸入:自然數(shù)n

輸出:各位數(shù)字組成的最大數(shù)

#include<stdio.h>

#include<stdlib.h>

#dcfineN100

intmain()

{

inia[N],i,n,pj,k=0;

scanf("%d",&n);

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

{

aliJ=n%10;

n=n/I0;

k++;

if(n==0)

(

break;

for(i=0;i<k-l;i++)

for(j=i+l;j<k;j++)

(

if(a[il<a[j])

{

P=a[il;

a[i]=a[j];

a[j]=p;

I

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

{

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

)

printf("\n");

return0;

}

6.6數(shù)組逆序輸出、

問(wèn)題描述

從鍵盤上輸入一個(gè)數(shù)組(io個(gè)元素),將原數(shù)組逆序重新排列后輸出。要求輸出每個(gè)

元素時(shí)以一個(gè)空格隔開。

提示:

用第一個(gè)與最后一個(gè)交換。

#include<stdio.h>

#include<stdlib.h>

#defineN10

intmain()

{

inta[N],z,i,j;

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

(

scanf("%d",&a[i]);

I

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

(

z=a[j];

aU]=a[9-j];

a[9-j]=z;

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

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

printfC'^");

return0;

)

6.7求最大值

問(wèn)題描述

要求從鍵盤輸入10個(gè)整型數(shù)據(jù),找出其中的最大值并顯示出來(lái)。

輸入范例

3o54-71027327671015002

輸出范例

3”67

提示

先假定第一個(gè)元素時(shí)最大值,然后和其他的元素一個(gè)一個(gè)的進(jìn)行比較,直到找到最大值。

#include<stdio.h>

#include<stdlib.h>

#dcfineN10

inimain()

{

inta[N],z,ij;

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

(

scanf("%d”,&a[i]);

)

z=a[0];

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

(

if(z<a[i])

(

z=a[i];

}

)

printf("%d\n',,z);

return0;

)

6.8二維數(shù)組

問(wèn)題描述:

程序定義了4X4的二維數(shù)組,請(qǐng)編寫程序,給二維數(shù)組賦值,并使數(shù)組下半三角元素

中的值乘以no

例如:

數(shù)組中的值為

1234

2234

3234

4234

假設(shè)n為10,則輸出結(jié)果如下:(輸出的數(shù)按照4位寬度來(lái)輸出,即%4(1)

10234

202034

3020304

40203040

#includc<stdio.h>

#include<sldlib.h>

intmain()

(

inta[4][4];

intn,i,j;

fbr(i=O;i<4;i++)

(

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

(

scanfC%d",&a[i][j]);

)

}

scanf(,'%d,,,&n);

fbr(i=O;i<4;i++)

{

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

I

a[i]|jl=n*a[i][j];

)

}

fbr(i=0;i<4;i++)

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

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

prinifCXn");

I

return0;

}

6.9在屏幕上輸出楊輝三角

楊輝三角形,又稱賈憲三角形,帕斯卡三角形,是二項(xiàng)式系數(shù)在三角形中的一種幾何排

列。

其實(shí),中國(guó)古代數(shù)學(xué)家在數(shù)學(xué)的許多重要領(lǐng)域中處于遙遙領(lǐng)先的地位。中國(guó)古代數(shù)

學(xué)史曾經(jīng)有自己光輝燦爛的篇章,而賈憲三角的發(fā)現(xiàn)就是十分精彩的一頁(yè)。

楊輝三角有如下性質(zhì):

1、每行數(shù)字左右對(duì)稱,由1開始逐漸變大,然后變小,回到1。

2、第n行的數(shù)字個(gè)數(shù)為n個(gè)。

3、每個(gè)數(shù)字等于上一行的左右兩個(gè)數(shù)字之和。

編寫程序,輸入正數(shù)n,將所有數(shù)據(jù)存儲(chǔ)到二維數(shù)組中,并在屏幕上顯示對(duì)應(yīng)的楊輝

三角形(注意數(shù)據(jù)之間的空格)。例如:n=5圖形如下:

1

11

121

1331

14641

15101051

#include<stdio.h>

#include<stdlib.h>

#defineN100

intmain()

{

inta[N][N];

inii,j,n;

scanf("%d",&n);

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

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

if(j==O|U==i)

(

aliJ[j]=U

)

if(j>O&&j<i)

{

a[i]U]=a[(i-l)][(j-l)]+a[(i-l)]U];

)

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

)

printf("\n");

)

return0;

}

6.10球周邊元素之和

編寫?個(gè)程序,求出4^5的二維數(shù)組周邊元素之和。

輸入:二維數(shù)組元素

輸出:周邊元素之和

如:

輸入:

13579

29994

69998

1357。

輸出:61

#includc<stdio.h>

#include<stdlib.h>

#defineN4

#defineM5

intmain()

(

inta[N][M],ij,b=O,c=O,d=O,e=O,sum;

for(i=O;><N;i++)

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

scanf("%d",&a[ij|jj);

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

(

if(i==O)

(

for(j=0;j<M-l;j++)

(

b=b+ali](j];

)

)

if(i==3)

(

for(j=0;j<M-l;j++)

(

d-d+a[i]UJ;

}

}

)

fbr(j=O;j<M;j++)

(

if(j==O)

(

for(i=1;i<N-l;i++)

(

c=c+a[i]U];

)

)

if(j==4)

(

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

(

e=e+a[i][j];

)

)

}

sum=b+c+d+e;

printf("%d\n",sum);

return0;

}

6.11存儲(chǔ)并輸出一個(gè)矩陣

編程,輸入n,存儲(chǔ)并輸出如下例(n=5)所示的圖形。

12345

11234

11123

11112

11111

#include<stdio.h>

#include<stdlib.h>

#defineN100

intmain()

(

inta[N][N];

inti,j,n;

scanf("%d",&n);

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

{

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

(

a[i]Ul=l;

1

for(j=i+l;j<n;j++)

(

a[i][jl=j+l-i;

)

)

fbr(i=O;i<n;i++)

(

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

(

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

)

printf(H\n");

}

return0;

6.12給數(shù)組中元素按順序編號(hào)

對(duì)數(shù)組a[io]中的十個(gè)整數(shù)從小到大進(jìn)行連續(xù)編號(hào),輸出各個(gè)元素的編號(hào)。要求不能

改變數(shù)組a中元素的順序,且相同的整數(shù)要具有相同的編號(hào)。例如數(shù)組是:

A=(5,3,4,7,3,5,6,8,9,1。)則輸出為:(4,1,3,7,1,4,6,8,9,10)

#include<stdio.h>

#include<stdlib.h>

#defineN10

#defineM100

intmain()

{

inta[N],b[M],ij;

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

(

scanf("%d",&a[i]);

)

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

(

b[i]=l;

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

(

if(a[i]>a[j])

(

b[i]++;

)

)

printf(H%3d';b[i]);

)

printf("\n");

return0;

}

6.13矩陣加法

方陣階數(shù)為n(n<ioo),例如當(dāng)n=3時(shí),矩陣int就3][3],矩陣intb[3][3]。矩陣的數(shù)

據(jù)由用戶輸入。輸出新的矩陣C=a+bo輸出格式:COOCOlC02CIOCllC12C20C21C22

每?jī)蓚€(gè)數(shù)字之間有1個(gè)空格

關(guān)于輸入

方陣階數(shù)n

矩陣a:

aooaoia02

aioanai2

a2Oa2ia22

矩陣b:

booboibo2

biobnbi2

b20b21b22

關(guān)于輸出

矩陣C:

COOC01CO2

CIOCllC12

C2OC21C22

#include<stdio.h>

#include<stdlib.h>

#defineN100

intmain()

{

inia[N][N],b[N][N],c[N][N],iJ,n;

scanf("%d”,&n);

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

(

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

{

scanf("%d”,&a[i][jD;

I

)

fbr(i=O;i<n;i++)

(

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

(

scanf("%d",&b[i][j]);

)

}

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

(

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

(

c[i]U]=a[i]U]+b[i]U];

)

)

fbr(i=O;i<n;i++)

(

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

(

|

printf("%d';c[il[j]);

}

else

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

printf("\n");

)

return0;

I

6.14矩陣轉(zhuǎn)置

在數(shù)學(xué)上,矩陣是指縱橫排列的二維數(shù)據(jù)表格,最早來(lái)自于方程組的系數(shù)及常數(shù)所構(gòu)成

的方陣。這一概念由19世紀(jì)英國(guó)數(shù)學(xué)家凱利首先提出。矩陣概念在生產(chǎn)實(shí)踐中也有許

多應(yīng)用,比如矩陣圖法以及保護(hù)個(gè)人帳號(hào)的矩陣卡系統(tǒng)(由深圳網(wǎng)域提出)等等?!熬?/p>

陣”的本意也常被應(yīng)用,比如監(jiān)控系統(tǒng)中負(fù)責(zé)對(duì)前端視頻源與控制線切換控制的模擬設(shè)

備也叫矩陣。

設(shè)A為nxn階矩陣(即n行n列),第i行j列的元素是a(i,j),即:A=a(i,j)

定義A的轉(zhuǎn)置為這樣一個(gè)nxn階矩陣R,滿足B=aG,i),即b(i,j)=aG,i)(R的第i行

第j列元素是A的第j行第i列元素),記A'=B。(有些書記為AT=B,這里T為A的

上標(biāo))

直觀來(lái)看,將A的所有元素繞著一條從第1行第1列元素出發(fā)的右下方45度的

射線作鏡面反轉(zhuǎn),即得到A的轉(zhuǎn)置。

輸入:

有n+i行(2wnwio),第一行是一個(gè)整數(shù)n,代表矩陣為n行n列。后面n行表示矩

陣的取值

輸出:

轉(zhuǎn)置后的矩陣

#include<stdio.h>

#include<stdlib.h>

#defineN100

intmain()

(

inta[N][N],ij,n,k;

scanf("%d”,&n);

fbr(i=O;i<n;i++)

(

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

scanf("%dM,&a[i]|j]);

fbr(i=O;i<n;i++)

(

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

(

k=a[ilUl;

a[i]|j]=a[j][i];

aU][i]=k;

)

)

fbr(i=O;i<n;i++)

(

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

(

if(j!=(n-l))

(

piintf("%d

)

else

{

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

)

)

printfCXn1');

}

return0;

)

6.15求一系列整數(shù)中出現(xiàn)最多的數(shù)

給定一系列整數(shù),對(duì)每個(gè)整數(shù)的每一位數(shù)字統(tǒng)計(jì)0~9各個(gè)數(shù)字的出現(xiàn)次數(shù),求出現(xiàn)次

數(shù)最多的數(shù)字。

輸入:

有兩行,第一行是整數(shù)n(i<=n<=ioo),表示有n個(gè)整數(shù);第二行是n個(gè)整數(shù)值

輸出:

出現(xiàn)次數(shù)最多的數(shù)字d(如果d不唯一,要列出全部)及其出現(xiàn)的次數(shù)

輸入樣例:

1

1233

輸出樣例:

出現(xiàn)次數(shù)最多2次的數(shù)字是3

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inta[IO]={O|;

intn,i=0,maxl=0;

charm;

charb[200]={0);

int1=0;

scanf("%d",&n);

getchar();

gets(b);

l=strlen(b);

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

{

if(b[i]>=<0,&&b[i]<='9')a[b[i]-48J+=l;

}

i=0;

while(i<10)

(

if(a[i]>maxl)maxl=a[i];

i++;

}

printf(”出現(xiàn)次數(shù)最多%d次的數(shù)字是二maxi);

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

(

if(max1==a[i])printf("%d",i);

1

printf("\nH);

return0;

)

6.16裝箱問(wèn)題

假設(shè)有n項(xiàng)物品,大小分別為si,S2,…,sn,其中si是整數(shù)且滿足:i<=si<=ioOo

要把這些物品裝入到容量為100的一批箱子(序號(hào)i~n)中。裝箱方法是:對(duì)每項(xiàng)物品

si,依次掃描所有這些箱子,把si放入足以能夠容下它的第一個(gè)箱子中(frst-fit策略)。

寫一個(gè)程序來(lái)模擬這個(gè)裝箱的過(guò)程。

輸入:

有兩行。第一行是整數(shù)n(n<=iooo),表示物品的個(gè)數(shù);第二行是n個(gè)整數(shù)si(si<=ioo),

分別表示n個(gè)物品的大小

輸出:

每個(gè)物品所在的箱子序號(hào),并輸出所需的箱子數(shù)目

輸入樣例:

8

6o708o90304。1020

輸出樣例:

6o1

702

803

904

3。1

405

1O1

202

所需的箱子數(shù)目為5

#includc<stdio.h>

#include<sldlib.h>

#defineN100

intmain()

{

inta[N],b[N],n,ij,k;

scanf("%d",&n);

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

(

scanf(M%dM,&a[i]);

b[i]=100;

}

fbr(i=O;i<n;i++)

(

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

(

if(b|j]-a[i]>=0)

(

printf("%d%d\n",a[i],j+l);

bU]=b[j]-a[i];

break;

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

if(b[j]==100)

break;

I

printf("所需的箱子數(shù)目為%氏”力;

return0;

}

第八章

8.1字符轉(zhuǎn)換

描述

提取一個(gè)字符串中的所有數(shù)字字符(‘o'…'9')將其轉(zhuǎn)換為一個(gè)整數(shù)輸出。

輸入

一個(gè)以回車符為結(jié)束標(biāo)志的字符串(少于8。個(gè)字符)。

輸出

把字符串中的所有數(shù)字字符('o'...'9')轉(zhuǎn)換為一個(gè)整數(shù)并輸出。

#includc<stdio.h>

#include<sldlib.h>

#include<string.h>

#defineN1000

intmain()

(

chara[N];

inti,j=O,lcn,m;

gets(a);

len=strlen(a);

fbr(i=O;i<len;i++)

(

if(aLi]>='0'&&aliJ<='9')

(

m=a[i卜'O';

j=j*10+m;

)

}

printf("%d\n',,j);

return0;

)

8.2合并字符串

輸入兩個(gè)已經(jīng)按從小到大順序排列好的字符串,編寫一個(gè)合并兩個(gè)字符串的函數(shù),使合

并后的字符串,仍然是從小到大排列。

輸入:

兩個(gè)己經(jīng)排好順序(升序)的字符串

輸出:

一個(gè)合并在一起的有序(升序)的字符串

要求:

設(shè)計(jì)一個(gè)效率盡量高的算法,對(duì)每個(gè)字符串只掃描一遍就可以了。

如果采用先進(jìn)行串連接,然后再進(jìn)行排序的算法,則效率太低了

#include<stdio.h>

#include<stdlib.h>

#includc<string.h>

#defineN100

intmain()

(

chara[N],b[N],s[N];

inti=0,j=0,k=0;

gets(a);

gets(b);

whiIe((a[i]!='\0')&&(b[j]!=,\0'))

(

if(a[i]<b[j])

(

s[k++]=a[i++];

)

else

(

s[k++]=b[j++];

)

)

while((a[i]==>\0')&&(b[j]!=,\0,))

(

s[k++]=b|j++];

}

while((a[i]!=I\0')&&(b[j]==,\0,))

(

s[k++]=a[i++];

)

puts(s);

return0;

8.3刪除重復(fù)字符

背景:

輸入一個(gè)長(zhǎng)度不超過(guò)100的字符串,刪除串中的重復(fù)字符。

輸入:

輸入要檢查的字符串,長(zhǎng)度不超過(guò)100個(gè)字符。例如:abacaeedabcdcdo

輸出:

刪除重復(fù)字符后的字符串。例如:abcedo

#include<stdio.h>

#include<string.h>

#defineN100

intmain()

{

chara[N],b[N];

intij=l,k;

gets(a);

b[O]=a[O];

for(i=l;(a[i]!='\0');i++)

(

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

(

if(b[k]==a[i])

(

break;

)

)

if(k==j)

(

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

)

bljl^O,;

puts(b);

return0;

8.4刪除字符串中指定字符

輸入兩個(gè)字符串S1和S2,在S1中刪除任何S2中有的字符。例如,S1:

“abci23ad”,S2:“ai",則輸出“bc23d"°

輸入:兩個(gè)字符串S1和S2

輸出:刪除后的字符串S1

#includc<stdio.h>

#include<string.h>

#defineN100

intmain()

{

chara[N],b[N],c[N];

inti,j,len,k=0;

gets(a);

gets(b);

len=strlen(b);

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

(

for(j=0;b|jj!=,\0,;j++)

(

if(b[j]==a[i])

(

break;

)

)

if(len==j)

(

c[k++]=a[i];

cM^O';

puts(c);

return0;

1

8.5單詞有多少

用空格或換行分開的字符串稱為單詞。輸入多行字符串,直到遇到了單詞“s

溫馨提示

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

評(píng)論

0/150

提交評(píng)論