《C++程序设计实验3》

  1. 【描述】
    晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES;如果不能则输出NO。
    【输入】
    输入贝贝邀请晶晶去看展览的日期,用数字1到7表示从星期一到星期日。
    【输出】
    如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。注意YES和NO都大写!
    【输入示例】
    2
    【输出示例】
    YES
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	int n;
    	cin >> n;
    	switch (n) {
    		case 2:
    		case 4:
    		case 6:
    		case 7:
    			cout << "YES" << endl;
    			break;
    		case 1:
    		case 3:
    		case 5:
    			cout << "NO" << endl;
    			break;
    		default:
    			cout << "非法输入\n";
    	}
    	return 0;
    }
  2. 【描述】
    输入a、b和c,若它们能构成三角形,则输出三角形周长,否则输出“Invalid”。
    【输入】
    输入a、b和c。
    【输出】
    输出三角形周长或“Invalid”。
    【输入示例1】
    1 2 3
    【输出示例1】
    Invalid
    【输入示例2】
    3 3 3
    【输出示例2】
    9
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	double a,b,c,C;
    	cin >> a>>b>>c;
        if(a+b>c && a+c>b && b+c>a)
           cout<<a+b+c<<endl;
        else
           cout<<"Invalid"<<endl;
    	return 0;
    }
  3. 【描述】
    你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
    【输入】
    输入n,x和y(均为整数),以整数间隔。
    【输出】
    输出完整的苹果数(整数)。
    【输入示例】
    10 4 9
    【输出示例】
    7
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	int n,x,y,p;
    	cin>>n>>x>>y;
        p=ceil(y*1.0/x);
        if(p>=n)
            cout<<"0"<<endl;
        else
            cout<<n-p<<endl;
        //cout<<n-ceil(y*1.0/x)<<endl;
    	return 0;
    }
  4. 【描述】
    编写程序,将输入的任意3个整数从小到大输出,其间以"->"相连。
    【输入】
    一行中输入三个整数,其间以空格间隔。
    【输出】
    一行中将三个整数从小到大输出,其间以"->"相连。
    【输入示例】
    4 2 8
    【输出示例】
    2->4->8
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    void swap(int *x, int *y) {
    	int temp;
    	temp = *y;
    	*y = *x;
    	*x = temp;
    }
    
    int main() {
    	int a, b, c;
    	cin >> a >> b >> c;
    	if (a > b)
    		swap(a, b);
    	if (b > c)
    		swap(b, c);
    	if (a > b)
    		swap(a, b);
    	cout << a << "->" << b << "->" << c << endl;
    
    	return 0;
    }
  5. 【描述】
    某电网执行“阶梯电价”,居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。结果保留2位小数。
    【输入】
    一行中输入用电量。
    【输出】
    一行中输出电费。
    【输入示例】

    100
    【输出示例】
    cost = 55.50
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	double n, cost;
    	cin >> n;
    	if (n <= 50)
    		cost = n * 0.53;
    	else
    		cost = 50 * 0.53 + (n - 50) * (0.53 + 0.05);
    	cout << "cost = " << fixed << setprecision(2) << cost << endl;
    	return 0;
    }
  6. 【描述】
    输入一个整数,输出分段函数的值。分段函数的数学定义如下:

    【输入】
    输入一个整数。
    【输出】
    输出分段函数的值。
    【输入示例】
    100
    【输出示例】
    10005
     

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	int x, fx;
    	cin >> x;
    	if (x < 0)
    		fx = x + 1;
    	else if (x >= 0 && x < 100)
    		fx = x * x * x;
    	else if (x >= 100)
    		fx = x * x + 5;
    	cout << fx << endl;
    	return 0;
    }
  7. 【描述】
    某校学生成绩的绩点计算方法如下(百分制折合为绩点):
    (A)90~100分,折合4.0~5.0绩点。
    (B)80~89分,折合3.0~3.9绩点。
    (C)70~79分,折合2.0~2.9绩点。
    (D)60~69分,折合1.0~1.9绩点。
    (E)59分及其以下为不及格。
    【输入】
    输入一个整数表示学生的成绩(0~100)。
    【输出】
    如果输入的学生成绩不合法,则输出“Invalid”。
    如果输入的学生成绩为不及格,则输出“Failed”。
    否则,输出成绩对应的绩点,结果保留一位小数。
    【输入示例】
    74
    【输出示例】
    2.4
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	int n;
    	double grade;
    	cin >> n;
    	if (n >= 60 && n <= 100) {
    		grade = (n - 50) / 10.0;
    		cout << fixed << setprecision(1) << grade << endl;
    	} else if (n > 0 && n < 60)
    		cout << "Failed" << endl;
    	else
    		cout << "Invalid" << endl;
    
    	return 0;
    }
  8. 【描述】
    编写程序,输入三角形三条边a、b和c(假设为实数),判断它们能否构成三角形。若不能构成三角形,则输出“Don't make a triangle”;若能构成三角形,进一步判断是何种三角形(等边三角形、等腰三角形、直角三角形、等腰直角三角形还是一般三角形等),并输出相应的信息(Equilateral triangle、Isosceles triangle、Right triangle、Isosceles Right triangle、General triangle)。
    【输入】
    三角形三条边a、b和c,以空格间隔。
    【输出】
    若不能构成三角形,输出“Don't make a triangle”。否则输出相应的三角形类型信息。
    【输入示例1】
    1 2 3
    【输出示例1】
    Don't make a triangle
    【输入示例2】
    4 2 5
    【输出示例2】
    General triangle
    【提示】
    可以利用勾股定理逆定理判断直角三角形。
    应该避免直接对浮点数进行相等(==)比较,因为浮点数的误差可能造成两个本来应该相等的浮点数不相等。

    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	double a, b, c;
    	const double EPSILON = 0.0000001;
    	cin >> a >> b >> c;
    	if (a + b > c && a + c > b && b + c > a) {
    		if (fabs(a - b) <= EPSILON && fabs(a - c) <= EPSILON && fabs(b - c) <= EPSILON) {
    			cout << "Equilateral triangle" << endl;
    		} else if (fabs(a - b) <= EPSILON || fabs(a - c) <= EPSILON || fabs(b - c) <= EPSILON) {
    			if (fabs(a - b) <= EPSILON || fabs(a - c) <= EPSILON || fabs(b - c) <= EPSILON) {
    				cout << "lsosceles Right triangle" << endl;
    			} else
    				cout << "lsosceles triangle" << endl;
    		} else if (fabs(a * a + b * b - c * c) <= EPSILON || fabs(a * a + c * c - b * b) <= EPSILON
    		           || fabs(c * c + b * b - a * a) <= EPSILON) {
    			cout << "Right triangle" << endl;
    		} else
    			cout << "General triangle" << endl;
    	} else
    		cout << "Don't make a triangle" << endl;
    
    	return 0;
    }
  9. 【描述】
    求一元二次方程

    的根,系数a、b、c为浮点数。
    【输入】
    输入a、b和c。
    【输出】
    若无穷解,则输出:Infinitely solution。
    若无解,则输出:No solution。
    若是一个实根,则输出格式为:x=…,数字、符号之间没有空格,结果保留2位小数。
    若两个实根相等,则输出格式为:x1=x2=...,数字、符号之间没有空格,结果保留2位小数。
    若是两个实根,则输出格式为:x1=...;x2=...,数字、符号之间没有空格,结果保留2位小数。
    若是虚根,则输出:Imaginary root。
    【输入示例】
    2.1 8.9 3.5
    【输出示例】
    x1=-0.44;x2=-3.80
    【提示】
    可以使用数学库中的sqrt函数和fabs函数。方程的根以及其它中间变量用double类型变量表示。
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	double a, b, c, x1, x2, pd;
    	cin >> a >> b >> c;
    	pd = b * b - 4 * a * c;
    	if (a == 0 && b == 0 && c == 0)
    		cout << "Infinitely solution" << endl;
    	if (a == 0 && b == 0 && c != 0)
    		cout << "No solution" << endl;
    	if (a == 0 && b != 0)
    		cout << "x=" << fixed << setprecision(2) << -c * 1.0 / b << endl;
    	if (a != 0 && pd == 0)
    		cout << "x1=x2=" << fixed << setprecision(2) << -b * 1.0 / (2 * a) << endl;
    	if (a != 0 && pd > 0)
    		cout << "x1=" << fixed << setprecision(2) << (-b + sqrt(pd)) * 1.0 / (2 * a) << ";x2=" << fixed << setprecision(2) <<
    		     (-b - sqrt(pd)) * 1.0 / (2 * a) << endl;
    	if (a != 0 && pd < 0)
    		cout << "Imaginary root" << endl;
    	return 0;
    }
  10. 【描述】
    输入学生的考试成绩(0~100),将学生的成绩划分等级并输出。学生的成绩可分为5个等级:90~100为A级,80~89为B级,70~79为C级,60~69为D级,0~59为E级。要求用switch语句。
    【输入】
    输入学生的考试成绩(0~100)。
    【输出】
    输出等级。
    【输入示例】
    91
    【输出示例】
    A
    【提示】
    假设学生的成绩为score,则score/10的一个值就代表了10种情况,例如score/10为7时,就代表成绩70~79的情况。
    (10分)

    我的答案:

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
    
    int main() {
    	int score;
    	cin >> score;
        switch(score/10){
            case 10:
            case 9:
                cout<<"A"<<endl;
                break;
            case 8:
                cout<<"B"<<endl;
                break;
            case 7:
                cout<<"C"<<endl;
                break;
            case 6:
                cout<<"D"<<endl;
                break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
                cout<<"E"<<endl;
                break;
            default:
                cout<<"非法输入"<<endl;
                break;
    
        }
    
    	return 0;
    }
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值