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
(1)0
3+4>5 优先3+4得到结果7,因此7>5结果为真; 4==5为假,一真一假逻辑与最终结果为假。
(2)1
优先算术运算4+5得到7,非0则为真,4-5得到-1,非0则为真,接下来逻辑与判断,最终逻辑或判断。
(3)1
!优先级最高,!(3>4)最终结果为真,!5为假; 其次 &&,真&&假得到假,最终||,1为真,假或真为真
(4)0
&&优先级最低是最后一个逻辑运算,因此不管如何,最终&&0,则肯定为假
(5)1
在vs中优先对(a+b)取非得到0,0+5-1结果为4,因此最终为真(不同平台下编译器可能会优先算术运算,则最终取非得到结果为假)
8. 给出一百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。 90分以上为’A’,8089分为’B’,7079分为’C’ ,60~69分为’D’ ,60分以下为’E’。
switch - case
#include#include int main() { float score; char grade; printf("请输入学生成绩:"); scanf("%f", &score); while(score > 100 || score < 0) { printf("n输入错误,请重新输入"); scanf("%f", &score); } switch((int)(score/10)) { case 10: case 9: grade = 'A';break; case 8: grade = 'B';break; case 7: grade = 'C';break; case 6: grade = 'D';break; case 5: case 4: case 3: case 2: case 1: grade = 'D'; } printf("成绩是%5.1f,相应的等级为%cn",score,grade); return 0; }
if - else
if (score >= 90) {
printf("An");
}else if (score >= 80 && score < 90) {
printf("Bn");
}else if (score >= 70 && score < 80) {
printf("Cn");
}else if (score >= 60 && score < 70) {
printf("Dn");
}else {
printf("En");
}
第五章
#include#include int main() { //n为a的个数 int n; double a, prev_sum = 0.0, total_sum = 0.0; printf("请输入a的值以及n的值: "); scanf("%lf %d", &a, &n); //循环n次求总和 for (int i = 0; i < n; i++) { prev_sum += a * pow(10, i); total_sum += prev_sum; } printf("总和为:%lfn", total_sum); return 0; }
#includeint main() { double total_sum = 0,t = 1; for(int i = 1; i <= 20; i++) { t = t * i; total_sum = total_sum + t; } printf("1~20每个数字阶乘总和为:%lfn",total_sum); return 0; }
#includeint main() { //a表示百位数字,b表示十位数字,c表示各位数字 int a, b, c; for (int i = 100; i < 1000; i++) { a = i / 100; b = (i / 10) % 10; c = i % 10; if (a * a * a + b * b * b + c * c * c == i) { printf("%dn", i); } } return 0; }
#includeint main() { int data, fator, sum; for (data = 2; data <= 1000; data++) { //1是所有整数的因子,所以因子之和从1开始 sum = 1; for (fator = 2; fator <= data / 2; fator++) { if (data % fator == 0) { sum += fator; } } // 判断此数是否等于因子之和 */ if (sum == data) { printf("%d its factors are 1, ", data); for (fator = 2; fator <= data / 2; fator++) { if (data % fator == 0) { printf("%d, ", fator); } } printf("n"); } } return 0; }
#includeint main() { int i, n = 20; double a = 2, b = 1, s = 0, t; for (i = 1; i <= n; i++) { s = s + a / b; //记录前一项分子 t = a; //前一项分子与分母之和为后一项分子 a = a + b; //前一项分子为后一项分母 b = t; } printf("sum=%16.10fn", s); return 0; }
#include#include int main() { float a, x0, x1; printf("请输入一个正数: "); scanf("%f", &a); x0 = a / 2; x1 = (x0 + a / x0) / 2; do { x0 = x1; x1 = (x0 + a / x0) / 2; } while (fabs(x0 - x1) >= 1e-5); printf("[%f] 的平方根为 [%f]n", a, x1); return 0; }



