C语言经典编程题一
1.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
/*分解质数*/ #include<iostream> using namespace std; void Divide(int num) { int numcopy =num; for(int i=2;i<=numcopy;) { if(numcopy==i) { printf("%d",i); return ; } if(numcopy%i==0&&numcopy!=i) { printf("%d*",i); numcopy=numcopy/i; } else { i++; } } }
2.题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
/*水仙*/ #include<iostream> using namespace std; int IsShuiXian(int num) { int i,j,k,numcopy=num; if(numcopy>999||numcopy<100) { return -1; } i=numcopy%10; j=numcopy/10%10; k=numcopy/100; numcopy=i*i*i+j*j*j+k*k*k; if(numcopy==num) { return 1; } else { return 0; } } int main(void) { for(int i=101;i<=999;i++) { int j=IsShuiXian (i); if(j) { printf("%d\n",i); } } system("pause"); return 0; }
3.判断101-200之间有多少个素数,并输出所有素数。
void PrintSushu(int num,int num2) { int count=0; int k,leap; for(int i=num;i<=num2;i++) { leap=1; k=sqrt(i); for(int j=2;j<=k;j++) { if(0==i%j) { leap=0; break; } } if(1==leap) { count++; printf("%d ",i); } } printf("%d",count ); }
4.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
long CalTuzi(int mouth) { long f1=1; long f2=1; long temp; if(mouth<=0) { return -1; } if(mouth<=2) { return 1; } for(int i=2;i<mouth;i++) { temp=f2; f2=f1+f2; f1=temp; } return f2; }
5.输入一个数判断是不是回文
int IsHuiwen(int i) { int a=0; int m=i; while(m) { a=(a*10)+(a%10); m=m/10; } if(i==a) { return 1; } else { return 0; } }
6.字符串有小写变为大写
void ChangBig(char *str) { while(*str!='\0') { if((*str>='a')&&(*str<='z')) { *str=*str-32; } str++; } }
但愿人长久
千里共婵娟