C 语言经典例子

1. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

#include<stdio.h>
 
int main()
{
    int i,j,k;
    printf("
");
    for(i=1;i<5;i++) { // 以下为三重循环
        for(j=1;j<5;j++) {
            for (k=1;k<5;k++) { // 确保i、j、k三位互不相同
                if (i!=k&&i!=j&&j!=k) { 
                    printf("%d,%d,%d
",i,j,k);
                }
            }
        }
    }
}

输出结果:

1,2,3
1,2,4
1,3,2
1,3,4
1,4,2
1,4,3
2,1,3
2,1,4
2,3,1
2,3,4
2,4,1
2,4,3
3,1,2
3,1,4
3,2,1
3,2,4
3,4,1
3,4,2
4,1,2
4,1,3
4,2,1
4,2,3
4,3,1
4,3,2

2. 题目:输出9*9口诀。

程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。

#include<stdio.h>
int main()
{
    int i,j,result;
    printf("
");
    for (i=1;i<10;i++)
    {
        for(j=1;j<=i;j++)
        {
            result=i*j;
            printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/
        }
    printf("
"); /*每一行后换行*/
    }
}

输出结果:

1*1=1  
2*1=2  2*2=4  
3*1=3  3*2=6  3*3=9  
4*1=4  4*2=8  4*3=12 4*4=16 
5*1=5  5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6  6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7  7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8  8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9  9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

 3. 题目:找出1000以内的所有完数, 所谓完数是指一个数恰好等于它的因子之和(不包括其本身),例如:6 = 1+2+3;6就是一个完数

#include <stdio.h>
#define N 500

int main(int argc, const char *argv[])
{
	int data[N] = {0};

	int i = 0, j = 0;

	int num = 0;
	int temp = 0;


	for(num=1;num<=1000;num++)
	{
		j = 0;
		temp = 0;
		for(i=1;i<num;i++)
		{
			if((num%i) == 0) //先找出数的因子数的和
			{
				temp += i;
			}
		}

		if(temp == i)//因子和与这个数是否相等
		{
			printf("%d  ",num);
		}
	}
	return 0;
}

 输出结果:6  28  496

 

原文地址:https://www.cnblogs.com/electronic/p/10760396.html