1
有1,2,3,4四个数字,能组成多少个互不相同且不重复的三位数,都是多少
#include<stdio.h>
//有1,2,3,4四个数字,能组成多少个互不相同且不重复的三位数,都是多少int main()
{int i, j, k;printf("\n");int count = 0;for (i = 1; i < 5; i++){for (j = 1; j < 5; j++){for (k = 1; k < 5; k++){if (i != k && k != j && j != k){printf("%d %d %d\n", i, j, k);count++;}}}}printf("count = %d", count);return 0;
}
2
题目:
根据企业利润计算奖金,从键盘输入利润,计算应发放奖金金客,公式如下:
1)利润低于或等于10万元时,奖金可提10%;
2)利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
3)20万到40万之间时,高于20万元的部分,可提成5%;
4)40万到60万之间时高于40万元的部分,可提成3%;
5)60万到100万之间时,高于60万元的部分,可提成1.5%;
6)高于100万元时,超过100万元的部分按1%提成。
从键盘输入当月利润,求应发放奖金总数?
#include<stdio.h>
int main()
{double profit, bonus1, bonus2, bonus3, bonus4, bonus5,bonus;printf("请输入企业的利润为:");scanf_s("%lf", &profit);//计算每个利润段的奖金基数bonus1 = 100000 * 0.1;//利润低于或等于10万元时,奖金可提10%;bonus2 = bonus1 + 100000 * 0.075;//利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;bonus3 = bonus2 + 100000 * 0.05;//20万到40万之间时,高于20万元的部分,可提成5%;bonus4 = bonus3 + 100000 * 0.03;//40万到60万之间时高于40万元的部分,可提成3%;bonus5 = bonus4 + 100000 * 0.015;//高于100万元时,超过100万元的部分按1%提成if (profit <= 100000){bonus = profit * 0.1;}else if (profit <= 200000){bonus = bonus1 + (profit-100000) * 0.75;}else if (profit <= 400000){bonus = bonus2 + (profit - 200000) * 0.05;}else if (profit <= 600000){bonus = bonus3 + (profit - 400000) * 0.03;}else if (profit <= 1000000){bonus = bonus4 + (profit - 600000) * 0.015;}else if(profit>1000000){bonus = bonus5 + (profit - 1000000) * 0.01;}printf("提成为:bonus=%lf\n", bonus);return 0;
}
3 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少
#include<stdio.h>/*分析:一个整数,它加上100后是一个完全平方数
再加上168又是一个完全平方数,请问该数是多少
设该数为x
1,x+100=n*n;x+100+168=m*m
2,m*m-n*n=(m+n)(m-n)=168
3,设m+n=i;m-n=j,则i*j=168,那么i和j都是偶数
4,m=(i+j)/2,n=(i-j)/2,i和j均是大于2的偶数
6,由于i*j=168,j>=2,得到1<i<168/2+1
接下来将i的所有数字循环计算即可*/int main()
{int i, j, n, m,x;for (i = 1; i < 168 / 2 + 1; i++){if (168 % i == 0){j = 168 / i;if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)//m,n均是偶数{m = (i + j) / 2;n = (i - j) / 2;x = n * n - 100;printf("%d\n", x);printf("%d+100 = %d*%d\n", x, n, n);printf("%d+168 = %d*%d\n", x, m, m);}}}return 0;
}
4 题目:输入某年某月某日,判断这一天是这一年的第几天
#include<stdio.h>/*分析:
输入某年某月某日,判断这一天是这一年的第几天
年:判断是否是闰年,
月:闰年的2月有28天
天:一个月有30或31天
设这一天为这一年的第x天以3月5日为例,应该把前两个月的天数相加后,加上五天,即为本年的第几天
特殊情况:闰年且输入月份大于3时需要考虑多加一天*/int main()
{int day, year, month, sum, leap;printf("请输入日期:格式为:年,月,日\n");scanf_s("%d,%d,%d", &year, &month, &day);switch (month){case 1:sum = 0;break;case 2:sum = 31;break;case 3:sum = 59;break;case 4:sum = 90;break;case 5:sum = 120;break;case 6:sum = 151;break;case 7:sum = 181;break;case 8:sum = 212;break;case 9:sum = 243;break;case 10:sum = 273;break;case 11:sum = 304;break;case 12:sum = 334;break;default:printf("请重新输入");break;}sum = sum + day;//某月加上某天//判断是不是闰年if ((year % 400 == 0) || (year % 4 == 0 && year % 100 == 0)){leap = 1;}else{leap = 0;}//如果是闰年且月份大于2,总天数应该加一天if (leap == 1 && month > 2){sum++;}printf("这是这一年中的第%d天", sum);return 0;
}
5 题目:输入三个整数x,y,z,请把这三个数由小到大输出
方法一:
#include<stdio.h>
int main()
{int x, y, z;printf("请输入三个整数: \n");scanf_s("%d,%d,%d", &x, &y, &z);printf("从小到大排序:\n");if (x < y){if (y < z){printf("%d,%d,%d", x, y, z);}else{printf("%d,%d,%d", x, z, y);}}else if (y < x){if (x < z){printf("%d,%d,%d", y, x, z);}else{printf("%d,%d,%d", y, z, x);}}return 0;
}
方法二:
#include<stdio.h>
int main()
{int x, y, z,t;printf("请输入三个整数: \n");scanf_s("%d,%d,%d", &x, &y, &z);if (x > y){t = x;x = y; y = t;}if (x > z){t = z;z = x;x = t;}if (y > z){t = y;y = z;z = t;}printf("从小到大排序:%d %d %d\n", x, y, z);return 0;
}
6 用*号输入字母C的图案
#include<stdio.h>
int main()
{int i, j, k;int n = 5;for (i = 0; i < n; i++){for (j = 0; j < 5; j++){if ((i == 0 || i == n - 1) || (j == 0 && i != n / 2) || (j == n - 1 &&i!= n / 2)){printf("*");}else{printf(" ");}}printf("\n");}return 0;
}
7 输出九九乘法表
#include<stdio.h>
int main()
{//九九乘法表,i控制行,j控制列int i, j, result;for (i = 0; i < 10; i++){for (j = 1; j <= i; j++){result = i * j;printf("%d * %d = % -3d ", j, i, result);}printf("\n");}return 0;
}
8 输出象棋棋盘
#include<stdio.h>
/*分析:
国际想起棋盘由64个黑白相间的格子组成,分为8行8列。
用i控制行,j控制列,根据i+j的和的变化来控制输出黑方格或白方格
*/int main()
{int i, j;for (i = 0; i < 8; i++){for (j = 0; j < 8; j++){if ((i + j) % 2 == 0){printf("%c%c", '*', '*');//**表示黑方格}else{printf(" ");}}printf("\n");}return 0;
}
9 打印楼梯图形 和笑脸
题目:打印楼梯,同时在楼梯上方打印两个笑脸
//题目:打印楼梯,同时在楼梯上方打印两个笑脸
//用11来表示两个笑脸;用i控制行,用j控制列
//j根据i的变化来控制输出黑方格的个数
#include<stdio.h>
int main()
{int i, j;printf("11\n");//用11来表示两个笑脸for (i = 1; i < 11; i++){for (j = 1; j <= i; j++){printf("%c%c", 70, 70);}printf("\n");}return 0;
}
10 兔子生崽
方法1:
#include<stdio.h>
/*有一对兔子,从出生后第3个月都圣一对兔子,小兔子长到第三个月后又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)*//*分析:兔子的个数规律为数列1,1,2,3,5,8,13,21....,即下个月是上两个月之和*/
int main()
{int f1 = 1, f2 = 1, i;for (i = 1; i <= 20; i++){printf("%12d%12d", f1, f2);if (i % 2 == 0)printf("\n");f1 = f1 + f2;f2 = f1 + f2;}return 0;
}
这让我想起来青蛙跳台阶的案例,我们再来回顾一下吧
题目:一只青蛙要从第一级台阶开始,每次可以跳上一级或者两级,直到跳完所有的台阶。我们需要找出青蛙有多少种跳法
方法1;
int Fib(int x)
{int i = 1;int j = 1;int z = 1;while (x > 0){z = i + j;i = j;j = z;x--;}return z;
}
int main()
{int n = 0;printf("青蛙跳的台阶数为:\n");scanf_s("%d", &n);int ret = Fib(n);printf("青蛙跳台阶的方法有%d种", ret);return 0;
}
方法2:
利用递归方式
int Fib(int x)
{if (x == 1)return 1;else if (x == 2)return 2;elsereturn Fib(x - 1) + Fib(x - 2);
}
int main()
{int n = 0;printf("青蛙跳的台阶数为:\n");scanf_s("%d", &n);int ret = Fib(n);printf("青蛙跳台阶的方法有%d种", ret);return 0;
}
11 判断101到200之间的素数
#include<stdio.h>/*分析:
判断素数的方法:
用一个数分比如取出2到sqrt(这个数),如果能被整除,则表明此数不是素数
*/int main()
{int i,j;int count = 0;for (i = 101; i <= 200; i++){for (j = 2; j < i; j++){//如果j能被i整除再跳出循环if (i % j == 0){break;}}//判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整除的数if (j >= i){count++;printf("%d ", i);//每五个数换行if (count % 5 == 0)printf("\n");}}return 0;
}
12 水仙花数
打印水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个水仙花数,因为153 = 1的三次方+5的三次方+3的三次方
#include<stdio.h>
/*
利用for循环控制100~999个数,每个数分解出个位,十位,百位
*/int main()
{int x, y, z, i;for (i = 100; i < 1000; i++){x = i % 10;y = i / 10 % 10;z = i / 100 % 10;if (i == (x * x * x + y * y * y + z * z * z)){printf("%d\n", i);}}return 0;
}