版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章:求值法
2-1.有三個(gè)數(shù)a,b,c,要求按從大到小的順序把他們輸出。
#include"stdio.h"
voidfun(inta,intb,intc)
(
intt;
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("%d,%d,%d",czb,a);
)
voidmain()
(
inta,b,c;
printf("inputnumber:");
scanf("%d%d%d",&a,&b/&c);
fun(a,b,c);
printf("\n");
)
2-2.給定n個(gè)數(shù),求這些數(shù)中的最大值。
#incluh>voidmain()
{inti,j,temp,n;inta[1000];scanf("%d",n);for(i=0;scanf("%d"za[i]);for(j)
{f-j;i++)
{if(a[i]>a[i+l])
{temp=a[i];a[i]=a[i+1];a[i+l]=temp;}
printf("%d\n"za[n]);
)
2-3.求l+2+3+.??+100的和。
#include"stdio.h"
voidmain()
(
intnum,sum=0;
for(num=l;num<=100;num++)
(
sum+=num;
)
printf("%d\n",sum);
2-4.判斷一個(gè)數(shù)n能否同時(shí)被3和5整數(shù)。
include"stdio.h"
intfun(intn)
(
if(n%3==0&&n%5==0)
returnn;
else
return0;
}
2-5.將100至200之間的素?cái)?shù)輸出。
#include"stdio.h"
#include"math.h"
intisp(intm)
(
inti;
for(i=2;i<=sqrt(m);i++)
(
if(m%i==0)
return0;
)
return1;
)
voidmain()
(
intn;
for(n=100;n<=200;n++)
(
if(isp(n))
printf("%d\t",n);
)
)
2-6.求兩個(gè)數(shù)m和n的最大公約數(shù)。
#include"stdio.h"
intnum(intmjntn)
(
intr,t;
if(m<n)
{t=m;m=n;n=t;}
r=m%n;
while(r)
m=n;
n=r;
r=m%n;
)
returnn;
}
voidmain()
{
intx,y,s;
printf("inputxandy:");
scanf("%d%d",&x,&y);
s=num(x,y);
printf("%d\n",s);
}
2-7.使給定的一個(gè)4*4的二維數(shù)組轉(zhuǎn)置,即行列互換。
#include<stdio.h>
#definex4
inta[x][x];
voidmain()
(
voidzhuan(inta[x][x]);
intm,n;
printf("pleaseinput%dnubbers\n",x*x);
for(m=0;m<x;m++)
for(n=0;n<x;n++)
scanf("%d",&a[m][n]);
p門ntf(”\n原數(shù)組:\n");
for(m=0;m<x;m++)
{for(n=0;n<x;n++)
printf(“%5d”,a[m][n]);
printf("\n");}
zhuan(a);
printf("\n轉(zhuǎn)置后的數(shù)組:\n");
for(m=0;m<x;m++)
{for(n=0;n<x;n++)
printf(“%5d”,a[m][n]);printf(“\n”);}
)
voidzhuan(inta[x][x])
(
intc,d,e;
for(c=0;c<x;c++)
for(d=c+l;d<x;d++)
{e=a[c][d];
a[c][d]=a[d][c];
a[d][c]=e;
2-8.輸出50個(gè)學(xué)生中成績(jī)高于80分者的學(xué)號(hào)和成績(jī)。
#include<stdio.h>
intmain()
(
inta[10][5],i,j;
printf("請(qǐng)輸入50個(gè)學(xué)生的成績(jī)");
for(i=0;i<10;i++)
(
for(j=0;j<5;j++)
(
scanf("%d",&a[i][j]);
)
)
for(i=0;i<10;i++)
for(j=0;j<5;j++)
(
if(a[i]Ul>80)
(
printf("這個(gè)學(xué)生的學(xué)號(hào)是%d,這個(gè)學(xué)生的成績(jī)是%d\n",i*l0+j+l,a[i]U]);
return0;
)
2-9.輸出年份1990-2500中的所有閏年。
#include"stdio.h"
voidleap()
(
inty;
for(y=1990;y<=2500;y++)
(
jf((y%4==0&&y%100!=0)||y%400==0)
printf("%d",y);
)
printf("\n");
)
voidmain()
leap();
2-10.求1-1/2+1/3-1/4+...+1/99-1/100的值。
#include<stdio.h>
intmain()
doublesum;
inti;
for(sum=0J=l;i<=100;i++)
(
if(i%2==l)
(
sum+=1.0/i;
)
elseif(i%2==0)
(
sum-=1.0/i;
}
)
printf(“結(jié)果:%lf",sum);
return0;
)
2-11.輸出三角形的三邊長(zhǎng),試求三角形的面積。
#include"stdio.h"
#include"math.h"
voidmain()
(
intx,y,z,l;
doublearea;
printf("inputxandyandz:");
scanf("%d%d%d",&x,&y,&z);
l=(x+y+z)/2;
area=sqrt(l*(l-x)*(l-y)*(l-z));
printf("%.2f\n",area);
)
2-12.求ax2+bx+c=0方程的根,a,b,c由鍵盤輸入(假設(shè)b2-4ac>0)
#include"stdio.h"
#include"math.h"
voidmain()
(
inta,bzc;
floatxl,x2;
printf("inputaandbandc:");
scanf("%d%d%d",&a,&b,&c);
xl=((-b)+sqrt(b*b-4*a*c))/(2*a);
x2=((-b)-sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c>=0&&a!=0)
printf("%.2f/%.2f\n",xl/x2);
else
printf("flase\n");
)
2-13輸出成績(jī)等級(jí)“優(yōu)秀”、“良好”、“中等”?!凹案瘛保安患案瘛薄F渲?0分(含90分)
以上為優(yōu)秀,80-89分為良好,70-79分為“中等”,60-69分為“及格”,60分以下為不及
格。
#incluh>voidmain(){intscrnum;printf("請(qǐng)輸入考試成績(jī)");scantnum);if(scrnum>=
90){printf(“優(yōu)秀\n”);}elseif(scrnum>=70printf("良好\n");}elseif
(scrnum>=6printf(“及格\n”);}elsei0){printf("不及格!\n“);}
)
2?14?給定一個(gè)正整數(shù),求它的位數(shù)并分別輸出每一位數(shù)字。
#include"stdio.h"
voidmain()
(
intn,i=0,k;
printf("inputn:");
scanf("%d",&n);
while(n!=0)
(
k=n%10;
printf(H%d",k);
n=n/10;
i++;
)
printf("\n%d\n"/i);
2?15.輸出所有水仙花數(shù)(水仙花數(shù)是指一個(gè)三位數(shù),其各個(gè)數(shù)字立方和等于它本身)。
#include"stdio.h"
voidmain()
(
inta,b,c,i;
for(i=100;j<=999;i++)
(
a=i/100;
b=(i%100)/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
)
}
printf(H\n");
)
2?16.求1!+2!+3!+-.30!的值。
2?17.求Fibonacci數(shù)列前N個(gè)數(shù)。Fibonacci數(shù)列的特點(diǎn);第一個(gè)和第二個(gè)數(shù)都為1,從第
三個(gè)開始,每個(gè)數(shù)都等于其前兩個(gè)數(shù)的和。
#include"stdio.h"
#defineN100
voidmain()
(
intn,i,f[N];
f[O]=f[l]=l;
printf("inputn:");
scanf("%d"z&n);
for(i=2;i<n;i++)
f[i]=f[i-l]+f[i-2];
for(i=0;i<n;i++)
printf("%d\t",f[i]);
printf("\n");
2-18.把200以內(nèi)不能被3整除的數(shù)輸出。
#includeHstdio.h"
voidmain()
(
inti;
for(i=0;i<200;i++)
(
if(i%3!=0)
printf("%d\t"zi);
}
printf("\n");
}
2-19.班級(jí)有20名小學(xué)生,有語(yǔ)文,數(shù)學(xué),英語(yǔ)的成績(jī),求班級(jí)各科的平均分。
#include"stdio.h"voidmain()
{inti;floatavgl,avg2,avg3,sl=0/s2=0,s3=0,a[20],b[20]zc[20];fori++)scanf(fo;i++)
{sl+=a[i];s2+=b[i];s3+=c[i];
}avgl=sl/20;avg2=s2/20;avg3=s3/20;printf("%f,%f,%f”,avgl,avg2,avg3);
)
2-20.輸出100以內(nèi)的所有素?cái)?shù),并且5個(gè)一行。
#include"stdio.hn
include"math.h"
intisp(intm)
(
inti;
for(i=2;i<=sqrt(m);i++)
if(m%i==O)
return0;
return1;
)
voidmain()
(
intn,k;
for(n=l;n<100;n++)
(
if(isp(n))
(
printf("%d\t",n);
k++;
if(k%5==0)
printf("\nH);
)
printf("\n");
)
2-21.輸出1000到10000以內(nèi)的可逆素?cái)?shù)。
#include<stdio.h>
#include<math.h>
intinverse(intn);
intisPrimer(intn);
main()
(
inti;
for(i=1000;i<=10000;i++)
(
if(isPrimer(i))
{
if(isPrimer(inverse(i)))
printf("%d\n"J);
)
}
intinverse(intn)
intm=O,a;
for(;n>0;n/=10)
(
a=n%10;
m=m*10+a;
)
return(m);
)
intisPrimer(intn)
(
inti,judge=l;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
(
judge=0;
break;
}
)
returnjudge;
}
2-22.兩個(gè)數(shù)之差為2的素?cái)?shù),稱謂李生素?cái)?shù)。試輸出5組李生數(shù)。
#include"stdio.h"
main()
{intizj;intflag,n=O;inta[100];for(i=2;i
(
flag=l;f;j++)
{if(i%j==0)
{flag=0;break;
)
}if(flag==l)
{a[n]=i;n++;
)
}f;i++)
{for(j++)
{if(aD]-a[i]==2)
{printf("%d",a[i]);
printf("%d",a[j]);if(a[j+l]-a[j]==2)
{printf("%d",a[j+l]);
i=3;
}printf("\n");
)
2-23.試輸出1000到10000以內(nèi)的對(duì)稱數(shù),并輸出對(duì)稱的個(gè)數(shù)。
2-24.輸入10個(gè)學(xué)生5門課的成績(jī),計(jì)算每個(gè)學(xué)生的平均分,每門課的平均分兵找出各門
課最高分?jǐn)?shù)所對(duì)應(yīng)的學(xué)生。
2-25.輸入一行字符,統(tǒng)計(jì)其中數(shù)字,空格,小寫字母,大寫字母以及其他符號(hào)的個(gè)數(shù)。
include"stdio.h"
voidmain()
(
chars;
inti=0,j=0,k=0,m=0,da=0,xiao=0;
printf("pleaseinputthestring\n");
while((s二getchar())!=\n')/*循環(huán)從鍵盤讀入字符直到一行結(jié)束(輸入回車)*/
(
if((s<='z'&&s>='a')||(s<,Z,&&s>,A'))
(
if(sv=Z&&s>='A')da++;
if(s<='z'&&s>='a')xiao++;
i++;/*i存入字母數(shù)*/
}
elseif(s==『)j++;/*j存入空格數(shù),注意s==',里面是有一個(gè)空格的*/
elsei47)k++;/*k存入數(shù)字?jǐn)?shù)*/
elsem++;/*m存入其它符號(hào)數(shù)*/
)
printf("字符:%d大寫字母:%d小寫字母:%d\n空格:%d\n數(shù)字:%d\n其它:%d\n",i,da,xi
ao,j,k,m);/*打印行中的字母,空格,數(shù)字,其它字符數(shù)*/
)
2-26.任意給定n值,按如下螺旋的方式輸出方陣:
n=3時(shí)輸出123
894
765
n=4時(shí)輸出
1234
1213145
1116156
10987
#include<stdio.h>
Voidspi(intn)
inti=-l/j=0,k=nza[100][100]/r,s=l,t=l;
while(s<=n*n)
(
for(r=0;r<k;r++)
(
i+=t;
a[j][i]=s++;
)
for(r=k;r<2*k-l;r++)
(
j+=t;
a[j][i]=s++;
)
k--;
t=-t;
)
for(i=0;i<n;i++)
(
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
)
)
voidmain()
(
intn;
printf("inputanumber");
scanf("%d",&n);
spi(n);
}
2-27.輸出魔方陣(魔方陣是它的每一行,每一列和對(duì)角線之和均相等的方陣)如三階魔方
陣為:
816
357
492
#include"stdio.h"
voidmain()
(
inta[50][50],n,x,y,i,j,k;
printf("輸入魔方陣的階數(shù)n:n");
scanf("%d"z&n);
if(n%2==0)n++;
for(i=l;i<=n;i++)
for(j=l;j<=n;j++)
a[i][j]=O;
i=l;j=(n+l)/2;a[i][j]=l;
for(k=2;k<=n*n;k++)
{i--;j++;
if((i<l)&&(j>n)){i+=2;j-;}
if(i<l)i=n;
if(j>n)j=l;
if(a[i][j]!=O){i+=2;j-;}
a[i][j]=k;
)
for(i=l;i<=n;i++)
for(j=l;j<=n;j++)
{printf("%3d",a[i][j]);
if(j==n)printf("\n");}
getchar();getchar();
}
2-28編程打印形如下規(guī)律的n*n方陣?yán)缦聢D:使左對(duì)角線和右對(duì)角線上的元素為0,它
們上方的元素為1,左方的元素為2,下方元素為3,右方元素為4,下圖是一個(gè)符合條件的階矩
陣。0111020104220
442030403330
第三章:累加法
3-1編程求1-2+3-4+5-6+7-……+99-100。
#dio.h>main()
{inti,s;for(i100;i++){if(i%2!=0)
s+=i;elses-=i;
}printf("%d\n",s);getch();
)
3-2.1-1/2+1/3-1/4+--1/100
#tdio.h>
voidp2()
(
floats=0;
intp=-l;
for(101;i++){
P*=(-D;
s+=p*1.0/i;
)
printf("l-l/2+1/3-1/4+--1/100的結(jié)果是:%f\n",s);
}
voidmain()
{
p2();
}
3-3求100以內(nèi)所有素?cái)?shù)的和
#include<stdio.h>
intfun(intm)
{
for(inti=2;i<m;i++)
if(m%i==0)
return0;
return1;
)
voidmain()
(
inti;
for(i=2;i<=100;i++)
(
if(fun(i))
(
printf("%d\n",i);
)
)
)
3-10輸入一個(gè)數(shù)n,求1+2+3+4+5+4+3+2+1的值
#include<stdio.h>
intfunfintn)
(
ints=0;
for(inti=l;i<=n;i++)
(
s+=i;
}
returns;
)
voidmain()
(
intn;
scanf("%d",&n);
printf("%d",2*fun(n)-n);
3-15求1000以內(nèi)所有的完全數(shù)的和(完全數(shù)是指一個(gè)數(shù)除其本身外的因子之和等于該數(shù)。
例如,28=1+2+4+7+14,因此28為完全數(shù)).
#include<stdio.h>
intfun(intn)
(
ints=0;
for(inti=l;i<=n-l;i++)
(
if(n%i==0)
s=s+i;
)
if(s==n)
{
printf("%d*?;
returns;
}
else
return0;
}
voidmain()
(
intsum=0;
for(inti=l;i<=1000;i++){
sum+=fun(i);
}
printf("\n");
printf("%d\n”,sum);
)
3-19.計(jì)算S=l+2+3+?“+n+(n+l)+(n+2)+…在累加過(guò)程過(guò)程中,求當(dāng)S的值首次大于3000
時(shí)的n的n值是多少?
#includevoidmain()
{intnzs;n=l,s=0;w0)
{s+=n;n++;〃這句程序是怎樣實(shí)現(xiàn)功能的?}n--;〃這句程序放在這又有什么
用?printf("n=%d,s=%d\n,n,s);
)
3?24輸入一行字符,統(tǒng)計(jì)其中的英文字母?jìng)€(gè)數(shù)。提示:輸入到字符時(shí)停止輸入。
#include<stdio.h>
voidmain()
chara[100];
intcount=0J;
for(i=0;;i++)
a[i]=getchar();
if(a[i]=='\n-)
break;
if((a[i]>='a'&&a[i]<='z,)11(3[1]>=^'&&3[1]<=2'))
count++;
)
printf("%d",count);
)
3-30求e的值,根據(jù)輸入的n值,求前n項(xiàng)的和。e=l+l/1I+1/2I+1/3!+...+l/n!o
#include<stdio.h>
floatfun(intn)
(
intp=l;
for(inti=l;i<=n;i++)
{
P*=i;
)
returnp;
}
voidmain()
(
intn;
floatsum=l;
scanf("%d",&n);
for(inti=l;i<=n;i++)
(
sum+=l/fun(i);
)
printf("%f",sum);
)
第四章:累乘法
4-6.已知s=l!*2!*3!*…*n!.
#include<stdio.h>
voidmain(){
inti=l,t=l,s=l;
while(s<2000000){
t*=i;
s*=t;
i++;
}
printf("n=%ds=%d\n"J-l,s/t);
)
4-13求這樣一個(gè)三位數(shù),該三位數(shù)等于其每位數(shù)字階乘之和
#include<stdio.h>
floatfun(intn)
(
intp=l;
for(inti=l;i<=n;i++)
(
P*=i;
)
returnp;
}
voidmain()
(
intal,a2,a3;
for(inta=100;a<1000;a++)
(
al=a/100;
a2=a%100/10;
a3=a%10;
if(a==fun(al)+fun(a2)+fun(a3))
printf("%d",a);
)
)
4-15.老師給十個(gè)小孩分發(fā)糖果,第一個(gè)和第二個(gè)小孩各分一塊糖,之后為奇數(shù)的小孩可
得到前個(gè)奇數(shù)小孩的2倍糖果,為偶數(shù)的小孩可得到前個(gè)偶數(shù)小孩的3倍糖果。問(wèn)第9個(gè)、
第10個(gè)小孩各獲得多少糖果。
#include<stdio.h>
voidmain(){
inti=l,j=l;
for(intk=3;k<ll;k++){
if(k%2==0)
j*=3;
else
i*=2;
}
printf("%d%d\n",i,j);
)
4-17自守?cái)?shù)是指一個(gè)數(shù)的平方的尾數(shù)等于自身的自然數(shù)。例如:252=625,762=5776,937
62=87909376.請(qǐng)求出200000以內(nèi)的自守?cái)?shù)。
#include<stdio.h>
voidmain()
(
longi,i2,m,k=l;
for(i=0;i<=200000;i++)
while(i/k>0)
(
k*=10;
)
i2=i*i;
m=i2%k;
if(m==i)
',H
printf(%ld*%ld=%ld\n/i/i/i2);
)
}
4-18假設(shè)銀行一年整存零取的月息為0.63%。現(xiàn)在某人手中有一筆錢,他打算在今后的5
年中每年的年底取出1000元,到第五年剛好取完,請(qǐng)算出他存錢時(shí)應(yīng)存多少。
#include<stdio.h>
voidmain()
(
floata=0;
for(inti=l;i<=5;i++)
(
a=(a+1000)/(l+(0.0063*12));
}
printf("%f\n",a);
)
4-19.找出100-999之間(含100和999)所有整數(shù)中各個(gè)位上數(shù)字之積為x(X為一正整
數(shù))的整數(shù),然后輸出符合條件的整數(shù)個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)x為10時(shí),100-
999之間各個(gè)位上數(shù)字之積為10的整數(shù)有215,512共2個(gè)。
#include<stdio.h>
ints(intn){
inta,b/cj=0;
for(inti=100;i<1000;i++){
a=i/100;
b=(i%100)/10;
c=i%10;
if(a*b*c==n){
j++;
printf("%d"J);
)
}
returnj;
}
voidmain(){
intn;
scanf("%d",&n);
printf("一共%€1個(gè)\n,s(n));
4-20.編寫fun函數(shù),計(jì)算下式前n項(xiàng)的和作為函數(shù)返回值。
S=(l*3)/22+(3*5)/42+(5*7)/62+...+((2n-l)*(2n+2))/(2n)2
include<stdio.h>
doublefun(intn){
doubleS=0;
for(inti=l;i<=n;i++){
floattl,t2;
tl=(2*i-l)*(2*i+l);
t2=4*i*i;
S+=tl/t2;
)
returnS;
}
voidmain(){
intn;
scanf("%d",&n);
printf("%f\n",fun(n));
)
4-23.計(jì)算并輸出以下列數(shù)的前n項(xiàng)之積Sn,直到Sn-1大于q為止,q的值通過(guò)形參傳入(q
為輸入值)。
#include<stdio.h>
floatsum(intq){
intn=l;
floats=2/l;
while(s<q){
s+=(n+l)/n;
n++;
)
returns;
)
voidmain(){
intq;
scanf("%d",&q);
printf("Sn=%f\n"/sum(q));
}
4?24.求s=aa…aa?...?aaa-aa?a(此處aa...aa表示n和a,a和n的值在1-9之間),例如:a=3,n=6,
則以上表達(dá)式為:s=333333-33333-3333-333-33?3,其值為196298.
#include<stdio.h>
intfun(intajntn){
ints=a,sum二a;
for(inti=0;i<n-2;i++){
a*=10;〃得到303003000
s+=a;〃得至333333333;
sum+=s;//3+(3+30)+(3+30+300)
)
a*=10;
s+=a;
returns-sum;
)
voidmain(){
inta,n;
scanf(',%d%d",&a,&n);
printf("%d\n”,fun(a,n));
)
4-25將s所指字符串中ASCII值為奇數(shù)的字符累乘,并將其乘積返回給主函數(shù)。
#include<stdio.h>
#include<string.h>
voidmain()
(
chara[100];
gets(a);
intsum=l;
for(inti=O;i<strlen(a);i++)
{
if(a[i]%2!=0)
(
sum=sum*a[i];
)
)
printf("%d\rT,sum);
)
第五章:遞推法
5?1.已知數(shù)列{an},通項(xiàng)an=n*an求第n項(xiàng)的值
#include<stdio.h>
voidmain()
(
int=l,n;
printf("請(qǐng)輸入n:");
scanf("%d",&n);
for(i=l;i<=n;i++)
(
t=i*tl;
tl=t;
)
printf("%d\n"zt);
)
5-2
include<stdio.h>
voidfun(intn)
(
inti/c/a=l/b=l,s;
s=a+b;
for(i=3;i<=n;i++)
(
c=a+b;
s=s+c;
a=b;
b=c;
)
printf("%d"zs);
)
voidmain()
(
intn;
printf("inputn:");
scanf("%d",&n);
fun(n);
}
5-4.
#include<stdio.h>
voidmain(){
ints=0;
for(inti=l;i<100;i+=2){
intt=l;
for(intj=i;j<=i+2;j++){
t*=j;
)
s+=t;
)
printf("結(jié)果為%d\n”,s);
)
5-5.
#include<stdio.h>
intfun()
(
inti,a=10;
for(i=5;i>l;i-)
a=a+2;
returna;
}
intmain()
(
printf("%d\n",fun());
)
5-7有一組數(shù)規(guī)律如下:0,5,5,10,15,25,40,.,求出該數(shù)列第n項(xiàng)的數(shù)值。
#include<stdio.h>
voidfun(intn)
(
intal=0,a2=5,a3;
a3=al+a2;
for(inti=0;i<n-3;i++)
(
al=a2;
a2=a3;
a3=al+a2;
}
printf("%d\n"za3);
)
voidmain()
(
intn;
scanf("%d",&n);
fun(n);
}
5-8.
#include<stdio.h>
voidmain(){
inta[4][4]={{2},{6,2},{l,8,4},{l,5,6/8));
ints=2;
for(inti=l;i<4;i++){
intmin=a[i][0];
for(intj=O;j<=i;j++)
if(a[i][j]<min)
min=a[i][j];
//printf("\n");
〃printf("%d\n“,min);〃選擇路徑
s+=min;
)
printf(“最終得分:%d\n",s);
)
5-9一個(gè)富翁給他的兒子的四年大學(xué)生活存一筆錢,兒子每月只能取3000元作為下個(gè)月的
生活費(fèi),采用的是整存零取的方式。已知年利率為1.71%,請(qǐng)問(wèn)富翁一次性需要存入多少
錢
#include<stdio.h>
doublefun()
(
doublea=0;
inti;
for(i=l;i<=48;i++)
(
a=(a+3000)/(l+(0.0171/12));
H
printf(%.3f\n"za);
)
returna;
)
voidmain()
(
fun();
)
5-10.
#include<stdio.h>
voidtao()
(
intiza;
a=2;
for(i=9;i>=l;i-)
a=(a+l)*2+2;
printf("sum=%d\n"/a);
)
voidmain()
(
tao();
)
5-11.
#include<stdio.h>
intfun(intn){
ints[20],sum=0;
s[0]=3,s[l]=7;
for(inti=2;i<=n;i++){
s[i]=2*s[i-l]+s[i-2];
〃printf("%d\n,,,s[i]);
)
returns[n-l];
)
voidmain(){
intN;
scanf(“%d”,&N);
printf("%d\n",fun(N));
)
5-12.
#include<stdio.h>
voidmain()
(
inti,p,n,total;
scanf("%d%d”,&n,&p);
total=2*p;
for(i=p+l;i<=n;i++)
total+=i;
printf("%d\n"ztotal);
)
5-13問(wèn)題描述:x,y為整數(shù),求乂={2',3,僮>=0,丫>=0},輸入一個(gè)數(shù)n,求出元素從小到大排列
的雙募數(shù)列的第n項(xiàng)值,以及前n項(xiàng)和。
#include<stdio.h>
intmain()
(
intn/i=2/k=2/m=3za[100]={0,l},sum=0;
scanf("%d",&n);
while(i<=n)
(
//k=2;m=3;
if(k<m)
(
a[i++]=k;
k*=2;
)
else
{a[i++]=m;
m*=3;
)
}
for(i=l;i<=n;i++)
(
printf("%d\n"za[i]);
sum+=a[i];
)
printf("sum=%d\n"zsum);
return0;
}
5-15.
#include<stdio.h>
voidmain(){
ints[20],i;
s[l]=l,s[2]=2;
intn;
scanf("%d",&n);
for(i=3;i<=n;i++)
s[i]=s[i-l]+s[i-2]+l;
printf("%d\n"zs[n]);
)
5-21一張圓薄餅,切100刀,最多能切成多少塊?
#include<stdio.h>
voidmain()
(
intn=100,a;
a=l+n*(n+l)/2;
printf("%d\n",a);
)
第六章:遞歸法
6-1.
#include<stdio.h>
floatAvg(inta。,intn);
floatAvg(inta[],intn)
(
if(n==0)returna[0];
elsereturnAvg(a,n-l)+a[n];
)
voidmain()
(
intarray[100];
intn;
scanf("%d",&n);
for(inti=0;i<n;i++)
(
scanf(-%i]);〃要這樣輸入吧
}//
Avg(array,n);
printf("這%d個(gè)數(shù)的平均值是:%f\n”,n,Avg(array,n-l)/n);
)
6-2.
#include<stdio.h>
voidmain()
intn;
longfun(intx);
scanf("%d"z&n);
printf("%ld\n",fun(n));
longfun(intx)
(
if(x==l){return1;}
returnx+fun(x-l);
)
6-3.
#include<stdio.h>
intFunc(intn)
(
if(n<2)
return1;
else
returnn*Func(n-l);
}
intmain()
(
intn;
printf("inputn:\n");
scanf("%d"z&n);
printf("n!=%d\n",Func(n));
return0;
)
6-4.
#include<stdio.h>
voidpermute(int);
#defineN7
inta[N];
intn=0;
voidmain()
(
inti;
for(i=0;i<N;i++)
(
a[i]=i+l;
)
permute(N);
printf("totalis:%d\n",n);
}
voidpermute(intk)
inti,j,temp;
if(k==l)
for(i=0;i<N;i++)
(
printf("%d"za[i]);
)
printf(".\t");
n++;
if(n%4==0)
(
printf("\n");
)
)
else
(
permute(k-l);
for(j=N-k+l;j<N;j++)
(
temp=a[N-k];
a[N-k]=a[j];
a[j]=temp;
permute(k-l);
temp=a[N-k];
a[N-k]=a[j];
a[j]=temp;
6-5.
#include<stdio.h>
ints[100];
voidComb(intstep,intn,intk)
(
inti;
if((k==0)11((n-step+1)==k)){
for(i=step;i<=n;i++)s[i]=(k!=0);
for(i=1;i<=n;i++)
if(s[i])printf("%-3d"zi);
printf("\n");
return;
}
s[step]=1,Comb(step+1,n,k-1);
s[step]=0,Comb(step+1,n,k);
voidmain()
(
intn,m;
scanf("%d%d",&n,&m);
Comb(l,n,m);
}
6-6.求兩個(gè)數(shù)的最小公倍數(shù),兩個(gè)數(shù)由鍵盤輸入。
#include<stdio.h>
intfun(inta,intm,intn)
(
if(a%n)returnfun(a+m,m,n);
else
returna;
)
intmain()
(
intm,n,a;
scanf("%d%d"z&n,&m);
a=n;
printf("%d\n"zfun(a,n,m));
return0;
}
6-7.
#include<stdio.h>
voidmain()
(
intx,r;s=O;
scanf("%d",&x);
while(x>0)
(
r=x%10;
s=s+r;
x=x/10;
)
printf("%d\n"zs);
)
6-8.
#include<stdio.h>
main()
{intnumber,b[30];
inti=0,n;
printf("lnputanumber:");
scanf("%d",&number);
while(number!=O)
{b[i]=number%2;
number=number/2;
i++;
)
n=i-l;
for(i=n;i>=0;i-)
printf("%d"zb[i]);
printf("\n");
)
6-12.
#include<stdio.h>
intfunc(intnjntk,intmin)
(
int\,count;
if(k==2)
(
if((i=(n+l)/2-min-l)>0)
returni;
else
return0;
}
else
(
count=0;
for(i=min+l;i<n/2.0;i++)
(
count+=func(n-i/k-l,i);
)
retum(count);
}
}
intmain()
(
intn,k,i,count;
count=0;
printf("PleaseInputbN:");
scanf("%d",&n);
if(n<l)
(
printf("lnvalidlnput!\n");
return(-l);
printf("PleaseInputK:");
scanf("%d",&k);
if(k<l)
(
printf("lnvalidlnput!\n");
return(-2);
)
count=func(n,k,0);
printf("count:%d\rT,count);
return(O);
)
6-14,寫出折半查找的遞歸算法(有一個(gè)數(shù)組A[10],里面存放了10個(gè)整數(shù),順序遞
歸。A[10]={2,3,5,7,8,10,12,15,19,21},任意輸入一個(gè)用數(shù)字n,用折半查找法找到n
位于數(shù)組中的位置。如果n不屬于數(shù)組A,顯示錯(cuò)誤提示。要求用遞歸的方法實(shí)現(xiàn)折半查
找。)
#include<stdio.h>
intbin_search(intkey[],intlow,inthighjntk)
(
intmid;
if(low>high)return-1;
else{
mid=(low+high)/2;
if(key[mid]==k)
returnmid;
if(k>key[mid])
在序列的后半部分查找*/
returnbin_search(key,mid+lzhigh,k);/*
else
在序列的前半部分查找*/
returnbin_search(key,lowzmid-l,k);/*
)
}
intmain()
(
intn,i,addr;
intA[10]={2,3,5,7,8,10,12,15,19,21);
printf("ThecontentsoftheArrayA[10]are\n");
for(i=0;i<10;i++)
printf("%d",A[i]);/*顯示數(shù)組A中的內(nèi)容*/
printf("\nPleaseinputaintergerforsearch\n");
scanf("%d/*輸入待查找的元素*/
addr=bin_search(A,0,9,n);
if(-l!=addr)/*查找成功*/
printf("%disatthe%dthunitisarrayA\n",n,addr);
eIseprintf("Thereisno%dinarrayA\n",n);/*查找失敗*/
getchar();
return0;
6-16.
include<stdio.h>
#defineN10
doubleaverage(inta[],intn)
(
if(n==1)
returna[0];
else
return((n-1)*average(a,n-1)+a[n-1])/n;
)
intmain()
(
inta[N]={73,39,43,71,11,7,69,77,100,96};
doubleaver;
aver=average(a,N);
printf(”%lf\n”,aver);
)
6-17.
#include<stdio.h>
#include<stdlib.h>
intY(inti,intn)〃遞歸求第n行第i個(gè)元素的值
(
if(i==111i==n)
return1;
else
returnY(i,n-l)+Y(i-l,n-l);
)
voidYangHui(intn)
(
intx,y;
for(y=1;y<=n;y++)
(
for(x=y;x<=n;x++)
printf("");
for(x=1;x<=y;x++)
printf("%3d",Y(x,y));
printf(H\n");
)
}
intmain()
YangHui(9);
return0;
}
6-19.
#include<stdio.h>
voidtrans(unsignedlongn)
(
unsignedm;
if(n==0)
return;
m=n%8;
trans(n/8);
H
pnntf(%u"zm);
}
intmain(void){
unsignedlongn;
printf("inputadata:");
scanf("%d",&n);
trans(n);
printf("\n");
return0;
}
6-20.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
voidswap(char*a,char*b)
(
chart=*a;
*a=*b;
*b=t;
)
voidpermutation(char*str,constintindex,constintlength)
(
if(index==length)
(
staticintcounter=1;
printf("第%d個(gè)全排列:%s\n",counter++,str);
}else
(
inti=index;
for(i=index;i<=length;i++)
swap(str+index,str+i);
permutation(str;index+1,length);
swap(str+index,str+i);
)
)
)
voidAIIRange(char*str)
(
permutation(str,0,strlen(str)-1);
)
intmain()
(
charstr[]=,,123";
AIIRange(str);
system("pause");
)
6-21.
#include<stdio.h>
include<stdlib.h>
//#include<time.h>
voidfind_min(int*data,int*min,intposition)
(
inttemp;
if(position<8)
(
if(data[position]<*min)
(
temp=*min;
*min=data[position];
data[position]=temp;
)
position++;
find_min(data,min,position);
)
)
voidmain()
{
intdata[8]={25,7,48,37,12,92,86,33);
intmin;
/*
intdata[100];
intn=0;
inti=0;〃循環(huán)變量
int*A=NULL;
printf("你想要多少個(gè)隨機(jī)數(shù)?”);
scanf("%d",&n);
if(n<l)
n=l;
A=(int*)malloc(n*sizeof(int));
if(A==NULL)
(
printf("Outofmemory!\n");
exit⑴;
)
srand(time(NULL));〃產(chǎn)生0~999之間的n個(gè)隨機(jī)數(shù)
for(i=0;i<n;i++)
(
A[i]=rand()%1000;
}7
min=data[0];
find_min(dataz&min,O);
//printf("%3d",data[n]);
printf("Theminis=%d\n",min);
//getch();
}
6-25.
#include<stdio.h>
staticcharQueen⑻[8];
staticinta[8];
staticintb[15];
staticintc[15];
staticintiQueenNum=0;〃記錄總的棋盤狀態(tài)數(shù)
voidqu(inti);〃參數(shù)i代表行
intmain()
{
intiLine/Column;〃棋盤初始化,空格為*,放置皇后的地方為@
for(iLine=0;iLine<8;iLine++)
|
a「Line]=0;〃列標(biāo)記初始化,表示無(wú)列沖突
for(iColumn=0;iColumn<8;iColumn++)Queen[iLine][iColumn]='*';
}〃主、從對(duì)角線標(biāo)記初始化,表示沒(méi)有沖突
for(iUne=0;iLine<15;iLine++)
b[iLine]=c[iLine]=O;
qu(o);
return0;
)
voidqu(inti)
intiColumn;
for(iColumn=0;iColumn<8;iColumn++)
(
if(a[iColum-iColumn+7iColumn]==0)〃如果無(wú)沖突
(
Queen「][iColumn]二@;〃放皇后
a[iColumn]=1;〃標(biāo)記,下一次該列上不能放皇后
b[i-iColumn+7]=l;〃標(biāo)記,下一次該主對(duì)角線上不能放皇后
c[i+iColumn]=1;〃標(biāo)記,下一次該從對(duì)角線上不能放皇后
if(i<7)
qu(i+l);〃如果行還沒(méi)有遍歷完,進(jìn)入下一行
else
printf("W%d種擺法!\n,,,++iQueenNum);
/*else
(
//intiLineJColumn;
//printf("共有%:1種擺法!\n",++iQueenNum);
〃printf("第%d種狀態(tài)為:\n'\++iQueenNum);
//getchar();
/*for(iLine=0;iLine<8;iLine++)
(
for(iColumn=0;iColumn<8;iColumn++)
printf("%c",Queen[iLine][iColumn]);
printfCXn");
)
}*/
〃如果前次的皇后放置導(dǎo)致后面的放置無(wú)論如何都不能滿足要求,則回溯,重置
Queen[i][iColumn]='*';
a[iColumn]=0;
b[i-iColumn+7]=0;
c[i+iColumn]=0;
}
}
)
6-26.一個(gè)人趕著鴨子去每個(gè)村莊賣,每經(jīng)過(guò)一個(gè)村莊賣去所趕鴨子的一半多一只,這樣
他經(jīng)過(guò)了7個(gè)村子后還剩兩只鴨子,問(wèn)他出發(fā)時(shí)共趕了多少只鴨子?經(jīng)過(guò)每個(gè)村子賣出多
少只鴨子?
#include<stdio.h>
intfun(intnJntm)
(
inti;
if(n==m)
return2;
elsereturn((fun(n+l,m)+l)*2);
intmain()
(
inti;
printf(H%d\nH,fun(l,7));
for(i=l;i<=7;i++)
{printf("%d”,fun(l,i));
//printf("\n%d"JunflJJ/Z+l);
)
printf("\nH);
for(i=l;i<=7;i++)
(
printf("%d"zfun(l,i)/2+l);
)
return0;
)
6-27.
#include<stdio.h>
#include<stdio.h>
#include"stdio.h"
#defineMAX1000
inta[MAX],b[MAX];
intn;
voidfind(intmjntstart,intk)〃探求第k個(gè)可取的數(shù)
〃m表示待拆分的數(shù)值,start表示可拆分?jǐn)?shù)的起始值
(
inti,j;
for(i=start;i<=m/2;i++)
(
a[k]=m-i;
b[k]=i;
〃記錄下有關(guān)數(shù)據(jù),a數(shù)組表示待拆分的數(shù),b數(shù)組表示參與拆分的數(shù)
printf("%d=",n);
for(j=l;j<=k;j++)
printf("%d+",b[k]);
printf("%d\n",a[k]);
find(a[k],i/k+l);
}
return;
)
intmain(void)
(
printf("PleaseinputN:");
scanf("%d",&n);
find(n,l,l);
,
printf("%d=%d\n'/n
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)民用航空飛行學(xué)院《漢語(yǔ)方言學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州理工職業(yè)學(xué)院《公路施工組織與概預(yù)算》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)物品領(lǐng)用制度
- 浙江傳媒學(xué)院《建筑技術(shù)的設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 漳州城市職業(yè)學(xué)院《攝影技術(shù)與訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 缺陷管理與生產(chǎn)效率提升措施
- 雙十二家居設(shè)計(jì)解析
- 專業(yè)基礎(chǔ)-房地產(chǎn)經(jīng)紀(jì)人《專業(yè)基礎(chǔ)》點(diǎn)睛提分卷1
- 房地產(chǎn)經(jīng)紀(jì)綜合能力-《房地產(chǎn)經(jīng)濟(jì)綜合能力》押題密卷
- 家長(zhǎng)會(huì)學(xué)生發(fā)言稿 馬曉麗
- 公車租賃合同協(xié)議書
- 家居保潔課件
- 換電站(充電樁)安全風(fēng)險(xiǎn)告知
- 上海上海市皮膚病醫(yī)院工作人員招聘筆試歷年典型考題及考點(diǎn)附答案解析
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- DZ∕T 0153-2014 物化探工程測(cè)量規(guī)范(正式版)
- 商業(yè)空間設(shè)計(jì)(高職環(huán)境藝術(shù)設(shè)計(jì)專業(yè)和室內(nèi)設(shè)計(jì)專業(yè))全套教學(xué)課件
- 環(huán)保安全部年度安全環(huán)保工作總結(jié)模板
- 初中數(shù)學(xué)要背誦記憶知識(shí)點(diǎn)(概念+公式)
- 旅游業(yè)務(wù)年度回顧與展望
- 納米藥物載體課件
評(píng)論
0/150
提交評(píng)論