1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【勇士总冠军】

【勇士总冠军】

时间:2022-05-22 14:11:06

相关推荐

【勇士总冠军】

1.【描述】

求一个正整数各位数字之和。要求定义和调用函数:int sumDigits(int n),该函数返回一个正整数各位数字之和。

【输入】

输入一个正整数。

【输出】

输出该正整数各位数字之和。

【输入示例】

3456

【输出示例】

18

#include <bits/stdc++.h>using namespace std;int sumDigits(int n);int main() {int n;cin >> n;cout << sumDigits(n) << endl;return 0;}int sumDigits(int n) {int remainder, result = 0;while (n != 0) {remainder = n % 10;result += remainder;n = n / 10;}return result;}

2.【描述】

输入整数n(0<=n<=100000),以及整数i,j(0<=i、j<31,且i不等于j),输出整数k,要求:

①k的第i位和n相同;

②第j位和n不同;

③其他位都是0。

这里提到的位,指的是将n表示成二进制数后的位,最低位(最右边)是第0位

【输入】

第一行是整数t,表示数据组数。

每组输入数据一行,包含三个整数n,i和j。

【输出】

对每组输入数据,输出一行:符合题目要求的整数k。

【样例输入】

2

23 4 3

3 0 1

【样例输出】

24

1

//方法一#include <iostream>#include <cmath>using namespace std;int main() {int t, n, i, j, N;cin >> t;while (t--) {int k = 0, e = 0;cin >> n >> i >> j;N = n;for (int p = 0; p <= i; p++) {e = N % 2;N = N / 2;}k += e * pow(2, i);N = n;for (int p = 0; p <= j; p++) {e = N % 2;N = N / 2;}k += (1 - e) * pow(2, j);cout << k << endl;}return 0;}//方法二#include <iostream>using namespace std;int main() {int t;cin >> t;while (t-- ) {int n, i, j;cin >> n >> i >> j;// 第j位和n不同int m = ( 1 << j ) ^ n;// 第i位和n相同int k = ((1 << i) & n) | ((1 << j) & m);cout << k << endl;}return 0;}

3.【描述】

输入若干学生信息,把他们的名字按成绩从低到高排序输出。

【输入】

第一行是整数 t,表示数据组数。

每组输入数据第一行是整数n,表示学生的数量。

接下来n行,每行是一个学生的信息。学生信息分为两部分,先是姓名,姓名由字母组成,没有空格。然后是个整数,表示分数。姓名和分数之间用一个空格隔开。

所有学生分数都不相同。姓名长度不超过100字符,分数范围从0到100。

【输出】

对每组输入数据,按分数从低到高输出学生姓名,每个姓名占一行。每组数据的最后输出一行“**"。

【样例输入】

2

3

Tom 27

Jack 32

Jone 18

2

Will 91

Jane 97

【样例输出】

Jone

Tom

Jack

Will

Jane

****

#include <bits/stdc++.h>using namespace std;typedef struct student {string name;int score;};bool cmp(student a, student b) {return a.score < b.score;}int main() {int t, n;cin >> t;while (t--) {cin >> n;student array[n];for (int i = 0; i < n; i++) {cin >> array[i].name >> array[i].score;}sort(array, array + n, cmp);for (int i = 0; i < n; i++) {cout << array[i].name << endl;}if (t != 0)cout << endl;elsecout << "****" << endl;}return 0;}

4.【描述】

某个科室的病房分为重症和普通,只有当病人的疾病严重程度超过了入住重症病房的最低严重值,才可以安排入住重症病房。

现在要求设计一个程序,给病人安排好病房。疾病的严重程度用0到10来表示,0表示小毛病,10表示非常严重。

【输入】

第一行输入病人的个数m(m < 50),以及安排住入重症病房的最低严重值a。

紧接着m行,每行表示病人编号(三位,用0补齐)及其疾病的严重程度(浮点数,1位小数)。

【输出】

每个病人的疾病严重程度都不一样。输出要求按照病人的严重程度输出住在重症病房里的病人的编号。

【注意】

如果当前所有病人的严重程度并不满足住在重症病房里,则输出“None.”。

【输入示例】

10 7.55

006 6.5

005 8.0

004 3.5

009 8.5

011 7.0

043 9.5

003 5.0

103 6.0

112 4.0

118 9.0

【输出示例】

043 9.5

118 9.0

009 8.5

005 8.0

【提示】

可以定义如下结构类型:

struct Person {

int no; // 病人的编号

double num; // 病人病情严重程度

};

