推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

全国青少年软件编程(C语言)等级考试试卷(二级真题​) 第1部分

   2023-08-03 网络整理佚名1050
核心提示:全国青少年软件编程(C语言)等级考试试卷(二级真题)第1部分一、编程题(第1部分)(共2题)下面是一个图书的单价表:给定每种图书购买的数量,编程计算应付的总费用。这个是一维数组的基础问题,考察学员对编程基础知识的灵活运用。当然上面的程序还可以做进一步的优化,优化点是:不用储存每本书的数量到数组,而在输入每本书数量的同时完成计算。

全国青少年软件编程(C语言)考试试卷

(2级真题)第1部分

2019年12月

1. 编程题(第1部分)(共2题)

计算书费

【描述】

以下是一本书的单价表:

计算概论28.9元/册

数据结构与算法32.7元/册

数字逻辑45.6元/本

C++编程教程78元/本

人工智能35元/本

计算机体系结构 86.2元/册

编译原理27.8元/本

操作系统43元/本

计算机网络56元/册

JAVA编程65元/册

给定购买的每本书的数量,编程计算应付的总费用。

【进入】

输入一行包含10个整数(大于等于0、小于等于100),分别代表购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++编程课程》、 《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA编程》(本单元)的数量。 每两个整数之间用空格分隔。

【输出】

输出一行,其中包含代表应付总费用的浮点数 f。 精确到小数点后一位。

【样本输入】

1 5 8 10 5 1 1 2 3 4

【输出样例】

2140.2

【参考AC方案】

 1#include 
2using namespace std;
3
4
10int main()
11
{
12    // v数组中下标1到10的元素分别表示10本书的价格
13    double v[20] = {0,28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};
14    // n数组用来储存每本书的数量, sum表示总价
15    double n[20], sum = 0;
16    // 输入书的数量
17    for (int i = 1; i <= 10; i++)
18    {
19        cin >> n[i];
20    }
21    // 计算总价
22    for (int i = 1; i <= 10; i++)
23    {
24        // n[i]是数量 v[i]是单价
25        sum += n[i] * v[i];
26    }
27    cout << fixed<< setprecision(1) <28    return 0;
29}

【大头老师说】

这是一维数组的基本题,考察学生对基础编程知识的灵活运用。

当然,上述程序还可以进一步优化。 优化点是:不再将每本书的数量存储在数组中,而是在输入每本书的数量的同时完成计算。 参与程序如下:

 1#include 
2using namespace std;
3
4
5
11int main()
12
{
13    // v数组中下标1到10的元素分别表示10本书的价格
14    double v[20] = {0,28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};
15    // n数组用来储存每本书的数量, sum表示总价
16    double t, sum = 0;
17
18    // 输入书的数量,并完成计算
19    for (int i = 1; i <= 10; i++)
20    {
21        cin >> t;
22        sum += t * v[i];
23    }
24
25    cout << fixed<< setprecision(1) <26    return 0;
27}

2. 交换大小写字母

【描述】

将字符串中所有出现的大写字母替换为小写字母,并将小写字母替换为大写字母。

【进入】

输入一行:要交换的字符串。

【输出】

输出一行:完整交换的字符串(字符串长度小于80)。

【样本输入】

如果是这样,您就有了一个 . 您可以在右侧登录。

【输出样例】

如果是这样,您就有了 . 您可以在右侧登录。

【参考AC方案】

 1#include 
2using namespace std;
3
4
5int main()
6
{
7    string s;
8    // 使用getline获取一行信息,包括空格
9    getline(cin, s);
10    // len表示字符串的长度
11    // d表示小写字母和它对应的大写字母ASCII码的差值
12    int len = s.length(), d = 'a' - 'A';
13
14    for (int i = 0; i < len; i++)
15    {
16        if (s[i] >= 'A' && s[i] <= 'Z')
17        {   
18            // 如果s[i]的大写字母 转变为小写字母
19            s[i] = s[i] + d;
20        }
21        else if (s[i] >= 'a' && s[i] <= 'z')
22        {   
23            // 如果s[i]的小写字母 转变为大写字母
24            s[i] = s[i] - d;
25        }
26    }
27    cout << s;
28    return 0;
29}

【大头老师说】

这是ASCII码的综合应用。 我们需要知道,小写字母的 ASCII 码比大写字母的 ASCII 码大。 所以小写字母转换为大写字母时减去差值,大写字母转换为小写字母时加上差值。 该差异是小写字母与其对应的大写字母之间的差异。 它是一个固定值32。如果你能记住它就更好了。 如果记不住了,可以用程序来计算一下,如上面的程序:d = ' a' - 'A';。 所以下面的程序也是可以的:

 1#include 
2using namespace std;
3
4int main()
5
{
6    string s;
7    // 使用getline获取一行信息,包括空格
8    getline(cin, s);
9    // len表示字符串的长度
10    int len = s.length();
11
12    for (int i = 0; i < len; i++)
13    {
14        if (s[i] >= 'A' && s[i] <= 'Z')
15        {   
16            // 如果s[i]的大写字母 转变为小写字母
17            s[i] = s[i] + 32;
18        }
19        else if (s[i] >= 'a' && s[i] <= 'z')
20        {   
21            // 如果s[i]的小写字母 转变为大写字母
22            s[i] = s[i] - 32;
23        }
24    }
25    cout << s;
26    return 0;
27}

微信搜索

没有IP的事情

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON