程序控制结构(if-else选择结构switch分支结构)

程序控制结构(if-else选择结构switch分支结构)

在这里插入图片描述

本题集都是具有分支选择结构得程序题目,典型得特点就是需要用if else或者是switch结构来控制程序结构,与前面学习不同,不在是全部代码都执行,而是根据条件决定执行哪句代码

奇偶数判断

题目描述

​ 给定一个整数,判断该数是奇数还是偶数。

输入格式

  • 输入仅一行,一个大于零的正整数n。

输出格式

  • 输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出even。

样例输入

5

样例输出

odd

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	cout << ((x % 2 == 0) ? "even" : "odd") << endl;
    return 0;
}

判断数正负

题目描述

​ 给定一个整数N,判断其正负。

输入格式

  • 一个整数N(-10^9 <= N <= 10^9)

输出格式

  • 如果N > 0, 输出positive;
    如果N = 0, 输出zero;
    如果N < 0, 输出negative。

样例输入

1

样例输出

positive

解:

#include<iostream>
using namespace std;

int main() {
    long long x;
	cin >> x;
	if (x == 0) {
		cout << "zero" << endl;
	} else if (x > 0) {
		cout << "positive" << endl;
	} else {
		cout << "negative" << endl;
	}
    return 0;
}

判断是否为两位数

题目描述

​ 判断一个正整数是否是两位数(即大于等于10且小于等于99)。

输入格式

  • 一个正整数,不超过1000。

输出格式

  • 一行。若该正整数是两位数,输出1,否则输出0。

样例输入

54

样例输出

1

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	cout << (x >= 10 && x < 99) << endl;
    return 0;
}

[编程入门]三个数字的排序

题目描述

​ 输入三个整数,按由小到大的顺序输出。

输入格式

  • 三个整数

输出格式

  • 由小到大输出成一行,每个数字后面跟一个空格

样例输入

2 3 1

样例输出

1 2 3

解:

#include<iostream>
using namespace std;

int main() {
    int a, b, c;
	cin >> a >> b >> c;
	int x[3] = { a, b, c };
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 2; j++) {
			if (x[j] > x[j + 1]) {
				int o = x[j];
				x[j] = x[j + 1];
				x[j + 1] = o;
			}
		}
	}
	cout << x[0] << ' ' << x[1] << ' ' << x[2] << endl;
    return 0;
}

适合晨练

题目描述

​ 输入温度t的值,判断是否适合晨练。(25≤t≤30,则适合晨练ok!,否则不适合no!)

输入格式

  • 输入温度t的值。

输出格式

  • 输出判断结果

样例输入

26

样例输出

ok!

解:

#include<iostream>
using namespace std;

int main() {
    float x;
	cin >> x;
	cout << ((x>=25 && x<=30) ? "ok!" : "no!") << endl;
    return 0;
}

收费

题目描述

​ 乘坐飞机时,当乘客行李小于等于20公斤时,按每公斤1.68元收费,大于20公斤时,按每公斤1.98元收费,编程计算收费(保留2位小数)。

输入格式

  • 行李重量。

输出格式

  • 费用(保留2位小数)。

样例输入

20.00

样例输出

33.60

解:

#include<iostream>
using namespace std;

int main() {
    float n;
	cin >> n;
	int x = (int)n + (n - (int)n > 0 ? 1 : 0);
	if (x <= 20) {
		printf("%.2f", (x * 1.68));
	} else {
		printf("%.2f", (x * 1.98));
	}
    return 0;
}

[编程入门]三个数最大值

题目描述

​ 编写一个程序,输入a、b、c三个值,输出其中最大值。

输入格式

  • 一行数组,分别为a b c

输出格式

  • a b c其中最大的数

样例输入

10 20 30

样例输出

30

解:

#include<iostream>
using namespace std;

int main() {
	int a, b, c;
	cin >> a >> b >> c;
	int x[3] = { a, b, c };
	int y = x[0];
	for (int i = 0; i < 3; i++) {
		if (y < x[i]) {
			y = x[i];
		}
	}
	cout << y << endl;
    return 0;
}

输出绝对值

题目描述

​ 输入一个浮点数,输出这个浮点数的绝对值。

输入格式

  • 输入一个浮点数,其绝对值不超过10000。

输出格式

  • 输出这个浮点数的绝对值,保留到小数点后两位。

样例输入

-3.14

样例输出

3.14

解:

#include<iostream>
using namespace std;

int main() {
    double x;
	cin >> x;
	printf("%.2f", (x < 0 ? -x : x));
    return 0;
}

奇偶ASCII值判断

题目描述

任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输出NO。

例如,字符A的ASCII值是65,则输出YES,若输入字符B(ASCII值是66),则输出NO。

输入格式

  • 输入一个字符。

输出格式

  • 如果其ASCII值为奇数,则输出YES,否则,输出NO。

样例输入

A

样例输出

YES

解:

#include<iostream>
#include <iomanip>
using namespace std;

int main() {
    int x = (int)cin.get();
	cout << (x % 2 == 0 ? "NO" : "YES") << endl;
    return 0;
}

整数大小比较

题目描述

​ 输入两个整数,比较它们的大小。

输入格式

  • 一行,包含两个整数x和y,中间用单个空格隔开。
    0 <= x < 2^32, -2^31 <= y < 2^31。

输出格式

  • 一个字符。
    若x > y,输出 > ;
    若x = y,输出 = ;
    若x < y,输出 < 。

样例输入

1000 100

样例输出

>

解:

#include<iostream>
using namespace std;

int main() {
    long long a, b;
	cin >> a >> b;
	cout << (a == b ? '=' : (a > b ? '>' : '<')) << endl;
    return 0;
}

收集瓶盖赢大奖

题目描述

​ 某饮料公司最近推出了一个“收集瓶盖赢大奖”的活动:如果你拥有10个印有“幸运”、或20个印有“鼓励”的瓶盖,就可以兑换一个神秘大奖。

现分别给出你拥有的印有“幸运”和“鼓励”的瓶盖数,判断是否可以去兑换大奖。

输入格式

  • 一行,包含两个整数,分别是印有“幸运”和“鼓励”的瓶盖数,用一个空格隔开。

输出格式

  • 一行。若可以兑换大奖,输出1,否则输出0。

样例输入

11 19

样例输出

1

解:

#include<iostream>
using namespace std;

int main() {
    int a, b;
	cin >> a >> b;
	cout << (a > 10 || b > 20) << endl;
    return 0;
}

判断一个数能否同时被3和5整除

题目描述

​ 判断一个数n能否同时被3和5整除。

输入格式

  • 输入一行,包含一个整数n。(-1,000,000 < n < 1,000,000)

输出格式

  • 输出一行,如果能同时被3和5整除输出YES,否则输出NO。

样例输入

15

样例输出

YES

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	cout << (x % 3 == 0 && x % 5 == 0 ? "YES" : "NO") << endl;
    return 0;
}

判断能否被3、5、7整除

题目描述

给定一个整数,判断它能否被3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符‘n’,不包括单引号。

输入格式

  • 输入一行,包括一个整数。

输出格式

  • 输出一行,按照描述要求给出整数被3,5,7整除的情况。

样例输入

105

样例输出

3 5 7

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	bool o = true;
	for (int i = 3; i <= 7; i += 2) {
		if (x%i == 0) {
			cout << i << ' ';
			o = false;
		}
	}
	if (o) {
		cout << 'n' << endl;
	}
    return 0;
}

有一门课不及格的学生

题目描述

​ 给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。

输入格式

  • 一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。

输出格式

  • 若该生恰好有一门课不及格,输出1;否则输出0。

样例输入

50 80

样例输出

1

解:

#include<iostream>
using namespace std;

int main() {
    int a, b;
	cin >> a >> b;
	bool i = a >= 60, o = b >= 60;
	cout << !(i == o) << endl;
    return 0;
}

星期判断机

题目描述

​ 刚学完switch语句,来试试身手吧!

输入一个数字06,输出对应的星期,比如输入0,输出Sunday,16分别是周一到周六

用英文输出哦!

如果不是0~6的数字,提示:input error!

输入格式

  • 一个数字