//代码一#include <iostream>#include <iomanip>using namespace std;int main() {struct Person {int no;double num;};struct Person p[51];int m, i, j;float a;cin >> m >> a;for (i = 0; i < m; i++) {cin >> p[i].no >> p[i].num;}for (j = 1; j < m; j++) {for (i = 0; i < j; i++) {if (p[i].num < p[j].num) {struct Person temp = p[i];p[i] = p[j];p[j] = temp;}}}bool judge = false;for (i = 0; i < m; i++) {if (p[i].num > a) {cout << setw(3) << setfill('0') << p[i].no << " ";cout << fixed << setprecision(1) << p[i].num << endl;judge = true;}}if (!judge)cout << "None." << endl;return 0;}//代码二#include <iostream>#include <iomanip>using namespace std;struct Person {int no; // 病人的编号double num; // 病人病情严重程度};int main() {Person p[55]; // 表示重症病人的结构数组int m; // m个病人double a; // 入住重症病房的最低严重值int n; // 临时变量,表示当前输入的病人的编号double t; // 临时变量,表示当前输入的病人的严重值int len = 0; // 表示当前已经遇到的重症病人的人数Person temp;cin >> m >> a;for (int i = 0; i < m; ++i) { // 读入m个人的信息并确定是否重症病人cin >> n >> t; // 读入病人的编号和严重值if (t > a) {p[len].no = n;p[len].num = t;len++;}}if (len == 0) { // 假如没有重症病人cout << "None." << endl;return 0;}int flag;for (int i = 1; i < len; ++i) { // 对重症病人按严重值排序 ,冒泡算法flag = 1;for (int j = 0; j < len - i; ++j) {if (p[j].num < p[j + 1].num) {flag = 0;temp = p[j];p[j] = p[j + 1];p[j + 1] = temp;}}if (flag)break;}for (int i = 0; i < len; ++i) // 按重症病人的严重值由大到小输出他们的信息。cout << setw(3) << setfill( '0') << p[i].no << " "<< fixed << setprecision(1) << p[i].num << endl;return 0;}

5.【描述】

对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自整除数。例如21,21%(2+1)=0,所以21是自整除数。现求出从10到n(n<100)之间的所有自整除数。

【输入】

输入一个整数n(10≤n<100)。

【输出】

按从小到大的顺序输出所有大于等于10、小于等于n的自整除数,每行一个自整除数。

【输入示例】

47

【输出示例】

10

12

18

20

21

24

27

30

36

40

42

45

#include <iostream>using namespace std;int main() {int n;cin >> n;for (int i = 10; i <= n; i++) {int temp = i;int sum = 0;while (temp != 0) {sum += temp % 10;temp /= 10;}if (i % sum == 0)cout << i << endl;}return 0;}

6.

【描述】

将输入的学生信息输出。

【输入】

第一行是整数t,表明数据组数。

在每组数据中:

第一行先是整数n(n<100),表示有n个学生。

接下来有n行,每行表示一个学生。先是一个无空格的字符串,表示姓名,然后是一个非负整数,表示学号。中间用单个空格隔开。

姓名长度不超过100字符,学号小于1000。

【输出】

按照输入的顺序,输出每个学生的信息。先输出学号,再输出姓名,中间用单个空格隔开。

一组数据处理完后,要输出一行 “****”。

【样例输入】

2

3

Tom 12

Jack 20

Marry 89

2

Jade 78

White 76

【样例输出】

12 Tom

20 Jack

89 Marry

****

78 Jade

76 White

****

#include <bits/stdc++.h>using namespace std;class Student {private:string name;int num;public:void Read() {cin >> name >> num;}void Print() {cout << num << " " << name << endl;}Student() { }Student(string s, int n): name(s), num(n) { }};int main() {int t;cin >> t;Student s("Tom", 12);while (t--) {int n;cin >> n;Student st;for (int i = 0; i < n; ++i) {st.Read();st.Print();}cout << "****" << endl;}return 0;}

7.

【描述】

小明是一个熊孩子,他很想知道某一个日期是星期几。他知道你正在学习C++,所以想请你写一个程序,实现一个Date类。Date类的定义如下:

class Date {

public:

Date(int year, int month, int day);

int getWeekday() const;

private:

int year;

int month;

int day;

};

成员变量year、month、day分别代表年月日。现在你要实现Date函数和getWeekday函数,并编写main函数。getWeekday函数,如果日期合法,返回1~7中某个数值,表示星期一到星期天中某一天(其中1为星期一),如果日期不合法,则返回-1。

【输入】

输入包含多组数据。每行包括三个整数year(2000≤y≤9999)、month、day。输入数据以0 0 0结束。

