编写程序求解:
有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