C語言經典程式碼(1-8)
阿新 • • 發佈:2019-01-09
古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
兔子的規律為數列1,1,2,3,5,8,13,21….
/*古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,
小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
兔子的規律為數列1,1,2,3,5,8,13,21....*/
#include<stdio.h>
int f (int n)
{
if(n==1||n==2)
return 1;
if( n > 2 )
return f (n-1) + f (n-2);
}
int main()
{
int i = 0,n;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
printf("%d ",f (i));
if(i%5==0)
{
printf("\n");
}
}
return 0;
}
判斷素數
/*判斷101-200之間有多少個素數,並輸出所有素數及素數的個數。
程式分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
則表明此數不是素數,反之是素數。*/
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,flag,m,count=0;
for(i=101;i<200;i=i+2)//偶數不可能是素數。
{
flag=0;
m=sqrt(i);//減少計算次數。
for(j=2;j<=m;j++)
if(i%j==0)
{
flag=1;
break;
}
if(flag==0 )
{
count++;//用來計數的。
printf("%d ",i);
}
}
printf("\n素數的個數為%d\n",count);
}
一個數如果恰好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3.程式設計
找出100以內的所有完數。
#include <stdio.h>
int main()
{
int i, j, sum;
/*
第一個迴圈,檢查從1到1000中的每一個數字是不是完數
如果是完數,輸出完數和它所有的因子
*/
for( i = 1; i <= 100; ++i )
{
/*
檢查該數字是否是完數
方法:從1到i-1,依次取餘,餘數為0,說明是它的公約數,
累加公約數,最後的值如果等於i,這說明i就是完數。
*/
sum = 0;
for( j = 1; j < i; ++j )
{
if( i%j == 0 )
{
sum += j;
}
}
if( sum == i )
{
printf( "完數是:%d,它的因子是:", i );
/*
這個for迴圈是將其所有因子取出
和第22行的for迴圈思路是一樣的
*/
for( j = 1; j < i; ++j )
{
if( i%j == 0 )
{
printf( "%d ", j );
}
}
printf( "\n" );
}
}
return 0;
}
題目:企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高 於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
#include <stdio.h>
int main()
{
int num,reward;//num是利潤,reward是獎金總數
scanf("%d",&num);
int reward1=100000*0.1;
int reward2=reward1+100000*0.075;
int reward3=reward2+200000*0.05;
int reward4=reward3+200000*0.03;
int reward5=reward4+400000*0.15;
if(num<=100000)
reward=num*0.1;
else if(num<=200000)
reward=reward1+(num-100000)*0.075;
else if(num<=400000)
reward=reward2+(num-200000)*0.05;
else if(num<=600000)
reward=reward3+(num-400000)*0.03;
else if(num<=1000000)
reward=reward4+(num-400000)*0.015;
else
reward=reward5+(num-1000000)*0.01;
printf("%d\n",reward);
return 0;
}
題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
1.程式分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後的結果滿足如下條件,即是結果。
#include <stdio.h>
#include<math.h>
int main()
{
int num;
int x,y;
for(num=1;num<100000;num++)
{
x=sqrt(num+100);
y=sqrt(num+268);
if(x*x==num+100&&y*y==num+268)
printf("%d\n",num);
}
return 0;
}
輸入某年某月某日,判斷該天是該年的第幾天。
#include <stdio.h>
int main()
{
int day,month,year;
int days=0;
int leap;
scanf("%d%d%d",&year,&month,&day);
switch(month)
{
case 1:days=0;break;
case 2:days=31;break;
case 3:days=59;break;
case 4:days=90;break;
case 5:days=120;break;
case 6:days=151;break;
case 7:days=181;break;
case 8:days=212;break;
case 9:days=243;break;
case 10:days=273;break;
case 11:days=304;break;
case 12:days=334;break;
default: printf("輸入錯誤!");break;
}
days=days+day;
if((year%4==0||year%100!=0)&&(year%400==0))
{
leap=1;
}
else
leap=0;
if(leap==1&&month>2)
days=days+1;
printf("%d年%d月%d日有%d天",year,month,day,days);
return 0;
}