1 . 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
运行结果
![](https://img-blog.csdnimg.cn/img_convert/37bc6134e9a25b0f4ffbe45409ec0155.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int b = 0;
int s = 0;
int g = 0; //初始化
int i = 0; //i用做计数不需要清零放在循环之外
for(b=1;b<=4;b++){
for(s=1;s<=4;s++){
for(g=1;g<=4;g++){ // 遍历所有可能
if(b!=s&&s!=g&&b!=g){ //去除不符合题意的值
int num = 0; //num每次都要重新赋值,所以要清零
num=g+s*10+b*100; //将符合题意的数赋值给num并输出
printf("%d ",num);
i++; //计数
}
}
}
}
printf("\n");
printf("有%d个可能\n",i);
return 0;
}
2.题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
运行结果
![](https://img-blog.csdnimg.cn/img_convert/0371654437b2db4a152e964797da70c6.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int l = 0;
printf("输入利润:");
scanf("%d",&l);
int j1=l*0.1;
int j2=(l-100000)*0.075+j1;
int j3=(l-200000)*0.05+j2;
int j4=(l-400000)*0.03+j3;
int j5=(l-600000)*0.015+j4;
int j6=(l-1000000)*0.01+j5; //将奖金分为6个档次
int sj=0;
if(l<=100000){
sj=j1;
printf("应发奖金%d\n",sj);
}else if(l>100000&&l<=200000){
sj=j2;
printf("应发奖金%d\n",sj);
}else if(l>200000&&l<=400000){
sj=j3;
printf("应发奖金%d\n",sj);
}else if(l>400000&&l<600000){
sj=j4;
printf("应发奖金%d\n",sj);
}else if(l>600000&&l<=1000000){
sj=j5;
printf("应发奖金%d\n",sj);
}else{
sj=j6;
printf("应发奖金%d\n",sj); //按不同利润分配奖金
}
return 0;
}
3. 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
运行结果
![](https://img-blog.csdnimg.cn/img_convert/fb865d6bdf7edb5744300e995e6e70b0.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int x = 0;
int y = 0;
int z = 0;
printf("输入三个数:");
scanf("%d%d%d",&x,&y,&z);
if(x>y){ //前两个数判断,小的放在x
int temp = 0;
temp=x;
x=y;
y=temp;
}
if(x>z){ //前后两数比较,确定x放最小值
int temp = 0;
temp=x;
x=z;
z=temp;
}
if(y>z){ //后两数比较,小的放在y
int temp = 0;
temp=z;
z=y;
y=temp;
}
printf("从小到大%d,%d,%d\n",x,y,z);
return 0;
}
4. 题目:用*号输出字母C的图案。
程序分析:可先用*'号在纸上写出字母C,再分行输出。
运行结果
![](https://img-blog.csdnimg.cn/img_convert/4d13dafadd5b0701a480d995f23a4ac0.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
printf("****\n");
printf("*\n");
printf("*\n");
printf("*\n");
printf("****\n");
return 0;
}
5. 题目:输出特殊图案,请在c环境中运行,看一看,
程序分析:字符共有256个。不同字符,图形不一样。
运行结果
![](https://img-blog.csdnimg.cn/img_convert/423a550579d3e4773c7c2df70d102dac.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
char a = 176;
char b = 219;
printf("%c%c%c%c%c\n",b,a,a,a,b);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",a,a,b,a,a);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",b,a,a,a,b);
return 0;
}
6. 题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
![](https://img-blog.csdnimg.cn/img_convert/0453b8688c08290cd8f0145cd4519fec.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int s[10][10]={0};
int i = 0;
int j = 0;
s[0][0]=0; //定义0*0=0
for(i=1;i<10;i++){ //遍历行
s[i][0]=s[i-1][0]+1; //输出第一列
for(j=1;j<10;j++){ //遍历列
s[0][j]=s[0][j-1]+1; //输出第一行
s[i][j]=s[i][0]*s[0][j]; //给二维数组赋值
}
}
i=0;
j=0;
for(i=0;i<10;i++){ //遍历二维数组并打印
for(j=0;j<10;j++){
printf("%-4d",s[i][j]); //以左对齐宽度为4的方式输出
}
printf("\n");
}
return 0;
}
7. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
运行结果
![](https://img-blog.csdnimg.cn/img_convert/5f2261eab43bf88593f5ecf890481dc9.png)
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
int s[32]={1,1,2,3};
int i = 4;
for(i=4;i<32;i++){ //因为从第四天才开始增加
int sum = 0;//sum清零 //s[i-1]-s[i-2]是每个月会下兔子的对数
sum=((s[i-1]-s[i-2])+(s[i-2]-s[i-3]))*2+(s[i-1]-s[i-2]);
s[i]=sum; //s[i-2]-s[i-3]是处于第二个月还不能生兔子的兔子对数
} //s[i-1]-s[i-2]是新出生的兔子对数和能出生的兔子对数一样
for(i=0;i<32;i++){
printf("%d ",s[i]);
}
printf("\n");
return 0;
}