基础程序练习
前言:
前面已经给大家讲了一些基本的东西,今天小编就不更新新的知识点了,给大家几个例题,消化消化已经讲过的内容,知识不是学的多就好,而是会的多才好哦。
题目一:分别求二维数组,求对角线,反对角线之和
题目分析:用两个for循环语句就可以解决求和,对角线就是横坐标和纵坐标相同就是,但是反对角线呢,横坐标和纵坐标之和等于一个确定值,那么在这里可以发现等于2。
#include<stdio.h>
#include<stdlib.h>
int main() {
int sum = 0;
int duisum = 0;
int xieduisum = 0;
int a[3][3] = { {1,2,3},{1,2,3},{1,2,3} };
for (int i = 0; i < 3; i++) {
for (int b = 0; b < 3; b++) {
sum += a[i][b];
if (i == b) {
duisum += a[i][b];
}
if ((i + b) == 2) {
xieduisum += a[i][b];
}
}
}
printf("二维数组之和为%d\n", sum);
printf("二维数组对角线之和为%d\n", duisum);
printf("二维数组斜对角线之和为%d\n", xieduisum);
system("pause");
return 0;
}
结果:
1.png
题目二:
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
分析:组成所有可能的组合,去掉不符合条件的组合。
#include <stdio.h>
#include <conio.h>
void main()
{
int i, j, k; //分别为三位
int sum = 0;
printf("\n");
for (i = 1; i < 5; i++) //以下为三重循环
for (j = 1; j < 5; j++)
for (k = 1; k < 5; k++)
{
if (i != k && i != j && j != k) {//确保i、j、k三位互不相同
printf("%d, %d, %d\n", i, j, k);
sum++;
}
}
printf("总共有%d个", sum);
getchar();
}
结果:
2.png
题目三:
企业发放的奖金根据利润提成。
- 利润(低于或等于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%提成,从键盘输入当月利润,求应发放奖金总数?
分析:
提成有很多中算法,对应很多种,就对应C中的多中选择,用户输入利润,首先判断利润的范围,在对应相应的提成算法即可。
#include<stdio.h>
#include<stdlib.h>
int grate(double lirui);
int main(){
double lirui = 0;
double jiangjin = 0;
char iscontinue;
while (1) {
//提示用户当月的利润数额
printf("请输入利润:");
scanf_s("%d", &lirui);
int dengjie = grate(lirui); //计算奖金数额
switch (dengjie)
{
case 1:
jiangjin = lirui * 0.1;
printf("奖金为%f万\n", jiangjin);
break;
case 2:
jiangjin = 10 * 0.1 + (lirui - 10)*0.075;
printf("奖金为%f万\n", jiangjin);
break;
case 3:
jiangjin = 10 * 0.1 + 10 * 0.75 + (lirui - 20)*0.05;
printf("奖金为%f万\n", jiangjin);
break;
case 4:
jiangjin = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (lirui - 40)*0.03;
printf("奖金为%f万\n", jiangjin);
break;
case 5:
jiangjin = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (lirui - 60)*0.015;
printf("奖金为%f万\n", jiangjin);
break;
default:
jiangjin = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 100 * 0.015 + (lirui - 100)*0.01;
printf("奖金为%f万\n", jiangjin);
break;
}
//选择是否继续
}
system("pause");
return 0;
} //计算等级数
int grate(double lirui) {
int dengji = 0;
if (lirui <= 10)
dengji = 1;
if (10 < lirui <= 20)
dengji = 2;
if (20 < lirui <= 40)
dengji = 3;
if (40 < lirui <= 60)
dengji = 4;
if (60 < lirui <= 100)
dengji = 5;
if (lirui > 100)
dengji = 6;
return dengji;
}
结果:
3.png
题目四:
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
int answer = 0;
for (int i = 0; i < 100000; i++) {
int a = sqrt(i + 100);
int b = sqrt(i + 368);
if ((a*a - 100) == i && (b*b - 368) == i) {
printf("这个数为%d:\n", i);
}
}
system("pause");
return 0;
}
结果:
4.png
大家看不懂的可以扣我的
总结:
学习是不断进步的过程,写代码是不断改正的过程,今天下这四个代码,花费了我很多时间,不过高兴的是,最后都写出来了,最高兴的就是努力了有结果,期待有结果的明天!
网友评论