题目1: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去选择满足条件的
#include <stdio.h>
int main(void) {
for(int i=1;i<5;i++)
for(int j=1;j<5;j++)
for(int k=1;k<5;k++)
{
if(i!=j&&i!=k&&j!=k)
printf("%d%d%d ",i,j,k);
}
return 0;
}
题目2:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果
#include <stdio.h>
#include <math.h>
int main(void) {
long int i,x,y,z;
for(i=1;i<100000;i++)
{
x=sqrt(i+100);
y=sqrt(i+268);
if(x*x==i+100&&y*y==i+268)
printf("%ld\n",i);
}
return 0;
}
题目3:输入三个整数x,y,z,请把这三个数由小到大输出
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小
#include <stdio.h>
#include <math.h>
int main(void) {
int x,y,z,t;
scanf("%d %d %d",&x,&y,&z);
if(x>y)
{
t=x;
x=y;
y=t;
}
if(x>z)
{
t=x;
x=z;
z=t;
}
if(y>z)
{
t=y;
y=z;
z=t;
}
return 0;
}
题目4:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{ for(j=1;j<=i;j++)
{
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
题目5:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质。正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以用指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式 [1] 。只有一个质因子的正整数为质数。
每个合数都可以写成几个质数(也可称为素数)相乘的形式 [2] ,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数;而这个因数一定是一个质数。
1没有质因子。
5只有1个质因子,5本身。(5是质数)
6的质因子是2和3。(6 = 2 × 3)
2、4、8、16等只有1个质因子:2。(2是质数,4 =2²,8 = 2³,如此类推)
10有2个质因子:2和5。(10 = 2 × 5)
合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。与之相对的是质数,而1既不属于质数也不属于合数。最小的合数是4
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可
( 2 )如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 重复执行第一步。
( 3 )如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
#include <stdio.h>
int main()
{
int i,n;
printf("please input a nmber:");
scanf("%d",&n);
for(i=2;i<n;i++)
{
while(n!=i)
{
if(n%i==0)
{
printf("%d*",i);
n/=i;
}
else
break;
}
}
return 0;
}
题目6:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。
#include <stdio.h>
int main(void) {
float s=0,a=2,b=1;
int i,t;
for(i=1;i<=20;i++)
{
s=s+a/b;
t=a;a=a+b;b=a;
}
printf("%f",s);
return 0;
}