1.
算数运算:
加、减、乘、除、取余等运算的统称
关系运算:
关系运算就是“比较运算”,将两个数值进行比较,判断其比较的结果是否符合给定的条件。
逻辑运算:
与&&,或||,非!
2.
C语言表示真假:
C语言编译系统在表示逻辑运算结果时,用数值1代表“真”,用0代表“假"。
系统判断一个量的真假:
在判断一个量是否为"真"时,以0代表"假",以非0代表"真"。
3.
(1)值为0。解析:a+b>c为真,b==c为假,一真一假逻辑与为假。
(2)值为1。解析:a=3,非0,为真;b+c=9,非0,为真;b-c=-1,非0,为真。三真逻辑与为真。
(3)值为1。解析:(a>b)为假,!(a>b)为真;(!c||1)为真,真真逻辑与为真。
(4)值为0。解析:0为假,&&逻辑运算,有一个假,即为假。
(5)值为1。解析:略
注:优先级关系:!(非)>算术运算符>关系运算符>&&、||>赋值运算符
4.
思路:
先将a与b比较,若a>=b,将a与c比较,max=(a,c);若a<b,将b与c比较,max=(b,c)。
代码:
#include<stdio.h>
int main() {
int a, b, c,max;
scanf_s("%d%d%d", &a, &b, &c);
if (a >= b) {
if (a >= c) max = a;
else max = c;
}
else {
if (b >= c) max = b;
else max = c;
}
printf("max=%d", max);
return 0;
}
运行结果:
5.
思路:
首先判断输入的数字是否是于1000的正数,若不是,则重新输入;然后使用sqrt函数对数据进行取平方根;最后调整输出格式。
代码:
#include<stdio.h>
#include<math.h>
int main() {
float number,final;
printf("请输入一个小于1000的正数:");
scanf_s("%f", &number);
while (number<0||number>1000) {
printf("数据错误,请重新输入:");
scanf_s("%f", &number);
}
final = sqrt(number);
printf("%5.2f的平方根为%.0f", number,final);
return 0;
}
运行结果:
6.
思路:
读入x,使用if...else if...else...语句判断x的范围,据此,输入y。
代码:
#include<stdio.h>
int main() {
float x, y;
printf("请输入x的值:");
scanf_s("%f", &x);
if (x < 1)
y = x;
else if (x>=1 && x < 10)
y = 2 * x - 1;
else
y = 3 * x - 11;
printf("x=%f\ty=%f", x, y);
return 0;
}
运行结果:
7.
(1)错误。 else总是和距离它最近的尚未匹配的一个if匹配。
if(x!=0){
if(x>0)
y=1;
else
y=0;
}
运行结果:
x<0时——y=0;
x=0时——y=-1;
x>0时——y=1;
(2)错误。
if(x>=0){
if(x>0)
y=1;
else
y=-1;
}
运行结果:
x<0时——y=0;
x=0时——y=-1;
x>0时——y=1;
8.
思路:
输入成绩,根据不同的区间段,输出等级即可。
代码:
#include<stdio.h>
int main() {
int score;
printf("请输入您的成绩:");
scanf_s("%d", &score);
if(score<60)
printf("您的等级为“E”\n");
else if(score>=60&&score<=69)
printf("您的等级为“D”\n");
else if (score >= 70 && score <= 79)
printf("您的等级为“C”\n");
else if (score >= 80 && score <= 89)
printf("您的等级为“B”\n");
else if (score >= 90 && score <= 100)
printf("您的等级为“A”\n");
return 0;
}
运行结果:
9.
思路:见代码注释
代码:
#include<stdio.h>
#include<math.h>
int main() {
int n;
scanf_s("%d", &n);
int first, second, third, four, five;
int i = 1;
int number = n;
//通过i记录数字的位数
while (number / 10 != 0) {
i++;
number /= 10; //
}
printf("这个数是%d位数\n", i);
//顺序、逆序输出
first = n / 10000; //得到万位
second = n % 10000 / 1000; //得到千位
third = n % 1000 / 100; //得到百位
four = n % 100 / 10; //得到十位
five = n % 10; //得到个位
if (first != 0) { //如果第5位数字不为0
printf("分别输出每一位数字:%d %d %d %d %d\n", first, second, third, four, five);
printf("逆序输出该数字:%d%d%d%d%d", five, four, third, second, first);
}
else if (second != 0) { //第5位数字为0,但第44位不为0
printf("分别输出每一位数字:%d %d %d %d\n", second, third, four, five);
printf("逆序输出该数字:%d%d%d%d", five, four, third, second);
}
else if (third != 0) { //第3位数字不为0
printf("分别输出每一位数字:%d %d %d\n", third, four, five);
printf("逆序输出该数字:%d%d%d", five, four, third);
}
else if (four != 0) {
printf("分别输出每一位数字:%d %d\n", four, five);
printf("逆序输出该数字:%d%d", five, four);
}
else{
printf("分别输出每一位数字:%d\n",n);
printf("逆序输出该数字:%d", n);
}
return 0;
}
运行结果:
10.
(1)利用if语句实现
思路:
仔细分析每段区间。eg:400000<I<=600000时,奖金由以下几部分构成:
0~100000 100000*10%=10000
100000~200000: 100000*7.5%=7500
200000~400000: 200000*5%=10000
400000~600000: (I-400000)*3%
故bonus=10000+7500+10000+(I-400000)*3%=27500+(I-400000)*0.03
代码:
#include<stdio.h>
int main() {
float I, bonus;
printf("请输入当月利润:");
scanf_s("%f", &I);
if (I <= 100000) {
bonus = I * 0.1;
}
else if (I > 100000 && I <= 200000) {
bonus = 10000 + (I - 100000) * 0.075;
}
else if (I > 200000 && I <= 400000) {
bonus = 10000 + 7500 + (I - 200000) * 0.05;
}
else if (I > 400000 && I <= 600000) {
bonus = 10000 + 7500 + 10000 + (I - 400000) * 0.03;
}
else if (I > 600000 && I <= 1000000) {
bonus = 10000 + 7500 + 10000 + 6000 + (I - 600000) * 0.015;
}
else {
bonus = 10000 + 7500 + 10000 + 6000 + 6000 + (I - 1000000) * 0.01;
}
printf("应发奖金:%5.2f元", bonus);
return 0;
}
运行结果:
11.
思路:
第一步:a分别跟b、c、d比较,若a较大,则互换两者的值,最终变量a中存放最小的数。
第二步:b分别跟c、d比较,若b较大,则互换两者的值,最终变量b中存放第二小的数。
第三步:c跟d比较,所c较大,则互换两者的值,最终变量c存放第三小的数,变量d存放最大的数。
代码:
#include<stdio.h>
int main() {
int a, b, c, d, t;
printf("请依次输入4个整数:");
scanf_s("%d%d%d%d", &a, &b, &c, &d);
if (a > b) {t = a;a = b;b = t;} //若x>b,交换x、y的值;下同
if (a > c) {t = a;a = c;c = t;}
if (a > d) {t = a;a = d;d = t;}
if (b > c) {t = b;b = c;c = t;}
if (b > d) {t = b;b = d;d = t;}
if (c > d) {t = c;c = d;d = t;}
printf("%d<%d<%d<%d", a, b, c, d);
return 0;
}
运行结果:
12.
思路:
分别判断点(x,y)到四个点的距离,若有一个小于1,则输出给高度为10,否则为0。
代码:
#include<stdio.h>
#include<math.h>
int main() {
int leap; //若在塔内,leap为1,否则leap为0
double x, y;
printf("请输入坐标:");
scanf_s("(%lf,%lf)", &x, &y);
if (sqrt((x - 2) * (x - 2) + (y - 2) * (y - 2)) <= 1)
leap = 1;
else if (sqrt((x + 2) * (x + 2) + (y - 2) * (y - 2)) <= 1)
leap = 1;
else if (sqrt((x + 2) * (x + 2) + (y + 2) * (y + 2)) <= 1)
leap = 1;
else if (sqrt((x - 2) * (x - 2) + (y + 2) * (y + 2)) <= 1)
leap = 1;
else
leap = 0;
if (leap == 1) {
printf("该点建筑高度为10m\n");
}
else {
printf("该点建筑高度为0m\n");
}
}
运行结果:
欢迎探讨交流,点赞、评论、收藏。
持续更新中.......