c++分解质因数_cc++⼊门习题100例
题⽬⼀:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开⽅,再将该数加上268后再开⽅,如果开⽅后
      的结果满⾜如下条件,即是结果。请看具体分析:
2.程序源代码:
#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{
x=sqrt(i+100); /*x为加上100后开⽅后的结果*/
y=sqrt(i+268); /*y为再加上168后开⽅后的结果*/
if(x*x==i+100&&y*y==i+268) /*如果⼀个数的平⽅根的平⽅等于该数,这说明此数是完全平⽅数*/
printf("n%ldn",i);
}
getch();
}
题⽬⼆:输⼊某年某⽉某⽇,判断这⼀天是这⼀年的第⼏天?
      情况,闰年且输⼊⽉份⼤于3时需考虑多加⼀天。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int day,month,year,sum,leap;
printf("nplease input year,month,dayn");
scanf("%d,%d,%d",&year,&month,&day);
switch(month) /*先计算某⽉以前⽉份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/ leap=1;
else
leap=0;
if(leap==1&&month>2) /*如果是闰年且⽉份⼤于2,总天数应该加⼀天*/ sum++;
printf("It is the %dth day.",sum);
}
题⽬三:输⼊三个整数x,y,z,请把这三个数由⼩到⼤输出。
1.程序分析:我们想办法把最⼩的数放到x上,先将x与y进⾏⽐较,如果x>y则将x与y的值进⾏交换,      然后再⽤x与z进⾏⽐较,如果x>z则将x与z的值进⾏交换,这样能使x最⼩。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %dn",x,y,z);
getch();
}
题⽬四:输出9*9⼝诀。
1.程序分析:分⾏与列考虑,共9⾏9列,i控制⾏,j控制列。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,result;
printf("n");
for (i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
printf("%d*%d=%-3d",i,j,result); /*-3d表⽰左对齐,占3位*/
}
printf("n"); /*每⼀⾏后换⾏*/
}
getch();
}
题⽬五:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第三个⽉   后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?
1.程序分析: 兔⼦的规律为数列1,1,2,3,5,8,
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("n"); /*控制输出,每⾏四个*/
f1=f1+f2; /*前两个⽉加起来赋值给第三个⽉*/
f2=f1+f2; /*前两个⽉加起来赋值给第三个⽉*/
}
getch();
}
题⽬六:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的⽅法:⽤⼀个数分别去除2到sqrt(这个数),如果能被整除,
      则表明此数不是素数,反之是素数。       
2.程序源代码:
#include "stdio.h"
#include "conio.h"
#include "math.h"
{
int m,i,k,h=0,leap=1;
printf("n");
for(m=101;m<=200;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("n");
}
leap=1;
}
printf("nThe total is %d",h);c语言编程入门指南pdf
getch();
}
题⽬七:打印出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个三位数,其各位数字⽴⽅和等于该数   本⾝。例如:153是⼀个“⽔仙花数”,因为153=1的三次⽅+5的三次⽅+3的三次⽅。
1.程序分析:利⽤for循环控制100-999个数,每个数分解出个位,⼗位,百位。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k,n;