输出格式

  • 对应的星期

样例输入

6

样例输出

Saturday

解:

#include<iostream>
#include<string>
using namespace std;

int main() {
    int x; cin >> x;
	string y;
	switch (x){
		case 0: y = "Sunday";
			break;
		case 1: y = "Monday";
			break;
		case 2: y = "Tuesday";
			break;
		case 3: y = "Wednesday";
			break;
		case 4: y = "Thursday";
			break;
		case 5: y = "Friday";
			break;
		case 6: y = "Saturday";
			break;
		default: y = "input error!";
			break;
	}
	cout << y << endl;
    return 0;
}

模拟计算器

题目描述

​ 使用Switch语句编写一个模拟简单计算器的程序。依次输入两个整数和一个字符,并用空格隔开。如果该字 符是一个“+”,则打印和;如果该字符是一个“-”,则打印差;如果该字符是一个“*”,则打印积;如果该字符是“/”,则打印商;如果该字符是一个 “%”,则打印余数。打印结果后输出一个空行。

输入格式

  • 一行,前面两个数,再一个运算符号。

输出格式

  • 运算表达式的结果。

样例输入

3 4 +

样例输出

7

解:

#include<iostream>
using namespace std;

int main() {
    int a, b;
	char o;
	cin >> a >> b >> o;
	switch (o) {
		case '+': cout << a + b << endl;
			break;
		case '-': cout << a - b << endl;
			break;
		case '*': cout << a * b << endl;
			break;
		case '/': cout << a / b << endl;
			break;
		case '%': cout << a % b << endl;
			break;
	}
    return 0;
}

买笔

题目描述

​ 期末来临了,班长小Q决定将剩余班费x元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。

输入格式

  • 一个正整数x(剩余班费)。

输出格式

  • 一行,依次为6元、5元和4元钱笔的数目,用一个空格隔开。

样例输入

10

样例输出

1 0 1

解:

#include<iostream>
using namespace std;

int main() {
    float x1, x2, x3, y1, y2, y3;
	cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
	double a, b, c;
	a = pow(pow(x1 - x2, 2) + pow(y1 - y2, 2), 1.0 / 2);
	b = pow(pow(x2 - x3, 2) + pow(y2 - y3, 2), 1.0 / 2);
	c = pow(pow(x3 - x1, 2) + pow(y3 - y1, 2), 1.0 / 2);
	double d = (a + b + c) / 2;
    // 使用海伦公式
	double y = pow(d*(d - a)*(d - b)*(d - c), 1.0 / 2);
	printf("%.2f", y);  // C风格输出
    
	// cout << fixed << setprecision(2) << y << endl;  // C++风格输出
    return 0;
}

晶晶赴约会

题目描述

​ 晶晶的朋友贝贝约晶晶下周一起去看展览,但晶晶每周的1、3、5有课必须上课,请帮晶晶判断她能否接受贝贝的邀请,如果能输出YES;如果不能则输出NO。

输入格式

  • 输入有一行,贝贝邀请晶晶去看展览的日期,用数字1到7表示从星期一到星期日。

输出格式

  • 输出有一行,如果晶晶可以接受贝贝的邀请,输出YES,否则,输出NO。注意YES和NO都是大写字母!

样例输入

2

样例输出

YES

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	bool o = true;
	for (int i = 1; i <= 5; i += 2) {
		if (x == i) {
			o = false;
		}
	}
	cout << (o ? "YES" : "NO") << endl;
    return 0;
}

骑车与走路

题目描述

​ 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。

输入格式

  • 输入一行,包含一个整数,表示一次办事要行走的距离,单位为米。

输出格式

  • 输出一行,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All"。

样例输入

120

样例输出

Bike

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	float a = 27 + 23 + x * 3.0;
	float b = x * 1.2;
	cout << (a == b ? "All" : a > b ? "Bike" : "Walk") << endl;
    return 0;
}

分段函数

题目描述

​ 编写程序,计算下列分段函数y=f(x)的值。

y=-x+2.5; 0 <= x < 5

y=2-1.5(x-3)(x-3); 5 <= x < 10

