版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
期末考試說明
本次考試全部采用筆試形式,分為如下三種題型
一、程序閱讀題(10空X2分/空=20分)
二、程序修改題(10空X2分/空=20分)
三、程序設(shè)計題(6題X10分/題=60分)
程序閱讀和修改題主要涉及知識點如下:
scanf和printf、switch循環(huán)(for、while、do-while)及和break、continue結(jié)合、
二維數(shù)組處理、字符串處理、函數(shù)遞歸調(diào)用、static、宏定義展開、文件定義、打開fopen、
關(guān)閉fclose和讀寫操作(fscanf和fprintf)
程序設(shè)計題主要考核如下內(nèi)容:
1.單純的分支結(jié)構(gòu)
2.單純的一層循環(huán)結(jié)構(gòu)
3.實現(xiàn)完整的函數(shù):函數(shù)的定義、函數(shù)體的編寫、帶返回值的和不帶返回值的函數(shù)、值
傳遞、地址傳遞。涉及到分支、循環(huán)、數(shù)組、字符串、結(jié)構(gòu)體等。
以下內(nèi)容不做考試要求:
指向二維數(shù)組的指針、指針函數(shù)、指針數(shù)組、多級指針、共用體、枚舉、位運算、文件
fseek、ftelkfread和fwrite
計算機C語言上機題、
第四章
4.1溫度轉(zhuǎn)換,第一個數(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輸出一行星號
#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打印平行四邊形
問題描述
輸入圖形的高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編程計算
問題描述
編寫程序,輸入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ù)序列
問題描述
2358_1321_
有一個分?jǐn)?shù)序列:1235813輸入整數(shù)必求出其前n項
的和。
輸入
整數(shù)n
輸出
上述分?jǐn)?shù)序列的前n項之和
提示:輸出語句格式為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的值
問題描述
編寫程序,從鍵盤輸入整數(shù)n,求e的值。e=i+i/i!+i/2!+i/3!+..+i/n!注意:用
double型數(shù)據(jù)計算。
輸入
整數(shù)n
輸出
e的值
提示:輸出語句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ù)
問題描述
輸入兩個正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)
輸入
兩個正整數(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ù)
問題描述
輸出所有的水仙花數(shù)。所謂的水仙花數(shù)是指一個3位數(shù),其各位數(shù)字立方和等于該數(shù)本
身。例如153是一水仙花數(shù),因為153=13+53+33
輸入
無
輸出
所有的水仙花數(shù)提示:輸出語句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ù)
問題描述
一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如,6的因子為1,2,3,且
6=1+2+3,因此6是完數(shù)。
輸入
一個正整數(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素數(shù)
問題描述
輸入兩個正整數(shù)m和n,求出[m,n]區(qū)間的所有素數(shù)
輸入
兩個整數(shù)m和n
輸出
[m,n]區(qū)間的所有素數(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ù)
問題描述
輸入一個正整數(shù),判斷是否為回文數(shù)。
輸入
一個正整數(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貪吃的猴子
問題描述
有一只猴子,第一天摘了若干個桃子,當(dāng)即吃了一半,但還覺得不過癮,就又多吃了
一個。第2天早上乂將剩卜的桃子吃掉一半,還是覺得不過癮,就乂多吃了兩個。以后
每天早上都吃了前一天剩下的一半加天數(shù)個(例如,第5天吃了前一天剩下的一半加5
個)。到第n天早上再想吃的時候,就只剩下一個桃子了。
輸入
天數(shù)n
輸出
第一天的桃子個數(shù)。提示:輸出語句為
printf(HThemonkeygot%dpeachsinfirstday.\nn,sum);
輸入樣例
5
輸出樣例
Themonkeygot114peachsinfirstday.
提示:
問題分析:
總共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馬戲團人數(shù)
問題描述
一個馬戲團表演,n個座位全滿,全部門票收入是120元,現(xiàn)在知道,男人每人5元,
女人每人2元,小孩每人1角。根據(jù)總?cè)藬?shù),計算出男人、女人和小孩各多少人。
輸入
總?cè)藬?shù)n
輸出
男人、女人和小孩人數(shù),若n人無法滿足條件,則輸出“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迭代法
問題描述
用迭代法求x=。求平方根的迭代公式為:
要求前后兩次求出的X的差的絕對值小于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
利用以下所示的簡單迭代方法求方程:cos(x)-x=o的一個實根。
Xn+i=COS(Xn)
迭代步驟如下:
⑴輸入數(shù)據(jù)給XI;
(2)XO=X1,把XI的值賦給X0;
(3)xi=cos(xo),求出一個新的xi;
(4)若X0-X1的絕對值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2);
(5)所求XI就是方程cos(x)-x=o的一個實根,輸出XI,輸出語句為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求一個三位數(shù),其值等于其各位階乘之和
問題描述
編寫程序,求某三位數(shù),該數(shù)值的大小正好是組成這個數(shù)的三個位上的數(shù)字階乘之和。
輸入
無
輸出
滿足上述條件的三位數(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誰能出線
背景:
電視臺舉辦“超級學(xué)生”才藝大賽,由于報名人數(shù)狂多,所以要先進行分組預(yù)賽。按規(guī)定,
每10名學(xué)生為一個預(yù)賽小組,評委打出分?jǐn)?shù)(0~100分),各小組第一名可以進入下
一輪;如果有多名學(xué)生得分相同都是第一名,則可同時進入下一輪。
輸入:
按順序給出一個小組1O個人的最后得分(int)。
輸出:
能夠出線的學(xué)生序號(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)計素數(shù)個數(shù)
求出2到m之間(含m,m<=iooo)所有素數(shù)并放在數(shù)組a中。
輸入:正整數(shù)m
輸出:從小到大的所有素數(shù),及個數(shù)(素數(shù)輸出的時候用%4d來控制)
如:
輸入: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)的基本概念是:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大
數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后
比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),
將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第
一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第
2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)
是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列
中是第二大的數(shù))。如此下去,重更以上過程,直至最終完成排序。由于在排序
過程中總是小數(shù)往前放,大數(shù)往后放,相當(dāng)于氣泡往上升,所以稱作冒泡排序。
編寫程序,對輸入的十個數(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插入法排序
如果一個數(shù)組中保存的元素是有序的(由小到大),向這個數(shù)組中插入一個數(shù),使得插
入后的數(shù)組元素依然保持有序。
定義一個數(shù)組,長度為11,初始元素為10個,按照從小到大的方式輸入,然后輸入一
個要插入的元素,使得插入后仍然有序。
#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ù)
任意輸入一個自然數(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ù)組逆序輸出、
問題描述
從鍵盤上輸入一個數(shù)組(io個元素),將原數(shù)組逆序重新排列后輸出。要求輸出每個
元素時以一個空格隔開。
提示:
用第一個與最后一個交換。
#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求最大值
問題描述
要求從鍵盤輸入10個整型數(shù)據(jù),找出其中的最大值并顯示出來。
輸入范例
3o54-71027327671015002
輸出范例
3”67
提示
先假定第一個元素時最大值,然后和其他的元素一個一個的進行比較,直到找到最大值。
#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ù)組
問題描述:
程序定義了4X4的二維數(shù)組,請編寫程序,給二維數(shù)組賦值,并使數(shù)組下半三角元素
中的值乘以no
例如:
數(shù)組中的值為
1234
2234
3234
4234
假設(shè)n為10,則輸出結(jié)果如下:(輸出的數(shù)按照4位寬度來輸出,即%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在屏幕上輸出楊輝三角
楊輝三角形,又稱賈憲三角形,帕斯卡三角形,是二項式系數(shù)在三角形中的一種幾何排
列。
其實,中國古代數(shù)學(xué)家在數(shù)學(xué)的許多重要領(lǐng)域中處于遙遙領(lǐng)先的地位。中國古代數(shù)
學(xué)史曾經(jīng)有自己光輝燦爛的篇章,而賈憲三角的發(fā)現(xiàn)就是十分精彩的一頁。
楊輝三角有如下性質(zhì):
1、每行數(shù)字左右對稱,由1開始逐漸變大,然后變小,回到1。
2、第n行的數(shù)字個數(shù)為n個。
3、每個數(shù)字等于上一行的左右兩個數(shù)字之和。
編寫程序,輸入正數(shù)n,將所有數(shù)據(jù)存儲到二維數(shù)組中,并在屏幕上顯示對應(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球周邊元素之和
編寫?個程序,求出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存儲并輸出一個矩陣
編程,輸入n,存儲并輸出如下例(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ù)組中元素按順序編號
對數(shù)組a[io]中的十個整數(shù)從小到大進行連續(xù)編號,輸出各個元素的編號。要求不能
改變數(shù)組a中元素的順序,且相同的整數(shù)要具有相同的編號。例如數(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時,矩陣int就3][3],矩陣intb[3][3]。矩陣的數(shù)
據(jù)由用戶輸入。輸出新的矩陣C=a+bo輸出格式:COOCOlC02CIOCllC12C20C21C22
每兩個數(shù)字之間有1個空格
關(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ù)表格,最早來自于方程組的系數(shù)及常數(shù)所構(gòu)成
的方陣。這一概念由19世紀(jì)英國數(shù)學(xué)家凱利首先提出。矩陣概念在生產(chǎn)實踐中也有許
多應(yīng)用,比如矩陣圖法以及保護個人帳號的矩陣卡系統(tǒng)(由深圳網(wǎng)域提出)等等?!熬?/p>
陣”的本意也常被應(yīng)用,比如監(jiān)控系統(tǒng)中負(fù)責(zé)對前端視頻源與控制線切換控制的模擬設(shè)
備也叫矩陣。
設(shè)A為nxn階矩陣(即n行n列),第i行j列的元素是a(i,j),即:A=a(i,j)
定義A的轉(zhuǎn)置為這樣一個nxn階矩陣R,滿足B=aG,i),即b(i,j)=aG,i)(R的第i行
第j列元素是A的第j行第i列元素),記A'=B。(有些書記為AT=B,這里T為A的
上標(biāo))
直觀來看,將A的所有元素繞著一條從第1行第1列元素出發(fā)的右下方45度的
射線作鏡面反轉(zhuǎn),即得到A的轉(zhuǎn)置。
輸入:
有n+i行(2wnwio),第一行是一個整數(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ù),對每個整數(shù)的每一位數(shù)字統(tǒng)計0~9各個數(shù)字的出現(xiàn)次數(shù),求出現(xiàn)次
數(shù)最多的數(shù)字。
輸入:
有兩行,第一行是整數(shù)n(i<=n<=ioo),表示有n個整數(shù);第二行是n個整數(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裝箱問題
假設(shè)有n項物品,大小分別為si,S2,…,sn,其中si是整數(shù)且滿足:i<=si<=ioOo
要把這些物品裝入到容量為100的一批箱子(序號i~n)中。裝箱方法是:對每項物品
si,依次掃描所有這些箱子,把si放入足以能夠容下它的第一個箱子中(frst-fit策略)。
寫一個程序來模擬這個裝箱的過程。
輸入:
有兩行。第一行是整數(shù)n(n<=iooo),表示物品的個數(shù);第二行是n個整數(shù)si(si<=ioo),
分別表示n個物品的大小
輸出:
每個物品所在的箱子序號,并輸出所需的箱子數(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)換
描述
提取一個字符串中的所有數(shù)字字符(‘o'…'9')將其轉(zhuǎn)換為一個整數(shù)輸出。
輸入
一個以回車符為結(jié)束標(biāo)志的字符串(少于8。個字符)。
輸出
把字符串中的所有數(shù)字字符('o'...'9')轉(zhuǎn)換為一個整數(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合并字符串
輸入兩個已經(jīng)按從小到大順序排列好的字符串,編寫一個合并兩個字符串的函數(shù),使合
并后的字符串,仍然是從小到大排列。
輸入:
兩個己經(jīng)排好順序(升序)的字符串
輸出:
一個合并在一起的有序(升序)的字符串
要求:
設(shè)計一個效率盡量高的算法,對每個字符串只掃描一遍就可以了。
如果采用先進行串連接,然后再進行排序的算法,則效率太低了
#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ù)字符
背景:
輸入一個長度不超過100的字符串,刪除串中的重復(fù)字符。
輸入:
輸入要檢查的字符串,長度不超過100個字符。例如: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刪除字符串中指定字符
輸入兩個字符串S1和S2,在S1中刪除任何S2中有的字符。例如,S1:
“abci23ad”,S2:“ai",則輸出“bc23d"°
輸入:兩個字符串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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作總結(jié)之互聯(lián)網(wǎng)實習(xí)總結(jié)
- 2024年無機械動力飛機項目資金申請報告代可行性研究報告
- 《侵犯人身權(quán)利罪》課件
- 銀行員工績效評估制度
- 酒店餐飲服務(wù)流程優(yōu)化與提升制度
- 【大學(xué)課件】學(xué)習(xí)科學(xué)與技術(shù)
- 《保險業(yè)務(wù)需求分析》課件
- 學(xué)生關(guān)于珍愛生命的演講稿(34篇)
- 陜西省咸陽市武功縣2024屆九年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024數(shù)字醫(yī)療年度創(chuàng)新白皮書 醫(yī)療大模型開啟“百模大戰(zhàn)”數(shù)字醫(yī)療單筆融資創(chuàng)紀(jì)錄
- COPD教學(xué)講解課件
- (完整版)國際法期末考試習(xí)題
- 2萬噸/年燃料丁醇發(fā)酵工段工藝設(shè)計- 倒數(shù)第二版
- 2021-2022學(xué)年六年級上冊世界少年奧林匹克思維能力測評地方選拔活動(含答案解析)
- 《生物力學(xué)》配套教學(xué)課件
- 湘科版五年級(上冊)科學(xué)期末質(zhì)量測試題(含答案)
- 腦積水(實用課件)
- 《企業(yè)會計模擬實驗教程》答案
- 攝影技巧構(gòu)圖(共52張PPT)
- 廢氣治理設(shè)施運行管理規(guī)程
- 監(jiān)控中心報警記錄表
評論
0/150
提交評論