C语⾔经典程序100例【程序1】
题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第三个⽉
后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?
1.程序分析: 兔⼦的规律为数列1,1,2,3,5,8,
2.程序源代码:
#include<stdio.h>
void main(){
long f1,f2; //前两个⽉的兔⼦数
f1=f2=1;
for(int i=1;i<=20;i++){ //i为⽉份
printf("%12ld %12ld ",f1,f2);
if(i%2==0) printf("\n"); //每⾏输出4个
f1=f1+f2; //前两个⽉加起来赋值给第三个⽉
f2=f2+f1;
}
}
/*
1 1
2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
10946 17711 28657 46368
75025 121393 196418 317811
514229 832040 1346269 2178309
3524578 5702887 9227465 14930352
24157817 39088169 63245986 102334155
Press any key to continue
*/
==============================================================
【程序2】
题⽬:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
2.程序源代码:
#include<stdio.h>
#include<math.h>
void main(){
int k=0,leap=1;
c++判断素数for(int n=101;n<=200;n++){ //101--200
for(int i=2;i<=sqrt(n);i++){ //2--sqrt(i)
if(n%i==0){
leap=0;
break;
}
}
if(leap){
printf("%-4d",n);
k++;
if(k%10==0) printf("\n");
}
leap=1;
}
printf("\nThe total is %d\n",k);
}
/*
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
The total is 21
Press any key to continue
*/
==============================================================【程序3】
题⽬:打印出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个三位数,其各位数字⽴⽅和等于该数 本⾝。例如:153是⼀个“⽔仙花数”,因为153=1的三次⽅+5的三次⽅+3的三次⽅。1.程序分析:利⽤for循环控制100-999个数,每个数分解出个位,⼗位,百位。
2.程序源代码:
#include<stdio.h>
void main(){
int a,b,c;
int n;
printf("water flower'munber is: ");
for(n=100;n<=999;n++){
a=n/100; //百位
b=n%100/10; //⼗位
c=n%10; //个位
if(n=a*a*a+b*b*b+c*c*c){
printf("%5d ",n);
}
}
printf("\n");
}
/*
water flower'munber is: 1 8 729 370 371 378 1099
Press any key to continue
*/
==============================================================【程序4】
题⽬:将⼀个正整数分解质因数。例如:输⼊90,打印出90=2*3*3*5。
程序分析:对n进⾏分解质因数,应先到⼀个最⼩的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并⽤n除以k的商,作为新的正整数你n,
重复执⾏第⼀步。
(3)如果n不能被k整除,则⽤k+1作为k的值,重复执⾏第⼀步。
2.程序源代码:
#include<stdio.h>
void main(){
int n;
printf("Please input a number: ");
scanf("%d",&n);
printf("%d= ",n);
for(int i=2;i<=n;i++){
while(n!=i){
if(n%i==0){
printf("%d * ",i);
n=n/i;
}else
break;
}
}
printf("%d",n);
printf("\n");
}
/*
Please input a number: 90
90= 2 * 3 * 3 * 5
Press any key to continue
*/
==============================================================
【程序5】
题⽬:利⽤条件运算符的嵌套来完成此题:学习成绩>=90分的同学⽤A表⽰,60-89分之间的⽤B表⽰, 60分以下的⽤C表⽰。
1.程序分析:(a>b)?a:b这是条件运算符的基本例⼦。
2.程序源代码:
#include<stdio.h>
void main(){
int score;
char grade;
printf("Please input a score: ");
scanf("%d",&score);
grade=score>=90?'A':(score>=60?'B':'C');
printf("%d belongs to %c \n",score,grade);
}
/*
Please input a score: 91
91 belongs to A
Press any key to continue
Please input a score: 87
87 belongs to B
Press any key to continue
Please input a score: 50
50 belongs to C
Press any key to continue
*/
==============================================================【程序6】
题⽬:输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
1.程序分析:利⽤辗除法。
2.程序源代码:
#include<stdio.h>
void main(){
int m,n,temp,a,b;
printf("Please input two numbers: ");
scanf("%d %d",&m,&n);
if(m<n){
temp=m;
m=n;
n=temp;
}
a=m;
b=n;
while(b!=0){
temp=a%b;
a=b;
b=temp;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论