版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1.5請參照本章例題,編寫一個C程序,輸出以下信息:
VeryGood!
解:
mian()
{pHntf(〃**************************〃),
printf(z,\n,z);
printf("VeryGood!\nz/);
printf(/z\nw);
printf(z/**************************,,j*
)
1.6編寫一個程序,輸入a、b、c三個值,輸出其中最大值。
解:
mian()
{inta,b,c,max;
printf("請輸入三個數(shù)a,b,c:\nw);
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf("最大數(shù)為:"%d",max);
)
第三章
3.6寫出以下程序運行的結(jié)果。
main()
{charcl=,a;c2=/b;c3=,c;c4=>\101;c5=,\116,;
printf(//a%cb%c\tc%c\tabc\n//,cl,c2,c3);
printf(/z\t\b%c%cz,,c4,c5);
)
解:
aaubbuuuccuui_iuuuabe
ALIN
3.7要將"China"譯成密碼,譯碼規(guī)律是:用原來字母后面的第4個字母代替原來
的字母.例如,字母"A"后面第4個字母是"E"."E"代替"A"。因此,"China"應(yīng)譯
為"Glmre"。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變量的值
分別為,經(jīng)過運算,使(:1。2工34式5分別變?yōu)?、1、/,「「、官,
并輸出。
解:
#include<stdio.h>
main()
{charcl=/C/,c2=/h/,c3=,i/,c4=/n,,c5=/a,;
cl+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n”,cl,c2,c3,c4,c5);
}
運行結(jié)果:
密碼是Glmre
3.9求下面算術(shù)表達(dá)式的值。
(1)x+a%3*(int)(x+y)%利
設(shè)x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
設(shè)a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10寫出程序運行的結(jié)果。
main()
{int
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d”,i,j,m,n);
)
解:
9,11,9,10
3.12寫出下面表達(dá)式運算后a的值,設(shè)原來a=12。設(shè)a和n都已定義為整型變
且
單一O
(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a
(5)a%=(n%=2),n的值等于5
(6)a+=a-=a*=a
解:
⑴24⑵10⑶60⑷0⑸0⑹0
第四章
4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,cl='a',c2='b'。
想得到以下輸出格式和結(jié)果,請寫出程序(包括定義變量類型和設(shè)計輸出)。
a=_3_b=_4_c=_5
x=1.200000;y=2.400000zz=-3,600000
x+y=_3.600__y+z=-1.20__z+x=-2.40
cl='a'_or_97(ASCII)
c2='b'_or_98(ASCII)
main()
{inta=3,b=4,c=5;
longintu=51274,n=128765;
floatx=1.2,y=2.4,z=3.6;
charcl='a箕2='b';
printf("a=%2db=%2dc=%2d\n",a,bzc);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2fy+z=%5.2fz+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ldn=%9ld\n",u,n);
printf("%s%s%d%s\n","cl=,a,","or",cl,"(ASCII)");
printf("%s%s%d%s\n";'c2=,a,","or",c2,"(ASCII)");
)
4.7用scanf下面的函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,cl='A',
c2='a',問在鍵盤上如何輸入?
main()
(
inta,b;floatx,y;charclc2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_cl=%c_c2=%c,',&cl,&c2);
}
a=3__b=7
_x=8.5_y=71.82
_cl=A_c2=a
4.8設(shè)圓半徑r=l.5,圓柱高h(yuǎn)=3,求圓周長、圓面積、圓球表面積、圓球體積、
圓柱體積。用scanf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求文字說明,取小數(shù)點
后兩位數(shù)字。請編程序。
main()
{floatrhCl,Sa,Sb,Va,Vb;
scanf(”%f,%f”,&r,&h);
Cl=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/S;
Vb=Sa*h;
n
printf("Cl=%.2f\nzCl);
,,
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n/Sa,Sb,Va,Vb);
}
4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為
c=5(F-32)用
輸出要求有文字說明,取位2小數(shù)。
main()
{floatF,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
)
4.10編程序,用getchar函數(shù)讀入兩個字符給cl、c2,然后分別用函數(shù)和函數(shù)
輸出這兩個字符。并思考以下問題:(1)變量cl、c2應(yīng)定義為字符型或整形?
抑二者皆可?(2)要求輸出cl和c2值的ASCII碼,應(yīng)如何處理?用putchar函
數(shù)還是printf函數(shù)?(3)整形變量與字符變量是否在任何情況下都可以互相代
替?如:
charcl,c2;
與
intcl,c2;
是否無條件的等價?
#include,,stdio.h"
main()
{charclzc2;
cl=getchar();c2=getchar();
putchar(cl);putchar(,\n,);putchar(c2);putchar(,\n/);
)
#include"stdio.h"
main()
{charcl,c2;
cl=getchar();c2=getchar();
,,,,
printf(cl=%dc2=%d\n,cl/c2);
printf("cl=%cc2=%c\n"zclzc2);
}
第五章
5.1什么是算術(shù)運算?什么是關(guān)系運算?什么是邏輯運算?
解:略。
5.2C語言中如何表示"真"和"假"?系統(tǒng)如何判斷一個量的"真"和"假"?
解:設(shè)有一個邏輯表達(dá)式,若其結(jié)果為"真",則以1表示;若其結(jié)果為"假",則
以。表示。但是判斷一個邏輯量的值時,以0代表"真",以非0代表"假"。例如
3&&5的值為"真",系統(tǒng)給出3&&5的值為lo
5.3寫出下面各邏輯表達(dá)式的值。設(shè)a=3,b=4,c=5o
⑴a+b>c&&b==c
(2)a11b+c&&b-c
(3)!(a>b)&&!c||1
(4)!(x=a)&&(y=b)&&0
(5)!(a+b)+c-l&&b+c/2
解:
①。
⑵1
⑶1
(4)0
⑸1
5.4有3個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。
解:
方法一
#include<stdio.h>
main()
{inta,b,c;
printf("請輸入3個整數(shù):");
scanf("%d,%d,%d",&a,&b;&c);
if(a<b)
if(b<c)printf("max=%d\n",c);
elseprintf("max=%d\n",b);
elseif(a<c)printf("max=%d\n",c);
elseprintf("max=%d\n",a);
)
方法二:使用條件表達(dá)式,可以使程序更加簡明、清晰。
程序如下:
#include<stdio.h>
main()
{inta,bzc,temp,max;
printf(”請輸入3個整數(shù):”);
scanf(“%d,%d,%cT,&a,&b,&c);
temp=(a>b)?a:b;
max=(temp>c)?temp:c;
printf("3個整數(shù)的最大數(shù)是%d\n”,max);
)
5.5有一函數(shù):
寫一程序,輸入x值,輸出y值。
解:
#include<stdio.h>
main()
{intx,y;
printf("輸入x:
scanf("%d",&x);
if(x<l)
{y=x;
printf("x=%3d,y=x=%d\n",x,y);
)
elseif(x<10)
{y=2*x-l;
printf("x=%3d,y=2*x-l=%d\n",x,y);
)
else
{y=3*x-ll;
printf("x=%3d,y=3*x-ll=%d\n",x,y);
)
)
5,6給一個百分制成績,要求輸出等級分制B\CD,、乍、90分以上為個,80~90
分為E,70~79分為'C',60分以下為,D9
解:
程序如下:
#include<stdio.h>
main()
{floatscore;
chargrade;
case2:
printf(”請輸入學(xué)生成績:“);
scanf("%f",&score);
while(score>100||(score<0)
{printf("\n輸入有誤,請重新輸入:");
scanf("%f",&score);
)
switch((int)(score/10))
{case10:
case9:grade=,A,;break;
case8:grade=,B,;break;
case7:grade='C';break;
case6:grade=,D,;break;
case5:
case4:
case3:
case1:
case0:grade='E';
)
printf("^^l>%5.1ff相應(yīng)的等級是%c。\n",score,grade);
)
說明:對輸入的數(shù)據(jù)進(jìn)行檢查,如小于0或大于100,要求重新輸入。(int)(score/10)
的作用是將(score/10)的值進(jìn)行強制類型轉(zhuǎn)換,得到一個整型值。
5.7給定一個不多于5位的正整數(shù),要求:①求它是幾位數(shù);②分別打印出每
一位數(shù)字;③按逆序打印出各位數(shù)字。例如原數(shù)為321,應(yīng)輸出123。
解:
Winclude<stdio.h>
main()
{longintnum;
intindiv,ten,hundred,thousandzten_thousand,place;
printf(“請輸入一個整數(shù)(0-99999):");
scanf(”%ld”,&num);
if(num>9999)place=5;
elseif(num>999)place=4;
elseif(num>99)place=3;
elseif(num>9)place=2;
elseplace=l;
printf("place=%d\n"zplace);
ten_thousand=num/10000;
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
indiv=num%10;
switch(place)
{case5:printf(”%d,%d,%d,%d,%cT,ten_thc)usand/thousand,hundred,ten,indiv);
printf("\n反序數(shù)字為;");
,,,
pnntf(%d%d%d%d%d\n'Jndivrten/hundred/thousand/ten_thousand);
break;
case4:printf(”%d,%d,%d,%cT,thousand,hundred,tenjndiv);
printf("\n反序數(shù)字為:");
printf("%d%d%d%d\n"/indiv,ten,hundred,thousand);
break;
case3:printf("%d,%d,%d",hundred,tenjndiv);
printf("\n反序數(shù)字為:");
,,
pnntf("%d%d%d\n/indi\4ten,hundred);
break;
case2:printf("%d,%cTlen,indiv);
printf("\n反序數(shù)字為:");
printf("%d%d\n"/indiv,ten);
break;
case1:printf("%d",indiv);
printf("\n反序數(shù)字為:");
printf("%d\n",indiv);
break;
)
)
5.8企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤I低于或等于10萬元時,獎金可提成
10%;利潤高于10萬元,低于20萬元(100000<I<200000)時,其中10萬元按
10%提成,高于1。萬元的部分,可提成7.5%;200000<1<400000時,其中20
萬元仍按上述辦法提成(下同),高于20萬元的部分按5%提成;400000<1<600000
時,高于40萬元的部分按3%提成;600000〈1410000。。時,高于60萬的部分按
1.5%提成;1>1000000時,超過100萬元的部分按1%提成。從鍵盤輸入當(dāng)月利潤
I,求應(yīng)發(fā)放獎金總數(shù)。要求:⑴用if語句編程序;(2)用switch語句編程序。
解:計算利潤時,要特別注意不同利潤的不同提成比例。例如,利潤為15萬元,
其中有10萬元按10%的比例提成,另外5萬元則按7.5%提成。
⑴用if語句編程序。
#include<stdio.h>
main()
{longi;
floatbonus,bonl/bon2/bon4,bon6,bonl0;
bonl=100000*0.1;
bon2=bonl+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bonl0=bon6+400000*0.015;
printf("請輸入利潤i:");
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1;
elseif(i<=200000)
bonus=bonl+(i-100000)*0.075;
elseif(i<=400000)
bonus=bon2+(i-200000)*0.05;
elseif(i<=600000)
bonus=bon4+(i-400000)*0.03;
elseif(i<=1000000)
bonus=bon6+(i-600000)*0.015;
else
bonus=bonl0+(i-1000000)*0.01;
printf("獎金是%10.2f\n",bonus);
)
此題的關(guān)鍵在于正確寫出每一區(qū)間的獎金計算公式。例如利潤在10萬元至20
萬時,獎金應(yīng)由兩部分組成:①利潤為10萬元時應(yīng)得的獎金。即100000x0.1;
②10萬元以上部分應(yīng)得的獎金。即(num-100000)x0.075。同理,20萬?40萬這
個區(qū)間的獎金也應(yīng)由兩部分組成:①利潤為20萬元時應(yīng)得的獎金,即100000X
01x10萬x0.075;②20萬元以上部分應(yīng)得的獎金,BP(num-200000)x0.05o程
序中先把10萬、20萬、40萬、60萬、100萬各關(guān)鍵點的獎金計算出來,即bonl、
bon2、bon4>bon6、honlO;然后再加上各區(qū)間附加部分的獎金。
(2)用switch語句編程序。
輸入利潤i,確定相應(yīng)的提成等級branch
根據(jù)branch確定獎金值
0獎金=i*0.1
1獎金=bonl+(i-105)*0.075
2獎金=bon2+(i-2*105)*0.05
3
4獎金=bon4+(i-4*105)*0.03
5
6獎金=bon6+(i-6*105)*0.015
7
8
9
10獎金=bonl0+(i?106)*0.01
輸出獎金
#include<stdio.h>
main()
{longi;
floatbonus,bonl,bon2,bon4,bon6,bonlO;
intc;
bonl=100000*0.1;
bon2=bonl+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bonl0=bon6+400000*0.015;
printf(”請輸入利潤i:“);
n
scanf(%ld"z&i);
c=i/100000;
if(c>10)c=10;
switch(c)
{case0:bonus=l*0.1;break;
case1:bonus=bonl+(i-100000)*0.075;break;
case2:
case3:bonus=bon2+(i-200000)*0.05;break;
case4:
case5:bonus=bon4+(i-400000)*0.03;break;
case6:
case7:
case8:
case9:bonus=bon6+(i-600000)*0.015;break;
case10:bonus=bonl0+(i-1000000)*0.01;
}
printf("獎金是%10.2f:bonus);
)
5.9輸入4個整數(shù),要求按由大到小的順序輸出。
解:此題采用依次比較的方法排出其大小順序。在學(xué)習(xí)了循環(huán)和數(shù)組以后,可以
有更多的排序方法。
#include<stdio.h>
main()
{intt,a,b,c,d;
printf(”請輸入4個整數(shù):”);
scanf(“%d,%d,%d,%cT,&a,&b,&c,&d);
printf("\na=%d/b=%dzc=%d/d=%d\n",a,b/c,d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=a;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf("排序結(jié)果如下:\n");
printf("%dz%d,%d,%d\n",a/b,c,d);
}
5.10有4個圓塔,圓心分別為(2,2)、(.2,2)、(2,-2)>(-2,-2),圓半徑為1。
這4個塔的高度分別為10m。塔以外無建筑物。今輸入任一點的坐標(biāo),求該點的
建筑高度(塔外的高度為零)。
程序如下:
#include<stdio.h>
main()
{inth=10;
floatXl=2,yl=2,x2=?2,y2=2,x3=?2,y3=-2,x4=?2,y4=?2,x,y,dl,d2,d3,d4;
printf("請輸入一個點(x,y):");
scanf("%f,%f",&x,&y);
dl=(x-xl)*(x-xl)+(y-yl)*(y-yl);
d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);
d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);
d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);
if(dl>l&&d2>l&&d3>l&&d4>l)h=0;
printf("該點高度為%d\n",h);
)
第六章
第六章循環(huán)控制
6.1輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
main()
{long
scanf(“%ld,%lcT,&m,&n);
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0)s=i;}
if(m>=n)j=m;
elsej=n;
for(;!(j%m==0&&j%n==0);j++);
printf(,,s=%ldj=%ld\n",sj);
)
6.2輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其他字符的個數(shù)。
#include"stdio.h"
main()
{charc;inti=O,j=O,k=O,l=O;
while((c=getchar())!=,\n,)
{if(c>=65&&c<=901|c>=97&&c<=122)i++;
elseif(c>=48&&c<=57)j++;
elseif(c==32)k++;
else1++;}
,
printf("i=%d/j=%d,k=%dj=%d\n'zijzkj);
}
6.3求Sn=a+aa+aaa+...+aa...aaa(有n個a)之值,其中a是一個數(shù)字。例如:
2+22+222+2222+22222(n=5),n由鍵盤輸入。
#include"math.hn
main()
{intn,sum=0,i=l,s=2;
scanf("%d",&n);
while(i<=n)
{sum=sum+s;s=s+2*pow(10,i);
i++;}
,,,,
printf(sum=%d\n,sum);
}
6.4求,(即求l!+2!+3!+4!+5!+.??+20!)
main()
{intn,i=l;longsum=0,s=l;
scanf(”%d”,&n);
while(i<=n){s=s*i;sum=sum+s;i++;}
printf("sum=%ld\n",sum);
}
6.5求
main()
{doublei=l,j=lzk=lzsl=0/s2=0,s3=0/sum;
for(;i<=100;i++)sl=sl+i;
for(;j<=50;j++)s2=s2+j*j;
for(;k<=10;k++)s3=s3+l/k;
sum=sl+s2+s3;
printf("sum=%f\n",sum);
)
6.6打印出所有"水仙花數(shù)",所謂"水仙花數(shù)"是指一個三位數(shù),其各位數(shù)字立方
和等于該本身。例如:153是一個水仙花數(shù),因為153=1八3+5八3+3A3。
#include"math.h"
main()
{intx=100,a,b,c;
while(x>=100&&x<1000){a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b;
if(x==(pow(a,3)+pow(b,3)+pow(c,3)))printf("%5d",x);x++;}
}
6.7一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。例如,6的因子為
1、2、3,而6=1+2+3,因此6是院數(shù)”。編程序找出1000之內(nèi)的所有完數(shù),并
按下面格式輸出其因子:
6itsfactorsare1>2、3
main()
{intm,i,j,s;
for(m=6;m<10000;m++)
{s=l;
for(i=2;i<m;i++)
if(m%i==0)s=s+i;
if(m-s==0)
{printf("%5ditsfastorsare1"zm);for(j=2;j<m;j++)if(m%j==0)
printf("%d”,j);printf(”\n”);}
)
}
或
main()
{intm,i,j,s;
for(m=6;m<1000;m++)
{s=m-l;
for(i=2;i<m;i++)
if(m%i==0)s=s-i;
if(s==O)
{printf("%5ditsfastorsare1",m);for(j=2;j<m;j++)if(m%j==0)
printf("%d"J);pnntf(',\nn);}
}
)
6.8有一分?jǐn)?shù)序列:
求出這個數(shù)列的前20項之和。
main()
{inti=lzn;doublet,x=l,y=2,s,sum=0;
scanf(“%ld”,&n);
while(i<=n){s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}
printf("%f\n”,sum);
)
6.9一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它
在第10次落地時共經(jīng)過多少米?第10次反彈多高?
main()
{inti,n;doubleh=100/s=100;
scanf("%d",&n);
for(i=l;i<=n;i++)
{h*=0.5;if(i==l)continue;s=2*h+s;}
printf("h=%f,s=%f\n",h,s);
)
6.10猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又
多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃一個。以后每天早上
都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子
了。求第一天共摘多少桃子。
main()
{inti=l,sum=0;
for(;i<=10;sum=2*sum+lj++);
,,,,
printf(sum=%d\n/sum);
}
6.11用迭代法求。求平方根的迭代公式為:
要求前后兩次求出的得差的絕對值少于0.00001c
#include"math.h"
main()
{floatx0,xl,a;
scanf("%f",&a);
xl=a/2;
do
{x0=xl;xl=(x0+a/x0)/2;}
while(fabs(x0-xl)>=0.00001);
printf(”%.3f\n",xl);
}
6.12用牛頓迭代法求方程在1.5附近的根。
main()
{doublex,y;x=1.5;
do{y=2*x*x*x-4*x*x+3*x-6;
x=x-y/(6*x*x-8*x+3);}
while(y!=0);
n
printf(x=%.3f\n"zx);
)
6.13用二分法求方程在(-10,10)之間的根
main()
{doublexlzx2,yl,y2;xl=-10;x2=10;
do{yl=2*xl*xl*xl-4*xl*xl+3*xl-6;
xl=xl-yl/(6*xl*xl-8*xl+3);}
while(yl!=0);
do
{y2=2*x2*x2*x2-4*x2*x2+3*x2-6;
x2=x2-y?/(6*x2*x2-8*x2+3);}
while(y2!=0);
,,,
printf(xl=%.3f/x2=%.3f\n',xl/x2);
}
6.14打印以下圖案
***
#include"math.h"
main()
{inti,j,k;
for(i=0;i<=3;i++)
{for(j=0;j<=2-i;j++)
printf("");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
for(i=0;i<=2;i++)
{for(j=0;j<=i;j++)
printf("");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
)
第七章
第七章數(shù)組
7.1用篩法求之內(nèi)的素數(shù)。
main()
{intij,a[100];
for(i=2;i<100;i++)
{a[i]=i;
for(j=2;j<=i;j++)
{if(j<i)
if(a[i]%j==O)
break;
if(a[i]-j==O)
printf("%5d",a[i]);
)
)
printf("\n");
)
或
#include"math.h"
main()
{staticintij,k,a[98];
for(i=2;i<100;i++)
{a[i]=i;k=sqrt(i);
for(j=2;j<=a[i];j++)
if(j<k)if(a[i]%j==O)
break;
if(j>=k+l)
printf("%5d",a[i]);
)
printf("\n");
)
7.2用選擇法對10個整數(shù)從小到大排序。
main()
{inti,j,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=l;j<10;j++)
for(i=0;i<=9-j;i++)
if(a[i]>a[i+l])
{t=a[i+l];a[i+l]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);
)
或
main()
{staticinta[10],i,j,k,t;
for(i=l;i<ll;i++)
scanf("%d",&a[i]);
for(j=l;j<10;j++)
for(i=l;i<=10-j;j++)
if(a[i]>a[i+l])
{t=a[i+l];a[i+l]=a[i];a[i]=t;}
for(i=l;i<ll;i++)
printf("%d",a[i]);
printf("\n");
)
7.3求一個3x3矩陣對角線元素之和。
main()
{inti=0,j=0,a[3][3],sl,s2;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
sl=a[0][0]+a[l][l]+a[2][2];
s2=a[0][2]+a[l][l]+a[2][0];
printf("sl=%d,s2=%d\n",sl,s2);
)
或
main()
{
staticinti,j,sl,s2,a[3][3];
for(i=l;i<=3;i++)
for(j=l;j<=3;j++)
scanf("%d",&a[i][j]);
sl=a[l][l]+a[2][2]+a[3][3];
s2=a[l][3]+a[2][2]+a[3][l];
printf("%d,%d\n",sl,s2);
)
7.4已有一個已排好的數(shù)組今輸入一個數(shù)要求按原來排序的規(guī)律將它插入數(shù)組
中。
main()
{staticinta[10]={l,7,8,17,23,24,59,62,101};inti,j,t;
scanf("%d",&a[9]);
for(i=9;i>0;i-)
if(a[i]<a[i-l])
{t=a[i-l];a[i-l]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);printf("\n");
)
或
main()
(
staticinta[5]={l,4,5,6,7};
inti,t,b;
scanf("%d",&b);
for(i=0;i<5;i++)
{if(b<=a[i])
{t=a[i];a[i]=b;b=t;}
printf("%d",a[i]);}
printf("%d",b);
)
7.5將一個數(shù)組的值按逆序重新存放,例如,原來順序為:8,6,5,4,lo要求
改為:1,4,5,6,8o
main()
{inti,b[10];
for(i=0;i<10;i++)
scanf("%d"z&b[i]);
for(i=9;i>-l;i—)
printf("%5d",b[i]);
printf("\n");}
7.6打印出以下楊輝三角形(要求打印出10行)。
1
11
121
1331
14641
15101051
main()
(
staticintm,n,k,b[15][15];
b[0][l]=l;
for(m=l;m<15;m++)
{
for(n=l;n<=m;n++)
(
b[m][n]=b[m-l][n-l]+b[m-l][n];
printf("%-5d",b[m][n]);
)
printf("\n");
)
)
)
或
main()
{inti,j,n,k,a[10][10];
static3[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1});
a[l][l]=l;
for(k=2,k<ll;k++)
for(i=2;i<=k;i++)
for(j=2;j<=i;j++)
a[i][j]=a[i-l][j-l]+a[i-l][j];
for(k=l;k<ll;k++)
for(i=l;i<=k;i++)
for(j=l;j<=i;j++)
printf("%d",a[i]U]);
)
7.7打印"魔方陣",所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線
之和均相等。例如,三階魔方陣為
816
357
492
要求打印出由1?n2的自然數(shù)構(gòu)成的魔方陣。
解:
#include<stdio.h>
main()
{inta[16][16],i,i,k,pzm,n;
P=l;
while(p==l)
{printf("Entern(n=l-15):");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))p=0;
)
for(i=l;i<=n;i++)
for(j=l;j<=n;j++)a[i][j]=O
7-8
Winclude<iostream>
voidmain()
inta[4][4],i,j,max,min,kl,k2,flag;
printf("輸入一個4*4的數(shù)組\n\n");
for(i=0;i<4;i++)
(
for(j=0;j<4;j++)
(
scanf("%d",&a[i][j]);
}
}
printf("鞍點為:\n\n");
for(i=0;i<4;i++)
(
max=a[i][O];
for(j=0;j<4;j++)
(
if(max<=a[i][j])
(
max=a[i][j];
kl=j;
}
}
min=a[O][kl];
for(j=0;j<4;j++)
(
if(min>=a[j][kl])
{
min=a[j][kl];
k2=j;
)
}
if((max!=min))flag=O;
else
(
flag=l;
printf("%d\n",max);
break;
}
}
if(flag==O)printf("不存在\n\n");
)
7-9
#include<iostream>
voidmain()
floata[15]={100,98,65,55,34,23,23,12,11,9,7,6,43,2}^;
intijow,high,mid;
printf("原數(shù)組為:\n\n");
for(i=0;i<15;i++)
(
printf("%6.2f"za[i]);
)
printf("\n\n輸入一個數(shù)n\n\n");
scanf("%f",&n);
low=0;
high=14;
i=0;
while(low<=high)
(
mid=(low+high)/2;
if(a[mid]==n)
(
printf("該數(shù)是數(shù)組中第%d個元素\n\n",mid+l);
i++;
break;
)
elseif(a[mid]<n)high=mid-l;
elselow=mid+l;
)
if(i==0)printf(、無此數(shù)!!\n\n");
}
7-10
#include<iostream>
voidmain()
(
chara[3][80];
inti/j/upon=0,low=0,num=0/spa=0zoth=0;
for(i=0;i<3;i++)
(
printf("輸入第%d行文字\n\n'i);
gets(a[i]);
for(j=0;j<80&&a[i][j]!=,\0,;j++)
?f(3[i]U]>=,A'&&a[i][j]<=,Z')upon+=l;
elseif(a[i][j]>='a'&&a[i][j]<=,z,)low+=l;
elseif(a[i][j]>=48&&a[i][j]<=57)num+=l;
elseif(a[i][j]=='')spa+=l;
elseoth+=l;
)
)
printf("英文大寫字母:%d4^\n\n",upon);
printf("英文小寫字母:%dj\n\n",low);
printf("數(shù)字:%dj\n\n",num);
printf("空格:%d個\n\n",spa);
printf("其他字符:%d個\n\n",oth);
)
7-11
Winclude<iostream>
voidmain()
(
inti,j;
for(i=0;i<5;i++)
(
for(j=0;j<=i;j++)
{
printf("");
}
for(j=i;j<i+5;j++)
(
printf("*");
)
printf("\n");
)
)
7-12
#include<iostream>
voidmain()
{
chara[80],b[80];
inti,j;
printf("輸入密碼\n\n");
gets(a);
for(i=0;i<80&&a[i]!='\0';i++)
if((a[i]>='A')&&(a[i]<='Z'))
b[i]=155-a[i];
)
elseif((a[i]>='a')&&(a[i]<='z'))
|
b[i]=219-a[i];
)
elseb[i]=a[i];
}
b[i]=>\O';
printf("密文為:\n\n");
puts(a);
printf("原文為:\n\n");
puts(b);
7-13
#include<iostream>
voidmain()
{
chara[80],b[80];
inti,j,k;
printf("輸入第1個字符串\n\n");
gets(a);
printf("輸入第2個字符串\n\n");
gets(b);
for(i=0;i<80;i++)
(
if(a[i]=='\O')
(
k=i;
for(j=0;j<80&&b[j]!='\0';j++)
(
a[k]=b[j];
k++;
)
a[k]='\O';
break;
}
}
printf("連接后字符串為:\n\n");
puts(a);
}
7-14
#include<iostream>
voidmain()
(
chara[80],b[80];
intij,k;
printf("輸入第1個字符串\n\n");
gets(a);
printf("輸入第2個字符串\n\n");
gets(b);
for(i=0;(i<80)&&(a[i]!='\0')&&(b[i]!='\0');i++)
(
k=a[i]-b[i];
if(k>0)
(
printf("\n\n字符串a(chǎn)大于字符串b:%4d\n\n",k);
break;
}
elseif(k<0)
(
printf("\n\n字符串a(chǎn)小于字符串b:%4d\n\n",k);
break;
)
elsek=0;
}
if(k==O)printf("\n\n字符串a(chǎn)等于字符串b:%4d\n\n",k);
)
7-15
#include<iostream>
voidmain()
|
charsl[80],s2[80];
inti,j;
printf("輸入數(shù)組sl\n\n");
gets(sl);
printf("輸入數(shù)組s2\n\n");
gets(s2);
for(i=0;i<80&&s2[i]!='\0';i++)
(
sl[i]=s2[i];
}
sl[i]='\O';
printf("\n\n復(fù)制后的數(shù)組為:\n\n");
puts(sl);
)
第八章
8-1
#include<iostream>
voidmain()
(
intmax_div(intjnt);
intmin_mul(int,int);
intm,n;
printf("輸入兩個整數(shù)\n\n“);
scanf("%d%d",&m,&n);
if(max_div(m,n)==O)printf("\n\n無最大公約數(shù)為\n\n“);
elseprintf("\n\n最大公倍數(shù)為:%d\n\n"zmax_div(mzn));
printf("\n\n最大公倍數(shù)為:%d\n\n"/min_mul(m,n));
}
intmax_div(intkl,intk2)
(
intmin(intjnt);
inti,k,flag;
k=min(kl,k2);
for(i=k;i>l;i-)
(
if((kl%i==0)&&(k2%i==0))
(
return(i);
flag=l;
break;
)
elseflag=O;
)
if(flag==O)return(O);
)
intmin_mul(intkljntk2)
(
intmax(intjnt);
inti,k;
k=max(kl,k2);
for(i=k;;i++)
if((i%kl==O)&&(i%k2==O))
return(i);
break;
)
}
)
intmin(intkljntk2)
(
intmin;
min=kl;
if(kl>k2)min=k2;
return(min);
}
intmax(intkljntk2)
(
intmax;
max=kl;
if(kl<k2)max=k2;
return(max);
)
8-2
#include<iostream>
Winclude<math.h>
voidmain()
(
voidrootl(float,float,float);
voidroot2(float,float,float);
voidroot3(float,float,float);
floata,b,c,k;
printf("輸入a,b,c的值\n\n“);
',
scanf(%f%f%f",&a,&b/&c);
k=b*b-4*a*c;
if(k>0)rootl(a,b,c);
elseif(k==O)root2(a,b,c);
elseroot3(a,b,c);
}
voidrootl(floata,floatb,floatc)
(
floatp,q;
p=-b/(2*a);
q=sqrt(b*b-4*a*c)/(2*a);
方程的兩個根為:
printf("\n\nxl=%6.2f/x2=%6.2f\n\n",p+q,p-q);
)
voidroot2(floata,floatb,floatc)
(
floatp;
p=-b/(2*a);
printf("\n\n方程的兩個根為:xl=x2=%6.2f\n\n",p);
}
voidroot3(floata,floatb,floatc)
(
floatp,q;
p=-b/(2*a);
q=sqrt(-b*b+4*a*c)/(2*a);
方程的兩個根為:
printf("\n\nxl=%6.2f+%6.2fi,x2=%6.2f-%6.2fi\n\n",p,q,pzq);
}
8-3
#include<iostream>
voidmain()
(
intprime(int);
intx;
printf(“輸入一個正整數(shù)\n\n");
scanfC%d';&x);
if(prime(x)==O)printf("\n\n此數(shù)為素數(shù)\n\n“);
elseprintf("\n\n此數(shù)不是素數(shù)\n\n");
}
intprime(intx)
(
inti,flag;
for(i=2;i<x;i++)
(
if(x%i==0)
(
flag=l;
break;
)
elseflag=0;
)
return(flag);
}
8-4
#include<iostream>
voidmain()
voidexchange(inta[3][3]);
inta[3][3],i,j;
printf("輸入一個3*3的矩陣\n\n");
for(i=0;i<3;i++)
(
for(j=0;j<3;j++)
(
scanf("%d",&a[i][j]);
}
}
exchange(a);
print耳"\n\n轉(zhuǎn)置后的矩陣為:\n\n");
for(i=0;i<3;i++)
(
for(j=0;j<3;j++)
(
printf("%d",a[i][j]);
}
printf("\n");
)
)
8-5
#include<iostream>
voidmain()
(
voidexchange(charstr[]);
charstr[80];
printf("輸入一個字符串\n\n");
gets(str);
exchange(str);
printf("\n\n反序字符串為:\n\n");
puts(str);
)
voidexchange(charstr[])
(
inti,j,k;
chartemp;
for(i=0;;i++)
(
if(str[i]=='\O')break;
}
k=i/2;
for(j=0;j<=k;j++)
temp=str[j];
str[j]=str[i-l-j];
str[i-l-j]=temp;
}
str[i]='\O';
)
8-6
#include<iostream>
voidmain()
(
voidstrcat(charstrl[],charstr2[]);
charstrl[80],str2[80];
printf("輸入strl\n\n");
gets(strl);
printf("\n\n輸入str2\n\n");
gets(str2);
strcat(strl,str2);
printf("\n\n連接后的字符串為:\n\n");
puts(strl);
}
voidstrcat(charstrl[],charstr2[])
(
inti,j;
for(i=0;;i++)
(
if(strl[i]=='\O')
(
for(j=0;str2U]!='\0';j++)
|
strl[i]=str2[j];
i+=l;
}
break;
}
}
strl[i]='\O';
)
8-7
#include<iostream>
voidmain()
voidstrcpy(charstrl[],charstr2[]);
charstrl[80],str2[80];
printf("輸入str2\n\n");
gets(str2);
strcpy(strl,str2);
printf("\n\n復(fù)制后的字符串為:\n\n");
puts(strl);
)
voidstrcpy(charstrl[],charstr2[])
{
intij=0;
for(i=0;str2[i]!='\0';i++)
(
if((str2[i]=='a')||(str2[i]=='e')||(str2[i]=='i')||(str2[i]=='o')||(str2[i]=='u'))
(
strl[j]=str2[i];
j++;
}
}
strl[j]=,\O';
)
8-8
#include<iostream>
voidmain()
(
voidstradd(charstr[]);
charstr[80];
printf("輸入一串?dāng)?shù)字\n\n");
gets(str);
stradd(str);
printf("\n\n加空格后的字符串\n\n");
puts(str);
)
voidstradd(charstr[])
(
chara[80];
inti=0,j;
for(j=0;str[j]!='\0';j++)
(
a[i]=str[j];
a[i+l]='';
i+=2;
)
a[i]='\O';
for(i=0;a[i]!=,\0';i++)
str[i]=a[i];
}
str[i]='\O';
}
8-9
#include<iostream>
voidmain()
voidnum(charstr[]Jnta[]);
charstr[80];
inta[4]={0};
printf("輸入一個字符串\n\n“);
gets(str);
num(str,a);
printf("字母個數(shù)為%d\nn,a[O]);
printf("數(shù)字個數(shù)為%d\n';a[l]);
printf("空格個數(shù)為%d\n",a[2]);
printf("其它字符個數(shù)為:%d\n",a[3]);
}
voidnum(charstr[],inta[])
inti/word=0/num=0,span=0,oth=0;
for(i=0;str[i]!='\0';i++)
if((str[i]>='A'&&str[i]<=,Z,)||(str[i]>=,a'&&str[i]<=,z,))word+=l;
elseif(str[i]>=48&&str[i]<=57)num+=l;
elseif(str[i]=='*)span+=l;
elseoth+=l;
)
a[0]=word;
a[l]=num;
a[2]=span;
a[3]=oth;
)
8-10
#include<iostream>
voidmain()
intword(charc);
intlongest(charstr[]);
inti;
charstr[80];
printf("輸入一行字符串\n\n");
gets(str);
printf("\n\n最長的單詞為:\n\n");
for(i=longest(str);word(str[i]);i++)
printf("%c",str[i]);
printf("\n");
)
intword(charc)
(
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return1;
elsereturn0;
)
intlongest(charstr[])
(
inti,flag=ljen=0zpoint,max_len=0,max_point;
for(i=0;i<=strlen(str);i++)
(
if(word(str[i]))
(
if(flag==l)
{
point=i;
flag=0;
)
elselen++;
}
else
(
flag=l;
if(len>max_len)
|
max_len=len;
max_point=point;
)
len=0;
)
}
return(max_point);
}
8-11
Winclude<iostream>
voidmain()
(
charstr[80];
voidsort(charstr[]);
printf("輸入一個字符串\n\n");
gets(str);
sort(str);
printf("\n\n字符由小到大排序為:\n\n");
puts(str);
)
voidsort(charstr[])
(
inti,j;
chartemp;
for(i=0;i<strlen(str);i++)
(
for(j=0;j<strlen(str)-i-l;j++)
(
if(str[j]>str[j+l])
(
temp=str[j];
str[j]=str[j+l];
str[j+l]=temp;
)
)
}
)
8-12
Winclude<iostream>
#include<math.h>
voidmain()
{
inta,b,c,d;
floatroot(inta,intb,intc,intd);
printf("輸入a,b,c,d\n\n");
seanf("%d%d%d%d",&a,&b,&c,&d);
printf("\n\n在1附近的根為:%f\n\n",root(a,b,c,d));
)
floatroot(inta,intbjntc,intd)
floatx=l/xl/f/fl;
do
(
xl=x;
f=((a*xl+b)*xl+c)*xl+d;
fl=(a*xl+b)*xl+c;
x=xl-f/fl;
}while(fabs(x-xl)>=le-5);
return(x);
)
8-13
#include<iostream>
voidmain()
(
floatp(intjloat);
intn;
floatx;
printf("輸入n和x\n\nH);
scanf(',%d%f",&n,&x);
printf("\n\n%d階勒德讓多項式的值為:%f\n\n",n,p(n,x));
)
floatp(intn,floatx)
(
if(n==0)return1;
elseif(n==l)returnx;
elsereturn((2*n-l)*x-p(n-l,x)-(n-l)*p(n-2,x))/n;
}
8-14
#include<iostream>
#definenl2
Wdefinen25
floata_stu[nl],a_cou[n2];
voidmain()
(
voidinput(floata[][n2]);
voidstu_aver(floata[][n2]);
voidcou_aver(floata[][n2]);
inthightest(int*s,int*c,floata[][n2]);
floatd(floata[][n2]);
inti,j,s=O,c=O;
floatscore[nl][n2],h;
input(score);
stu_aver(score);
cou_aver(score);
printf("\n\n序號課程12345平均成績\n\n");
for(i=0;i<nl;i++)
{
printf("NO.%d",i+l);
for(j=0;j<n2;j++)
(
printf("%8.2f",score[i][j]);
)
printf("%8.2f\n\n",a_stu[i]);
)
printf("課程平均,
for(i=0;i<n2;i++)
(
printf("%8.2f',a_cou[i]);
)
h=hightest(&s,&c,score);
printf("\n\n最高成績?yōu)椋海是第%d號學(xué)生,第%d門課的成績\n\n",h,s,c);
printf("平均方差為:%f\n\n",d(score));
}
voidinput(floata[][n2])
(
intij;
for(i=0;i<nl;i++)
(
printf("\n\n輸入%d個學(xué)生的5個成績\n\n",i+l);
for(j=0;j<n2;j++)
(
scanf("%f",&a[i][j]);
)
)
)
voidstu_aver(floata[][n2])
(
inti,j;
floats;
for(i=0;i<nl;i++)
(
s=0;
for(j=0;j<n2;j++)
s+=a[i][j];
}
a_stu[i]=s/n2;
}"
}
voidcou_aver(floata[][n2])
(
intij;
floats;
for(i=0;i<n2;i++)
(
s=0;
for(j=0;j<nl;j++)
(
s+=a[j][i];
}
a_cou[i]=s/nl;
}"
)
inthightest(int*sjnt*c,floata[][n2])
(
floathightest=O;
inti,j;
for(i=0;i<nl;i++)
(
for(j=0;j<n2;j++
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)制箱梁分包合同的相關(guān)規(guī)定
- 高校校園超市供應(yīng)合同
- 宣傳服務(wù)合同領(lǐng)先
- 熱水器保養(yǎng)維護(hù)合同
- 石英砂采購合同格式
- 酒品選購合同模板
- 精裝房買賣合同樣式
- 居間合同協(xié)議書樣本格式
- 官方認(rèn)可房地產(chǎn)借款合同
- 房屋買賣合同專家律師
- 個人形象與職業(yè)形象塑造
- 工業(yè)互聯(lián)網(wǎng)安全靶場介紹
- 股骨頸骨折的護(hù)理查房66014
- 柴火雞火鍋營銷方案
- 七年級語文閱讀理解概括類題型整合訓(xùn)練(含答案)
- 廣西中職對口升學(xué)《英語》模擬測試試卷及答案
- 地連墻行業(yè)分析
- 2024年新聞記者證培訓(xùn)考試題庫(含答案)
- 開展STEAM融合生物學(xué)教學(xué)的嘗試以實踐項目“嘗試制作真核細(xì)胞三維結(jié)構(gòu)模型”為例
- 柯氏評估模型評估培訓(xùn)方案
- 康養(yǎng)旅游策劃方案
評論
0/150
提交評論