y=x/2-1.5; 10 <= x < 20

输入格式

  • 一个浮点数N,0 <= N < 20

输出格式

  • 输出N对应的分段函数值:f(N)。结果保留到小数点后三位。

样例输入

1.0

样例输出

1.500

解:

#include<iostream>
using namespace std;

int main() {
    float x;
	cin >> x;
	if (x < 5) {
		printf("%.3f", (-x + 2.5));
	} else if (x < 10) {
		printf("%.3f", (2 - 1.5 * (x - 3) * (x - 3)));
	} else {
		printf("%.3f", (x / 2 - 1.5));
	}
    return 0;
}

计算邮资

题目描述

​ 根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在1000克以内(包括1000克), 基本费8元。超过1000克的部分,每500克加收超重费4元,不足500克部分按500克计算;如果用户选择加急,多收5元。

输入格式

  • 输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

输出格式

  • 输出一行,包含一个整数,表示邮费。

样例输入

1200 y

样例输出

17

解:

#include<iostream>
using namespace std;

int main() {
    int x, y = 8;
	char o;
	cin >> x >> o;
	x -= 1000;
	if (x > 0) {
		int i = x / 500 + (x % 500 == 0 ? 0 : 1);
		y += i * 4;
	}
	if (o == 'y') {
		y += 5;
	}
	cout << y << endl;
    return 0;
}

三角形判断

题目描述

​ 给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。

输入格式

  • 输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。

输出格式

  • 如果能构成三角形,则输出“yes” ,否则输出“no”。

样例输入

3 4 5

样例输出

yes

解:

#include<iostream>
using namespace std;

int main() {
    int x[3];
	cin >> x[0] >> x[1] >> x[2];
	int o = 0;
	for (int i = 0; i <= 3; i++) {
		if (x[o] < x[i]) {
			o = i;
		}
	}
	bool y = x[o] < x[0] + x[1] + x[2] - x[o];
	cout << (y ? "yes" : "no") << endl;
    return 0;
}

判断闰年

题目描述

​ 判断某年是否是闰年。如果公元a年是闰年输出Y,否则输出N。

输入格式

  • 输入只有一行,包含一个整数a(0 < a < 3000)。

输出格式

  • 一行,如果公元a年是闰年输出Y,否则输出N。

样例输入

2006

样例输出

N

解:

#include<iostream>
using namespace std;

int main() {
    int x;
	cin >> x;
	bool y = (x % 4 == 0 && x % 100 != 0) || x % 400 == 0;
	cout << (y ? 'Y' : 'N') << endl;
    return 0;
}

点和正方形的关系

题目描述

​ 有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

输入格式

  • 输入一行,包括两个整数x、y,以一个空格分开,表示坐标(x,y)。

输出格式

  • 输出一行,如果点在正方形内,则输出yes,否则输出no。

样例输入

1 1

样例输出

yes

解:

#include<iostream>
using namespace std;

int main() {
    int x[2];
	cin >> x[0] >> x[1];
	bool y = x[0] <= 1 && x[0] >= -1 && x[1] <= 1 && x[1] >= -1;
	cout << (y ? "yes" : "no") << endl;
    return 0;
}

C语言考试练习题_一元二次方程

题目描述

​ 解一元二次方程ax^2+bx+c=0的解。

输入格式

  • a,b,c的值。

输出格式

  • 输出两个解,按照大小顺序输出,一个解时需要打印两次,不用考虑无解问题,保留两位小数

样例输入

1 5 -2

样例输出

0.37 -5.37

解:

#include<iostream>
#include<cmath>
using namespace std;

int main() {
    float a, b, c, x1, x2, discriminant;
	cin >> a >> b >> c;
	discriminant = b * b - 4 * a * c;
	x1 = (-b + sqrt(discriminant)) / (2 * a);  // sqrt()是cmath头文件中的开方函数
	x2 = (-b - sqrt(discriminant)) / (2 * a);  // Visual Studio 2017中已经默认导入
	if (x1 < x2) {
		float o = x1;
		x1 = x2, x2 = o;
	}
	printf("%.2f %.2f", x1, x2);
    return 0;
}
  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值