编写程序求解:
有1、2、3、4这几个数字,能组成多少个互不相同且无重复数字的三位数?
#include <stdio.h>
int main()
{
int i, j, k;
int count = 0;
for (i = 1; i <= 4; i++) //每个数字都有1234这四种可能
{
for (j = 1; j <= 4; j++)
{
for (k = 1; k <= 4; k++)
{
if ((i != j) && (j != k) && (i != k)) //前提是要无重复
{
count++;
printf("%d%d%d\n", i, j, k);
}
}
}
}
printf("count = %d\n", count);
system("pause");
return 0;
}2.编写猜数字游戏。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int i = 0;
int random = 0;
while (1)
{
srand((unsigned)time(NULL)); /*rand是一个在标准库中可移植的实现伪随机数发生器的
random = rand()%100; 函数,srand是一个初始化种子数的函数*/
while (1) //模100取余是得到一个两位数
{
printf("请输入你猜的数:");
scanf("%d", &i);
if (i > random)
{
printf("猜大了唉~~\n");
}
else if (i < random)
{
printf("猜的有些小哦!\n");
}
else
{
printf("猜对了!你好厉害!\n");
break;
}
}
}
return 0;
}3.打印杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...... 特点是每个数等于肩上两个数的和
#include<stdio.h>
int main()
{
int i = 0,j = 0,k = 0;
int num = 0;
int n = 0;
scanf("%d",&n);
for(i = 0;i < n;i++)
{
for(j = 0;j < n-i-1;j++)
{
printf(" ");
}
num = 1;
printf("1 ");
for(k = 1;k <= i;k++)
{
num = (num*(i-k+1))/k;
printf("%d ",num);
}
printf("\n");
}
return 0;
}其实我想了很久,找出来了每一行的数字和行号之间的关系,第i行的第n个数字的公式为:
1*(i/1)*((i-1)/2)*((i-2)/3)*((i-3)/4)*......*((i-n-1)/(n-1))
老师用的是用数组来存放每个数肩上的数字,不断地移动来相加得到,这也是我最初的想法,可是没能实现,就另谋出路了。
本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1698235
原文:http://2627lounuo.blog.51cto.com/10696599/1698235