最近要复习一下C和C++的基础知识,于是计划把之前学过的谭浩强的《C程序设计》和《C++程序设计》习题重新做一遍。
编译环境为:操作系统32位Win7,编译工具VC++6.0
第五章:选择结构程序设计
5.3)写出下列逻辑表达式的值
#include<stdio.h>
void main()
{
auto x, y;
int a = 3, b = 4, c = 5;
printf("%d\n", a + b > c && b == c);
printf("%d\n", a || b + c && b - c);
printf("%d\n", !(a > b) && !c || 1);
printf("%d\n", !(x = a) && (y = b) || 0);
printf("%d\n", !(a + b) + c - 1 && b + c / 2);
}

5.4)输入三个数,输出其中最大值
#include<stdio.h>
void main()
{
int a, b, c, max;
printf("Please enter a b and c: ");
scanf("%d%d%d", &a, &b, &c);
max = a > b ? a : b;
max = max > c ? max : c;
printf("max: %d\n", max);
}
5.5)求分段函数值:
y=x (x<1);
y=2x-1(1<=x<10);
y=3x-11(x>=10)
输入x值,输出y值
#include<stdio.h>
double f(double x)
{
if(x < 1)
{
return x;
}
else if(x < 10)
{
return 2 * x - 1;
}
else
{
return 3 * x - 11;
}
}
void main()
{
double x;
scanf("%lf", &x);
printf("%f\n", f(x));
}
5.6)根据得分输出成绩
90分以上为A,80-90为B,70-80为C,60-70为D,60以下为E
#include<stdio.h>
void main()
{
int score;
char level;
scanf("%d", &score);
if(score >= 90) level = 'A';
else if (score >= 80) level = 'B';
else if (score >= 70) level = 'C';
else if (score >= 60) level = 'D';
else level = 'E';
printf("Level: %c\n", level);
}
5.7)给出一个不多于5位的正整数,要求
①求出它是几位数
②分别输出每一位数字
③按逆序输出各位数字
#include<stdio.h>
void main()
{
int num;
scanf("%d", &num);
//判断输入数字的位数
int n1, n2, n3, n4, n5;
n1 = num / 10000;
n2 = num % 10000 / 1000;
n3 = num % 1000 / 100;
n4 = num % 100 / 10;
n5 = num % 10;
if(n1 == 0 && n2 == 0 && n3 == 0 && n4 == 0)
{
printf("1位数\n");
}
else if(n1 == 0 && n2 == 0 && n3 == 0)
{
printf("2位数\n");
}
else if(n1 == 0 && n2 == 0)
{
printf("3位数\n");
}
else if(n1 == 0)
{
printf("4位数\n");
}
else
{
printf("5位数\n");
}
//分别输出每一位数字
printf("万位:%d\n", n1);
printf("千位:%d\n", n2);
printf("百位:%d\n", n3);
printf("十位:%d\n", n4);
printf("个位:%d\n", n5);
//逆序输出各位数字
printf("逆序输出:%d%d%d%d%d\n", n5, n4, n3, n2, n1);
}
5.8)给出利润计算奖金
if语句实现
#include<stdio.h>
void main()
{
double money, bonus;
scanf("%lf", &money);
printf("输入金额:%lf\n", money);
//根据利润计算奖金
if(money <= 100000)
{
bonus = money * .1;
}
else if(money <= 200000)
{
bonus = 100000 * .1 + (money - 100000) * .075;
}
else if(money <= 400000)
{
bonus = 100000 * .175 + (money - 200000) * .05;
}
else if(money <= 600000)
{
bonus = 100000 * .175 + 200000 * .05 +
(money - 400000) * .03;
}
else if(money <= 1000000)
{
bonus = 100000 * .175 + 200000 * .05 +
200000 * .03 + (money - 600000) * .03;
}
else
{
bonus = 100000 * .175 + 200000 * .05 +
200000 * .03 + 40000 * .015 +
(money - 1000000) * .01;
}
printf("应得奖金: %.3lf\n", bonus);
}
switch语句实现
#include<stdio.h>
void main()
{
double money, bonus;
scanf("%lf", &money);
printf("输入金额:%lf\n", money);
//根据利润计算奖金
char level;
if(money <= 100000)
{
level = 'A';
}
else if(money <= 200000)
{
level = 'B';
}
else if(money <= 400000)
{
level = 'C';
}
else if(money <= 600000)
{
level = 'D';
}
else if(money <= 1000000)
{
level = 'E';
}
else
{
level = 'F';
}
switch(level)
{
case 'A':
{
bonus = money * .1;
}
break;
case 'B':
{
bonus = 100000 * .1 + (money - 100000) * .075;
}
break;
case 'C':
{
bonus = 100000 * .175 + (money - 200000) * .05;
}
break;
case 'D':
{
bonus = 100000 * .175 + 200000 * .05 +
(money - 400000) * .03;
}
break;
case 'E':
{
bonus = 100000 * .175 + 200000 * .05 +
200000 * .03 + (money - 600000) * .03;
}
break;
case 'F':
{
bonus = 100000 * .175 + 200000 * .05 +
200000 * .03 + 40000 * .015 + (money - 1000000) * .01;
}
break;
}
printf("应得奖金: %.3lf\n", bonus);
}
5.9)输入四个整数,要求按由小到大顺序输出
使用if语句实现的代码
#include<stdio.h>
void main()
{
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
//abcd
if(a >= b && b >= c && c >= d)
{
printf("%d %d %d %d\n", c, b, d, a);
}
//abdc
else if(a >= b && b >= d && d >= c)
{
printf("%d %d %d %d\n", c, d, b, a);
}
//acbd
else if(a >= c && c >= b && b >= d)
{
printf("%d %d %d %d\n", d, b, c, a);
}
//acdb
else if(a >= c && c >= d && d >= b)
{
printf("%d %d %d %d\n", b, d, c, a);
}
//adbc
else if(a >= d && d >= b && b >= c)
{
printf("%d %d %d %d\n", c, b, d, a);
}
//adcb
else if(a >= d && d >= c && c >= b)
{
printf("%d %d %d %d\n", b, c, d, a);
}
//bacd
else if(b >= a && a >= c && c >= d)
{
printf("%d %d %d %d\n", d, c, a, b);
}
//badc
else if(b >= a && a >= d && d >= c)
{
printf("%d %d %d %d\n", c, d, a, b);
}
//bcad
else if(b >= c && c >= a && d >= d)
{
printf("%d %d %d %d\n", d, a, c, b);
}
//bcda
else if(b >= c && c >= d && d >= a)
{
printf("%d %d %d %d\n", a, d, c, b);
}
//bdac
else if(b >= d && d >= a && a >= c)
{
printf("%d %d %d %d\n", c, a, d, b);
}
//bdca
else if(b >= d && d >= c && c >= a)
{
printf("%d %d %d %d\n", a, c, d, b);
}
//cabd
else if(c >= a && a >= b && b >= d)
{
printf("%d %d %d %d\n", d, b, a, c);
}
//cadb
else if(c >= a && a >= d && d >= b)
{
printf("%d %d %d %d\n", b, d, a, c);
}
//cbad
else if(c >= b && b >= a && a >= d)
{
printf("%d %d %d %d\n", d, a, b, c);
}
//cbda
else if(c >= b && b >= d && d >= a)
{
printf("%d %d %d %d\n", a, d, b, c);
}
//cdab
else if(c >= d && d >= a && a >= b)
{
printf("%d %d %d %d\n", b, a, d, c);
}
//cdba
else if(c >= d && d >= b && b >= a)
{
printf("%d %d %d %d\n", a, b, d, c);
}
//dabc
else if(d >= a && a >= b && b >= c)
{
printf("%d %d %d %d\n", c, b, a, d);
}
//dacb
else if(d >= a && a >= c && c >= b)
{
printf("%d %d %d %d\n", b, c, a, d);
}
//dbac
else if(d >= b && b >= a && a >= c)
{
printf("%d %d %d %d\n", c, a, b, d);
}
//dbca
else if(d >= b && b >= c && c >= a)
{
printf("%d %d %d %d\n", a, c, b, d);
}
//dcab
else if(d >= c && c >= a && a >= b)
{
printf("%d %d %d %d\n", b, a, c, d);
}
//dcba
else if(d >= c && c >= b && b >= a)
{
printf("%d %d %d %d\n", a, b, c, d);
}
}
5.10)有四个圆塔,圆心分别为 (2,2),(-2,2),(-2,-2),(2,-2) ,圆半径为1,这4个塔高度为10米,塔外无建筑物(高度为0米)。现输入任一点坐标,输出对应高度。
#include<stdio.h>
void main()
{
float a, b;
scanf("%f%f", &a, &b);
//只考虑第一象限情况
if(a < 0) a = -a;
if(b < 0) b = -b;
//将坐标平移到原点与圆心重合
a -= 2;
b -= 2;
if(a * a + b * b <= 1)
{
printf("10\n");
}
else
{
printf("0\n");
}
}
END
本文档提供了C和C++编程语言基础练习题的详细解答,包括逻辑表达式评估、寻找最大值、分段函数计算等。通过具体示例帮助读者理解选择结构程序设计的概念。

被折叠的 条评论
为什么被折叠?



