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;
else
return 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;
}