目录
编辑
1.什么是算术运算? 什么是关系运算? 什么是逻辑运算?
2. C语言中如何表示“真”和“假”? 系统如何判断一个量的“真”和“假”?
3. 写出下面各逻辑表达式的值。设a=3,b=4,c=5。(1)a+b>c && b==c(2)a‖b+c && b-c(3)!(a>b) && !c‖1(4)!(x=a) && (y=b) && 0(5)!(a+b)+c-1 && b+c/2
4.有 3个整数a,b,c,由键盘输入,输出其中最大的数。
5.从键盘输入一个小于 1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为小于 1000 的正数。若不是,则要求重新输入。
6.有一个函数:y= x (x < 1);2x-1 (1 <= x < 10);3x-11 (x >= 10)写程序,输入 x的值,输出y相应的值。
7.有一函数:y= -1(x < 0); 0(x = 0);1(x > 0)有人编写了以下两个程序,请分析它们是否能实现题目要求。不要急于上机运行程序,先分析两个程序的逻辑,画出它们的流程图,分析它们的运行情况。然后上机运行程序,观察和分析结果。(1)# include int main(){int x,y;printf(″enter x:");scanf(″d%",&x);y=-1;if(x!=0) if(x>0) y=1;else y=0;printf("x=%d,y=%d\n",x,y);return 0;}(2)# include int main(){int x,y;printf(″enter x:'');scanf("%d",&x);y=0;if(x>=0) if(x>0) y=1;else y=-1;printf(″x = %d, y = %d\n",x,y);return 0;}
8. 给出一百分制成绩,要求输出成绩等级A'、'B'、'C'、'D'、'E'。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为''D',60分以下为'E'。
9. 给一个不多于5位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为 321,应输出 123。
10.企业发放的奖金根据利润提成。利润 I 低于或等于 100 000元的,奖金可提成10%;利润高于 100 000 元,低于200 000元((1000001000000时,超过1000 000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。要求:(1) 用 if语句编程序;(2) 用 switch语句编程序。≤200000)时,低于>
11. 输入4个整数,要求按由小到大的顺序输出。
12. 有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,2)、(2,-2),圆半径为1,见图 4.17。这 4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
- 算术运算:指的是四则运算,加减乘除,乘方,开方这些运算统称。(运算符:+ - * / % ++ --)
- 关系运算:在C语言中,关系运算也可以称为比较运算,用于进行两个量、或者两个表达式结果之间的关系表示。(运算符:< > <= >= == !=)
- 逻辑运算:对表达式进行逻辑与或非上的逻辑真假测试。(运算符:&& || !)
- 在C语言中,用0表示假,用1表示真。
- 虽然C用语言中,假的用0表示,真的用1表示,但是在系统真正进行判断的时候,可不是0 、1的判断。在系统判断中,0表示假,但是非假即真,也就是非0值都是真。
优先级:算术运算符 > 关系运算符 > 逻辑运算符(这不是绝对,逻辑非优先级最高)
3+4 > 5 && 4==5
7 > 5 && 4 == 5
1 && 0
0
3 || 4 + 5 && 4-5
3 || 9 && -1
3 || 1
1
!(3 > 4) && !5 || 1
!(0) && 0 || 1
1 && 0 || 1
0 || 1
1
!(x=3) && (y=4) && 0
!(3) && 4 && 0
0 && 4 && 0
0 && 0
0
!(3+4) + 5 - 1 && 4 + 5/2
!(7) + 5 - 1 && 4 + 5/2
0 + 5 - 1 && 4 + 5/2
4 && 4 + 2
4 && 6
1
#include
int main() { int a, b, c, max = 0; printf("请输入要比较的三个数:>"); scanf("%d%d%d", &a, &b, &c); if (a > b) max = a; else max = b; if (max < c) max = c; printf("最大值是:%d\n", max); return 0; }
#include
#include int main() { int num = 0; printf("请输入一个数:>"); scanf("%d", &num); if (num >= 1000) { printf("输入数据有误,请重新输入:>"); scanf("%d", &num); } int ret = (int)sqrt(num); printf("%d\n", ret); return 0; }
#include
int main() { float x, y; printf("请输入x的值:"); scanf("%f", &x); if (x < 1) { y = x; } else if (x >= 1 && x < 10) { y = 2 * x - 1; } else y = 3 * x - 11; printf("y = %.2f\n", y); return 0; }
else总是会找离自己最近的else if进行配对,因此本题中的else虽然与外层if对齐,但是与它配对的却是内层if。所以这段代码不
能够实现题目要求。
这段代码的错误和第一小题一样,所以也实现不了题目要求。
#include
int main() { float score; printf("请输入你的成绩:"); scanf("%f", &score); if (score >= 90) printf("A\n"); else if (score >= 80 && score < 90) printf("B\n"); else if (score >= 70 && score < 80) printf("C\n"); else if (score >= 60 && score < 70) printf("D\n"); else printf("E\n"); return 0; }
#include
int main() { int num = 0; printf("请输入一个不大于5位的正整数:"); scanf("%d", &num); if (!(num >= 0 && num <= 99999)) { printf("输入有误\n"); return -1; } printf("%d ", num % 10); if (num > 10) printf("%d ", (num / 10) % 10); if (num > 100) printf("%d ", (num / 100) % 10); if (num > 1000) printf("%d ", (num / 1000) % 10); if (num > 10000) printf("%d ", (num / 10000) % 10); return 0; }
#include
int main() { double I; printf("请输入你的利润:"); scanf("%lf", &I); double salary_10 = 100000 * 0.1; double salary_20 = salary_10 + (100000 * 0.075); double salary_40 = salary_20 + (200000 * 0.05); double salary_60 = salary_40 + (200000 * 0.03); double salary_100 = salary_60 + (400000 * 0.015); double salary = 0; if (I < 100000) { salary = I * 0.1; } else if (I > 100000 && I <= 200000) { salary = salary_10 + (I - 100000) * 0.075; } else if (I > 200000 && I <= 400000) { salary = salary_20 + (I - 200000) * 0.05; } else if (I > 400000 && I <= 600000) { salary = salary_40 + (I - 400000) * 0.03; } else if (I > 600000 && I <= 1000000) { salary = salary_60 + (I - 600000) * 0.015; } else if (I > 1000000) { salary = salary_100 + (I - 1000000) * 0.01; } printf("你的奖金是:%.2f\n", salary); return 0; }
#include
int main() { double I; printf("请输入你的利润:"); scanf("%lf", &I); double salary_10 = 100000 * 0.1; double salary_20 = salary_10 + (100000 * 0.075); double salary_40 = salary_20 + (200000 * 0.05); double salary_60 = salary_40 + (200000 * 0.03); double salary_100 = salary_60 + (400000 * 0.015); double salary = 0; int level = I / 100000; switch (level) { case 0: salary = I * 0.1; break; case 1: salary = salary_10 + (I - 100000) * 0.075; break; case 2: case 3: salary = salary_20 + (I - 200000) * 0.05; break; case 4: case 5: salary = salary_40 + (I - 400000) * 0.03; break; case 6: case 7: case 8: case 9: salary = salary_60 + (I - 600000) * 0.015; break; default: salary = salary_100 + (I - 1000000) * 0.01; break; } printf("你的奖金是:%.2f\n", salary); return 0; }
#include
int main() { int num1, num2, num3, num4; printf("请输入4个数字:"); scanf("%d%d%d%d", &num1, &num2, &num3, &num4); if (num1 > num2) { int tmp = num1; num1 = num2; num2 = tmp; } if (num1 > num3) { int tmp = num1; num1 = num3; num3 = tmp; } if (num1 > num4) { int tmp = num1; num1 = num4; num4 = tmp; } if (num2 > num3) { int tmp = num2; num2 = num3; num3 = tmp; } if (num2 > num4) { int tmp = num2; num2 = num4; num4 = tmp; } if (num3 > num4) { int tmp = num3; num3 = num4; num4 = tmp; } printf("%d %d %d %d", num1, num2, num3, num4); return 0; }
#include
#include int main() { double x, y; printf("请输入x,y轴坐标 :"); scanf("%lf,%lf", &x, &y); if (fabs(x) > 3 || fabs(y) > 3) { printf("该点的建筑高度是0m\n"); return 0; } //计算输入位置距离圆心的长度,先计算两个边长 double a_x = fabs(fabs(x) - 2); double b_y = fabs(fabs(y) - 2); double bevel = sqrt(a_x * a_x + b_y * b_y); if (bevel > 1) printf("该点的建筑高度是0m\n"); else printf("该点的建筑高度是10m\n"); return 0; }