C语言100题
考研初试C语言复习 2021.9.21
前言
。
提示:以下是本篇文章正文内容,下面案例可供参考
第一题、
1.题目描述
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
2.代码
#include <stdio.h>
int main() {
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 5; j++) {
for (int k=1; k < 5; k++) {
if (i != k && i != j && j != k) printf("%d%d%d\n", i, j, k);//都不相等,则输出3位数
}
}
}
return 0;
}
题目思考:套循环即可
第二题、
1.题目描述
企业发放的奖金根据利润提成。
利润(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%提成。
2.代码
#include <stdio.h>
int main() {
double x,m=0;//设x为利润奖金
scanf_s("%lf", &x);
x /= 10000;//将x转换为万元
if (x <= 10) m = 0.1 * x;
else if (x >= 10 && x < 20) m = 1 + (x - 10) * 0.075;
else if (x >= 20 && x < 40) m = 1.75 + (x - 20) * 0.05;
else if (x >= 40 && x < 60) m = 2.75 + (x - 40) * 0.03;
else if (x >= 60 && x < 100) m = 3.35 + (x - 60) * 0.015;
else m = 3.95 + (x - 100) * 0.01;
printf("提成为:%lf", m * 10000);
return 0;
}
题目思考:简单选择语句
第三题、
1.题目描述
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
2.代码
#include <cstdio>
int main() {
int num,i,j,n,m;//num为一个整数,i=m+n,j=m-n(其中m>n)
for (i = 1; i < 168 / 2 + 1; i++) {//j一定大于2,则i一定小于168/2+1
if (168%i == 0) {//由平方差公式推导m*m-n*n=168
j = 168 / i;//i和j一定同奇或者同偶
if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0) {//i一定比j大
m = (i + j) / 2;
n = (i - j) / 2;
num = n * n - 100;
printf("%d\n", num);
}
}
}
return 0;
}
题目思考:先推导数理关系,从差值入手,大大减少复杂度
第四题、
1.题目描述
输入某年某月某日,判断这一天是这一年的第几天?
2.代码
ps. 菜鸟的解法与我不大一样,属实难顶
#include <stdio.h>
int main() {
int day=0;
int y, m, d;//m代表月份,d代表天数
int a[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
scanf_s("%d %d %d", &y, &m, &d);
if (y % 4 == 0) {
a[1] = 29;
}
else {
a[1] = 28;
}
for (int i = 0; i < m-1; i++) {
day = day + a[i];
}
printf("%d", day + d);
return 0;
}
题目思考:数组和选择结构应该都可以吧?
第五题、
1.题目描述
比较x,y,z的值 按照大到小输出
2.代码
#include <stdio.h>
int main() {
int x, y, z;
scanf_s("%d %d %d", &x, &y, &z);
if (x > y && x > z) {
printf("%d ", x);
if (y > z) printf("%d %d", y,z);
else printf("%d %d", z,y);
}if (z > y && z > x) {
printf("%d ",z);
if (y > x) printf("%d %d", y,x);
else printf("%d %d", x,y);
}if (y> x&& y > z) {
printf("%d ", y);
if (x > z) printf("%d %D", x,z);
else printf("%d %d", z,x);
}
return 0;
}
题目思考:暴力破解最容易想出来,但可以利用缓存来减少复杂度
总结
第一天 康复训练