【输出】

每组数据输出一行,每行包括一个整数。1表示星期一,7表示星期日,等等,若数据非法,则输出-1。

0 0 0不需输出

【输入示例】

2 26

2 29

0 0 0

【输出示例】

2

-1

【提示】2000年1月1日是星期六。

求星期几:(6 + 2000年1月1日至输入日期的天数 - 1)% 7 + 1

#include <iostream>using namespace std;class Date {public:Date(int year, int month, int day);int getWeekday() const;private:int year;int month;int day;};bool isLeapYear(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);}Date::Date(int year, int month, int day) {this->year = year;this->month = month;this->day = day;}int Date::getWeekday() const {const int DAYS_PER_MONTH[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (year < 2000 || year > 9999)return -1;if (month < 1 || month > 12)return -1;if (day < 1 || day > DAYS_PER_MONTH[month])return -1;int sum = 0;// 处理年for (int i = 2000; i < year; ++i) {if (isLeapYear(i))sum += 366;elsesum += 365;}// 处理月for (int i = 1; i < month; ++i)sum += DAYS_PER_MONTH[i];if (isLeapYear(year))if (month > 2 || month == 2)sum += 1;// 处理日sum += day - 1; return (6 + sum - 1) % 7 + 1;}int main() {int year, month, day;while(cin >> year >> month >> day) {if(year == 0 && month == 0 && day == 0)break;Date d(year, month, day);cout << d.getWeekday() << endl;}return 0;}

8.【描述】

有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。

【输入】

输入包括若干行,每一行为一组测试数据,格式为

str substr

【输出】

对于每一组测试数据,输出插入之后的字符串。

【输入示例】

abcab eee

12343 555

【输出示例】

abceeeab

12345553

#include <bits/stdc++.h>using namespace std;int main() {string str, substr;// 处理多组数据while (cin >> str) {cin >> substr;// 用len遍历str,获得长度、最大ASCII字符及其下标int len = 0;char maxChar = 0;int maxIdx = 0;// 遍历数组,并获得相关信息len = str.length();for (int i = 0; i < len; ++i) {if (str[i] > maxChar) {maxChar = str[i];maxIdx = i;}}str.insert(maxIdx + 1, substr);cout << str << endl;}return 0;}

9.【描述】

下面是一个图书的单价表:

《计算概论》28.9元/本、《数据结构与算法》32.7元/本、《数字逻辑》45.6元/本、《C++程序设计教程》78元/本、《人工智能》35元/本、《计算机体系结构》86.2元/本、《编译原理》27.8元/本、《操作系统》43元/本、《计算机网络》56元/本、《Java程序设计》65元/本。

给定每种图书购买的数量,计算应付的总费用。

【输入】

第一行包含一个正整数n(0 < n <100),表示有n组测试数据;接下来n行,每行包含一组测试数据。每组测试数据包含10个整数(大于等于0、小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《Java程序设计》的数量(以本为单位),整数以用空格间隔。

【输出】

对于每组测试数据,输出一行,表示应付的总费用,结果保留2位小数。

【输入示例】

2

1 5 8 10 5 1 1 2 3 4

3 5 6 3 100 1 1 0 1 0

【输出示例】

2140.20

4427.80

#include <bits/stdc++.h>using namespace std;int main() {double prices[10] = {28.9, 32.7, 45.6, 78, 35, 86.2, 27.8, 43, 56, 65};int n;cin >> n;for (int i = 0; i < n; ++i) {double sum = 0, count;for (int i = 0; i < 10; ++i) {cin >> count;sum += count * prices[i];}cout << fixed << setprecision(2) << sum << endl;}return 0;}

10.【描述】

用手机发短信,一般一条短信资费为0.1元,但限定每条短信的内容在70个字以内(包括70个字)。如果你所发送的一条短信超过了70个字,则大多数手机会按照每70个字一条短信的限制把它分割成多条短信发送。假设已经知道你当月所发送的每条短信的字数,试统计一下你当月短信的总资费。

【输入】

第一行是整数n,表示当月短信总条数,其余n行每行一个整数,表示各条短信的字数。

【输出】

当月短信总资费,单位为元,结果保留1位小数。

【输入示例】

10

39

49

42

61

44

147

42

72

35

46

【输出示例】

1.3

#include <bits/stdc++.h>using namespace std;int main() {int n;cin >> n;double sum = 0;for (int i = 0; i < n; ++i) {int word;cin >> word;if (word <= 70)sum += 0.1;elsesum += ceil(1.0 * word / 70) * 0.1;}cout << fixed << setprecision(1) << sum << endl;return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。