eg1:
- 已知有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少
已知:1:三位数 ,2:1-4,3:各不相同,
输出:1:有多少个这样的三位数,2:依次输出
解题代码和思路
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
question1: 已知有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少
已知:1:三位数 ,2:1-4,3:各不相同,
输出:1:有多少个这样的三位数,2:依次输出
思路:使用代码的方式将我们的代码表示出来
解题的思路: 获取百位数,10位数,和个位数
int a = 123; 获取百位数a/100 , 获取10位数a%100/10得到10位数
1:一个采用分别表示的方法表示这三个数
int b*100 + s*10 + g
2: 使用循环的方式进行遍历 for循环,while循环,do while循环
for(g = 1; g < 5; g++){
}
*/
int main()
{
int b, s, g;
// 统计输出了多少个这样的三位数使用计数的方式进行统计,注意加法变量的初始化往往是从0开始的
int count = 0;
// 使用嵌套循环的方式进行遍历
for (b = 1; b < 5; b++) {
for (s = 1; s < 5; s++) {
for (g = 1; g < 5; g++) {
// 使用if语句进行判断,要求三个数都不相等输出三个数
if (g != s && s != b && g != b ) {
printf("%d,%d,%d\n", b, s, g);
// 输出一次统计一次
count++;
}
}
}
}
// 在所有的循环条件遍历玩的情况下输出统计的数值
printf("count = %d\n", count);
return 0;
}
- [ ] eg2: 求取利润
- 题目: 企业发放的奖金根据利润提成
- #利润(I)低于或等于10万元时,奖金提成10%
- #利润高于10万元,低于20万时,低于10万的部分按10%提成,高于10万部分可提成百分之7.5
- #20万到40万之间时,高于20万元的部分,可提成百分之3
- #60万到100万之间时,高于60万元部分按百分之1提成
- 从键盘输入当月利润I求应该发放的奖金总数
解题思路的代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include
/*
- eg2: 求取利润
- 题目: 企业发放的奖金根据利润提成
- #利润(I)低于或等于10万元时,奖金提成10%
- #利润高于10万元,低于20万时,低于10万的部分按10%提成,高于10万部分可提成百分之7.5
- #20万到40万之间时,高于20万元的部分,可提成百分之3
- #60万到100万之间时,高于60万元部分按百分之1提成
- 从键盘输入当月利润I求应该发放的奖金总数
使用if else的进行处理
int a = 10;
int b = 20;
if (a > b) {
printf("a>b\n");
}
else if(a < b){
printf("a<=b\n");
}
else {
printf("a = b\n");
}
*/
int main() {
int profit = 0;
int bonus = 0;
int bonus1 = 100000 * 0.1;
int bonus2 = 100000 * 0.1 + 100000 * 0.075;
int bonus3 = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05;
int bonus4 = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03;
int bonus5 = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 +
400000 * 0.015;
//获取用户键盘输入
printf("请输入当前业务利润:");
scanf("%d:", &profit);
// #利润(I)低于或等于10万元时,奖金提成10%
if (profit <= 100000) {
bonus = profit * 0.1;
}
else if (profit <= 200000) {
bonus = bonus1 + (profit-100000) * 0.075;
}
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 {
bonus = bonus5 + (profit - 1000000) * 0.01;
}
printf("你获得的奖金为 = %d\n", bonus);
return 0;
}
eg3: 一个整数,他加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
解题思路代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg3: 一个整数,他加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
表示的意思是
x + 100 = n ^2; x + 100 + 168 = m^2; ----------> x
根据题目的意思:因为x可以推导数n 和 m 所以将x消去然后使用n 和 m 进行取值
如: n ^2 - 100 = m ^2 - 268;m^2 - n ^2 = 168; (m + n) - (m - n) = 168; m + n = i; m - n = j ; i - j = 168;
2 <= i*j <= 168 / 2
*/
int main() {
int j, n, m, x;
for (int i = 2; i <= 168 / 2; i++) {
if (168 % i == 0) {
j = 168 / i;
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
}
}
printf("x = %d", x);
return 0;
}
eg4: 输入某年某月某日,判断这一天是这一年的第几天
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg4: 输入某年某月某日,判断这一天是这一年的第几天
*/
int main() {
// 获取用户键盘输入
int day, month, year;
int sum = 0;
int leap = 0;
printf("请输入当前的年月和日:");
scanf("%d,%d,%d", &year, &month, &day);
printf("year = %d , month = %d, day = %d\n", year, month, day);
// 明显循环带选择的往往使用switch语句进行处理,根据某一个变量判断可取的值但是值也有限优先考虑switch语句
switch (month) {
case 1:
printf("一月份\n");
sum = 0;
break;
case 2:
printf("二月份\n");
sum = 31;
break;
case 3:
printf("三月份\n"); sum = 58; break;
case 4:
printf("四月份\n"); sum = 90; break;
case 5:
printf("五月份\n"); sum = 120; break;
case 6:
printf("六月份\n"); sum = 150;break;
case 7:
printf("七月份\n"); sum = 180; break;
case 8:
printf("八月份\n"); sum = 210; break;
case 9:
printf("九月份\n"); sum = 240; break;
case 10:
printf("十月份\n"); sum = 270; break;
case 11:
printf("十一月份\n"); sum = 300; break;
case 12:
printf("十二月份\n"); sum = 330; break;
}
// 判断是平年还是润年的代码
if (year % 400 || (year % 4 == 0 && year % 100 != 0)) {
leap = 1;
}
else {
leap = 0;
}
if (leap == 1 && month > 2) {
sum++;
}
sum = sum + day;
printf("总天数是%d\n", sum);
return 0;
}
eg5: 输入三个整数想,x,y,z,把这三个数从小到大输出
解题代码和思路
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg5: 输入三个整数想,x,y,z,把这三个数从小到大输出
这个类型的题目还可以用冒泡排序进行处理
*/
int main() {
// 先找出最小的数然后进行比较
int a = 15;
int b = 20;
int c = 8;
int sum = a + b + c;
int min, max, middle;
//printf("%d\n", a < b ? a : b);
min = (a < b ? a : b) < c ? (a < b ? a : b) : c;
max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
middle = sum - (min + max);
printf("Smallest %d\n", min);
printf("Max %d\n", max);
printf("Middle %d\n", middle);
return 0;
}
eg6: 使用*输出一个字母c
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg6: 使用*输出一个字母c,注意要输出带弧度的图案可以使用二维数组进行输出
*/
int main() {
int m = 5;
for (int i = 0; i < 5; i++) {
printf("*");
}
printf("\n");
for (int i = 0; i < m - 1; i++) {
printf("*\n");
}
for (int i = 0; i < 5; i++) {
printf("*");
}
printf("\n");
return 0;
}
eg7: 输出99乘法表
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg7:输出一个9*9的乘法口诀表
*/
int main() {
int i = 0;
int j = 0;
for (i = 0; i < 9; i++) { // i表示输出的是第几行
for (j = 0; j < i+ 1; j++) { // j表示第几行中输出的数
printf("%d * %d = %-2d ", i, j, i * j);
}
printf("\n");
}
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg7:输出一个9*9的乘法口诀表
*/
int main() {
int i = 10;
int j = 0;
for (i = 1; i <= 9; i++) { // i表示输出的是第几行
for (j = 1;j <= i; j++) { // j表示第几行中输出的数
printf("%d*%d=%-2d ", i, j, i * j);
}
printf("\n");
}
return 0;
}
- eg8:斐波那楔数列古典问题(兔子生崽):
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) - 程序分析:兔子的规律为数列1, 1, 2, 3, 5, 8, 13, 21…,即下个月是上两个月之和(从第三个月开始)。
解题代码和思路
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg8:斐波那楔数列古典问题(兔子生崽):
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔
子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
程序分析:兔子的规律为数列1, 1, 2, 3, 5, 8, 13, 21....,即下个月是上两个月之和(从第三个月开始)。
数学模型 ----> 程序
*/
int main() {
int a = 1;
int b = 1;
for (int i = 1; i <= 10; i++) {
a = a + b;
b = b + a;
printf("%d,%d", a, b);
}
return 0;
}
eg9:判断101-200之间的素数
1:质数,素数
大于1的整数中,只能被1和这个数本身整除的数
2:如何判断是否是素数
3:一次枚举出每个数
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
eg9:判断101-200之间的素数
1:质数,素数
大于1的整数中,只能被1和这个数本身整除的数
2:如何判断是否是素数
3:一次枚举出每个数
*/
// 函数的定义
int isPrimeNumber(int m) {
int i;
// 计算一个数的平方使用函数sqrt()使用sqrt需要使用math.h的包
int k = (int)sqrt((double)m);
for (i = 2; i <= k; i++) {
// 判断是否能够整除,如果可以整除的话说明不是素数,切断break跳出
if (m % i == 0) {
break;
}
}
if (i > k) {
return 1;
//printf("%d,是素数", m);
}
else {
return 0;
// 到这一步break被执行,说明不是素数; i < m;
// printf("%d,不是素数", m);
}
}
int main() {
// 函数的声明
int isPrimeNumber(int m);
int j;
// for循环进行判断遍历循环101-200之间的数
for (j = 101; j <= 200; j++) {
if (isPrimeNumber(j)) {
printf("%d ", j);
}
}
return 0;
}
eg10: 题目 -> 打印水仙花数:打印出所有的水仙花数,所谓的水仙花数是指一个三位数,其各位数字立方 和等于该数本身 例如:153是一个水仙花数,因为153 = 1的三次方 + 5 的三次方 + 3的三次方
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
题目 -> 打印水仙花数:打印出所有的水仙花数,所谓的水仙花数是指一个三位数,其各位数字立方和等于该数本身
例如:153是一个水仙花数,因为153 = 1的三次方 + 5 的三次方 + 3的三次方
*/
int main() {
// 分别表示个位,10位,和百位的数
int x = 0, y = 0, z = 0;
int i;
// 将三位数的每一个位取出来
for (i = 100; i <= 999; i++) {
x = i % 10;// 获取位个数
y = i / 10 % 10; // 获取十位数
z = i / 100 % 10; // 获取百位数
// 使用if进行判断
if (i == (x * x * x + y * y * y + z * z * z)) {
printf("%d 是水仙花数\n",i);
}
}
return 0;
}
eg11: 题目:将正数分解为质因数,例如:输入90,打印出90 = 2 * 3 * 3 * 5
程序分析:对n进行分解质因数,应该先找到一个最小的质因数K然后按照以下的步骤完成
1:如果这个是质数恰巧等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束另外打印出 即可
2:但n能被k整除,则打印输出k的值,并用n除以k的商,作为新的正整数n,重复执行第二步
3:如果n不能被k整除,则用k+1作为k的值,重复执行第一步
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
题目:将正数分解为质因数,例如:输入90,打印出90 = 2 * 3 * 3 * 5
程序分析:对n进行分解质因数,应该先找到一个最小的质因数K然后按照以下的步骤完成
1:如果这个是质数恰巧等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束另外打印出即可
2:但n能被k整除,则打印输出k的值,并用n除以k的商,作为新的正整数n,重复执行第二步
3:如果n不能被k整除,则用k+1作为k的值,重复执行第一步
*/
int main() {
int m = 90;
int i;
for (i = 2; i <= m; i++) {
while (m % i == 0) {
printf("%d ", i);
m = m / i;
}
}
return 0;
}
eg12: 题目:利用条件运算符来嵌套完成此题,学习成绩>= 90分的同学用A表示,60-89分的同学用B表示,60分以下的同学用C表示 程序分析:(a>b)?a:b 这是条件运输符的基本例子。
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
题目:利用条件运算符来嵌套完成此题,学习成绩>= 90分的同学用A表示,60-89分的同学用B表示,60分以下的同学用C表示
程序分析:(a>b)?a:b 这是条件运输符的基本例子。
*/
int main() {
int score = 50;
char grade;
grade = (score >= 90) ? 'A' : ((score >= 60) ? 'B' : 'C');
printf("grade = % c\n", grade);
return 0;
}
**eg13:题目:输入两个正整数m和n,求取其最大的公约数和最小公倍数
1: 最小公倍数:两个数的积 / 最大公约数
2: 求最大公约数用辗转相除法(有名欧几里得算法)
例如需要求1997 和 615两个正整数的最大公约数,用欧几里得算法,是这样进行的
1997/615 =3(余152)
615 / 152 =4(余7)
152 / 7 = 21 (余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 /1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复的做除法运算,当余数为0时,取当前算式除数位最大公约数,所以得出1997和615的最大公约数为1**
解题思路和代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
/*
题目:输入两个正整数m和n,求取其最大的公约数和最小公倍数
1: 最小公倍数:两个数的积 / 最大公约数
2: 求最大公约数用辗转相除法(有名欧几里得算法)
例如需要求1997 和 615两个正整数的最大公约数,用欧几里得算法,是这样进行的
1997/615 =3(余152)
615 / 152 =4(余7)
152 / 7 = 21 (余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 /1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复的做除法运算,当余数为0时,取当前算式除数位最大公约数,所以得出1997和615的最大公约数为1
*/
int main() {
int a = 885;
int b = 615;
int r;
r = a % b;
while (r != 0) {
a = b;
b = r;
r = a % b;
}
printf("所以最大公约数是:%d\n", b);
return 0;
}
持续更新中…