1.编写一个C++程序,如下述输出示例所示的那样请求并显示信息:

What is your first name? Betty Sue

What is your last name? Yewe

What letter grade do you deserve? B

What is your age? 22

Name: Yewe, Betty Sue

Grade: C

Age: 22

注:该程序应接受的名字包含多个单词。另外,程序将向下调整成绩,即向上调整一个字母。假设用户请求A、B或C,所以不必担心D和F之间的空档。

答:代码:

#include<iostream>int main()
{
using namespace std;
char first[20], last[20];   //声明first name和last name
char grade; //声明成绩变量grade
int age;    //声明年龄变量age
cout << "What is your first name? ";
cin.getline(first, 20); //读取用户输入的一行字符给first
cout << "What is your last name? ";
cin.getline(last, 20);  //读取用户输入的一行字符给last
cout << "What letter grade do you deserve? ";
cin >> grade; //读取用户输入的grade
cout << "What is your age? ";
cin >> age;   //读取用户输入的年龄
cout << "Name: " << last << ", " << first << endl;    //显示名字
cout << "Grade: " << char((int)grade + 1) << endl; //将用户输入的grade转为int类,然后+1就是下调成绩,再转为char类显示
cout << "Age: " << age << endl; //显示用户输入的年龄
cin.get();  //和下面起到暂停作用
cin.get();
return 0;
}

输出:

What is your first name? Betty Sue

What is your last name? Yewe

What letter grade do you deserve? B

What is your age? 22

Name: Yewe, Betty Sue

Grade: C

Age: 22

2.修改程序清单4.4,使用C++ string类而不是char数组。

备注:4.4太简单了,改为修改题目1.

答:代码:

#include<iostream>
#include<string>int main()
{
using namespace std;
string first, last; //声明first name和last name
string grade;   //声明成绩变量grade
int age;    //声明年龄变量age
cout << "What is your first name? ";
getline(cin,first); //读取用户输入的一行字符给first
cout << "What is your last name? ";
getline(cin,last);  //读取用户输入的一行字符给last
cout << "What letter grade do you deserve? ";
cin >> grade; //读取用户输入的grade
cout << "What is your age? ";
cin >> age;   //读取用户输入的年龄
cout << "Name: " << last << ", " << first << endl;    //显示名字
cout << "Grade: " << grade[0]+1 << endl;   //将string的第一个字符+1,则显示的是下一个字母
cout << "Age: " << age << endl; //显示用户输入的年龄
system("pause");
return 0;
}

3.编写一个程序,它要求用户首先输入其名,然后输入其姓;然后程序使用一个逗号和空格将姓和名组合起来,并存储和显示组合结果。请使用char数组和头文件cstring中的函数。下面是程序运行时的情形:

Enter your first name: Flip

Enter your last name: Fleming

Here's the information in a single string: Fleming, Flip

答:代码:

#include<iostream>
#include<cstring>int main()
{
using namespace std;
char first[20], last[20];   //创建字符串first和last
char middle[3] = ", ";   //创建用于连接名字的间隔符,和空格
cout << "Enter your first name: ";
cin.getline(first, 20); //要求用户输入名
cout << "Enter your last name: ";
cin.getline(last, 20);  //要求用户输入姓const int a=strlen(first);    //让常量a等于first的长度
const int b = strlen(last);    //让常量b等于last的长度
char *name = new char[43]; //创建指针,用于将first和last还有中间的间隔符组合到一起strcpy_s(name, b + 1, last);   //将last的内容复制到指针name(所指向地址的字符串)中,注意,长度需要给空字符留一个位置
name = name + b;  //指针偏移,偏移长度为last的长度,这样的话,就将空字符覆写掉了
strcpy_s(name, 3, middle);  //将middle的内容复制到指针name中,同样留一个空字符位置
name = name + 2;  //偏移指针,覆写空字符
strcpy_s(name,a+1, first); //将first内容复制到指针name中
name = name - b - 2;   //将指针偏移回原来的位置
cout << "Here's the information in a single string: " << name << endl; //输出指针指向的地址
system("pause");  //用2个cin.get()就不会显示最后的 请按任意键继续. . . 但问题是,好像也没法复制输出的内容了
return 0;
}

输出:

Enter your first name: Flip

Enter your last name: Fleming

Here's the information in a single string: Fleming, Flip

请按任意键继续. . .

4.编写一个程序,它要求用户首先输入其名,再输入其姓;然后程序使用一个逗号和空格将姓和名组合起来,并存储和显示组合结果。请使用string类和头文件string中的函数。下面是程序运行时的情形:

Enter your first name: Flip

Enter your last name: Fleming

Here's the information in a single string: Fleming, Flip

答:代码:

#include<iostream>
#include<string>int main()
{
using namespace std;
string first, last; //创建字符串first和last
string middle = ", ";    //创建用于连接名字的间隔符,和空格
cout << "Enter your first name: ";
getline(cin,first); //要求用户输入名
cout << "Enter your last name: ";
getline(cin, last); //要求用户输入姓
string name = last + middle + first; //string只要简单的按顺序相加,就可以将string类字符串拼接到一起
cout << "Here's the information in a single string: " << name << endl;
system("pause");
return 0;
}

输出:

Enter your first name: Flip

Enter your last name: Fleming

Here's the information in a single string: Fleming, Flip

请按任意键继续. . .

5.结构CandyBar包含3个成员。第一个成员存储了糖块的品牌;第二个成员存储糖块的重量(可以有小数);第三个成员存储了糖块的卡路里含量(整数)。请编写一个程序,声明这个结构,创建一个名为snack的CandyBar变量,并将其成员分别初始化为“Mocha Munch”、2.3和350。初始化应在声明snack时进行。最后,程序显示snack变量的内容。

答:代码:

#include<iostream>
#include<string>struct CandyBar
{
std::string pinpai; //品牌
double weight;  //重量
int kaluli; //卡路里
};int main()
{
using namespace std;
CandyBar snack = { "Mocha Munch",2.3,350 };  //声明并初始化snack
cout << snack.pinpai << "的重量为" << snack.weight << ",卡路里含量为:" << snack.kaluli << endl;
system("Pause");
return 0;
}

输出:

Mocha Munch的重量为2.3,卡路里含量为:350

请按任意键继续. . .

6.结构CandyBar包含3个成员,如编程练习5所示。请编写一个程序,创建一个包含3个元素的CandyBar数组,并将它们初始化为所选择的值,然后显示每个结构的内容。

答:代码:

#include<iostream>
#include<string>struct CandyBar
{
std::string pinpai; //品牌
double weight;  //重量
int kaluli; //卡路里
};int main()
{
using namespace std;
CandyBar tang[3];
tang[0] = { "大白兔奶糖",3.3,200 };
tang[1] = { "小白兔奶糖",2.2,150 };
tang[2] = { "巧克力糖",4.2,300 };
cout << tang[0].pinpai << "的重量为" << tang[0].weight << ",卡路里含量为:" << tang[0].kaluli << endl;
cout << tang[1].pinpai << "的重量为" << tang[1].weight << ",卡路里含量为:" << tang[1].kaluli << endl;
cout << tang[2].pinpai << "的重量为" << tang[2].weight << ",卡路里含量为:" << tang[2].kaluli << endl;
system("Pause");
return 0;
}

输出:

大白兔奶糖的重量为3.3,卡路里含量为:200

小白兔奶糖的重量为2.2,卡路里含量为:150

巧克力糖的重量为4.2,卡路里含量为:300

请按任意键继续. . .

7.William Wingate从事比萨饼分析服务。对于每个比萨饼,他都需要记录下列信息:

● 披萨饼公司的名称,可以由多个单词组成。

● 披萨饼的直径。

● 披萨饼的重量。

请设计一个能够储存这些信息的结构,并编写一个使用这种结构变量的程序。程序将请求用户输入上述信息,然后显示这些信息。请使用cin(或它的方法)和cout。

答:代码:

#include<iostream>
#include<string>struct pisa
{
std::string gs; //公司
double zj;  //直径
int zl; //重量
};int main()
{
using namespace std;
cout << "这里可以帮你储存披萨饼的相关信息。\n请输入披萨饼的公司名称: ";
pisa a;
getline(cin, a.gs);
cout << "请输入披萨饼的直径(英寸): ";
cin >> a.zj;
cout << "请输入披萨饼的重量(克): ";
cin >> a.zl;
cout << a.gs << "的披萨饼,直径为" << a.zj << "英寸,重量为" << a.zl << "克。" << endl;
system("Pause");
return 0;
}

输出:

这里可以帮你储存披萨饼的相关信息。

请输入披萨饼的公司名称: 肯 德 萨

请输入披萨饼的直径(英寸): 8

请输入披萨饼的重量(克): 500

肯 德 萨的披萨饼,直径为8英寸,重量为500克。

请按任意键继续. . .

8.完成编程练习7,但使用new来为结构分配内存,而不是声明一个结构变量。另外,让程序在请求输入比萨饼公司名称之前输入比萨饼的直径。

答:

#include<iostream>
#include<string>struct pisa
{
std::string gs; //公司
double zj;  //直径
int zl; //重量
};int main()
{
using namespace std;
pisa *a = new pisa;    //使用动态结构数组
cout << "这里可以帮你储存披萨饼的相关信息。" << endl;
cout << "请输入披萨饼的直径(英寸): ";
cin >> (*a).zj;
cout<<"请输入披萨饼的公司名称: ";
cin.get();  //读取掉换行符
getline(cin, a->gs);
cout << "请输入披萨饼的重量(克): ";
cin >> a->zl;
cout << a->gs << "的披萨饼,直径为" << a->zj << "英寸,重量为" << a->zl << "克。" << endl;
system("Pause");
return 0;
}

输出:

这里可以帮你储存披萨饼的相关信息。

请输入披萨饼的直径(英寸): 12

请输入披萨饼的公司名称: 一个 比萨家

请输入披萨饼的重量(克): 450

一个 比萨家的披萨饼,直径为12英寸,重量为450克。

请按任意键继续. . .

9.完成编程练习6,但使用new来动态分配数组,而不是声明一个包含3个元素的CandyBar数组。

答:代码:

#include<iostream>
#include<string>struct CandyBar
{
std::string pinpai; //品牌
double weight;  //重量
int kaluli; //卡路里
};int main()
{
using namespace std;
CandyBar *tang=new CandyBar[3];
tang[0] = { "大白兔奶糖",3.3,200 };
tang[1] = { "小白兔奶糖",2.2,150 };
tang[2] = { "巧克力糖",4.2,300 };
cout << tang[0].pinpai << "的重量为" << tang[0].weight << ",卡路里含量为:" << tang[0].kaluli << endl;
cout << tang[1].pinpai << "的重量为" << tang[1].weight << ",卡路里含量为:" << tang[1].kaluli << endl;
cout << tang[2].pinpai << "的重量为" << tang[2].weight << ",卡路里含量为:" << tang[2].kaluli << endl;
system("Pause");
return 0;
}

输出:

大白兔奶糖的重量为3.3,卡路里含量为:200

小白兔奶糖的重量为2.2,卡路里含量为:150

巧克力糖的重量为4.2,卡路里含量为:300

请按任意键继续. . .

10.编写一个程序,让用户输入三次40码跑的成绩(如果您愿意,也可让用户输入40米跑的成绩),并显示次数和平均成绩。请使用一个array对象来存储数据(如果编译不支持array类,请使用数组)。

答:代码:

#include<iostream>
#include<array>int main()
{
using namespace std;
const int b = 3;
array<double, b>a;
cout << "请输入三次四十米跑的成绩。\n请输入第一次的成绩(秒): ";
cin >> a[0];
cout << "请输入第二次的成绩(秒): ";
cin >> a[1];
cout << "请输入第三次的成绩(秒): ";
cin >> a[2];
cout << "您" << b << "次的成绩分别为:" << a[0] << "秒、" << a[1] << "秒、" << a[2] << "秒。\n平均成绩为:" << (a[0] + a[1] + a[2]) / 3 << "秒。" << endl;
system("pause");
return 0;
}

输出:

请输入三次四十米跑的成绩。

请输入第一次的成绩(秒): 5.5

请输入第二次的成绩(秒): 5.3

请输入第三次的成绩(秒): 5.9

您3次的成绩分别为:5.5秒、5.3秒、5.9秒。

平均成绩为:5.56667秒。

请按任意键继续. . .

(六十四)第四章编程练习相关推荐

  1. (八十)第五章编程练习

    1.编写一个要求用户输入两个整数的程序.该程序将计算并输出这两个整数之间(包括这两个整数)的所有整数的和.这里假设先输入较小的整数.例如,如果用户输入的是2和9,则程序指出2-9之间的所有整数和为44 ...

  2. C++ Primer Plus(第六版)第4章 编程练习答案详解

    第四章 1. 编写一个C++程序,如下述输出示例所示的那样请求并显示信息: What is your first name? Betty Sue What is your last name? Yew ...

  3. C++ Primer Plus(第六版)第6章 编程练习答案详解

    1. 编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写,将小写字符转换为大写(别忘了cctype函数系列). #include<iostream& ...

  4. SRPG游戏开发(六十)第十一章 地图动作与地图事件 - 九 触发事件与切换回合(Trigger Events and Change Turn)

    返回<SRPG游戏开发>导航 第十一章 地图动作与地图事件(Map Action and Map Event) 我们已经有了剧本,而且可以运行剧本,但我们还缺少对地图的操作控制. 我们这一 ...

  5. C++Primer Plus(第六版)第七章编程练习

    好几道题没做,返回指针的函数写之前的写过就没再写一次了 #include <iostream> using namespace std; /* struct box {char maker ...

  6. 第六十四章 Caché 函数大全 $STACK 函数

    文章目录 第六十四章 Caché 函数大全 $STACK 函数 大纲 参数 描述 `$ECODE` 与 `$STACK` `$STACK`的单参数形式 `$STACK`的两个参数形式 示例 注意 跨命 ...

  7. 【正点原子Linux连载】第六十四章 Linux 多点电容触摸屏实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  8. 第六十四章 SQL函数 INSTR

    文章目录 第六十四章 SQL函数 INSTR 大纲 参数 描述 INSTR, CHARINDEX, POSITION和$FIND 示例 第六十四章 SQL函数 INSTR 返回子字符串在字符串中的位置 ...

  9. c语言第六版第四章答案,C primer plus 第六版 第6版 004章 第四章 编程 练习 答案 中文...

    第四章 编程练习 1.编写一个程序,提示用户输入名和姓,然后以『名,姓』的格式打印出来. char name[40]; char family[40]; printf("请输入名和姓:\n& ...

  10. [Python从零到壹] 六十四.图像识别及经典案例篇之图像傅里叶变换和傅里叶逆变换详解

    祝大家新年快乐,阖家幸福,健康快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所 ...

最新文章

  1. ISME:西农沈锡辉+韦革宏+王瑶揭示细菌铁获取和外膜囊泡招募新机制
  2. 产品经理们是如何越过 iOS 沙盒机制的?
  3. java反射 面试题_使用Java反射更改私有静态最终字段
  4. 根据相机内参进行图像去畸变
  5. koa2异常处理_读 koa2 源码后的一些思考与实践
  6. Java摩托车汽车轮胎数量,摩托车轮子上的知识,你知道多少?
  7. 【C++基础学习】关于C++静态成员函数和变量
  8. UnityShader33:GPU 实例化
  9. 主键与主键索引的关系
  10. 《企业IT架构转型之道》读后感(一)
  11. 用户故事 | 验收标准
  12. arping命令 《openstack 网络》
  13. 小白软件帮手(xbrjbs)一个专业安装破解软件的公众号
  14. 禾多科技与RTI达成合作,加速自动驾驶在中国量产落地
  15. V4L2视频输入框架概述
  16. 使用PreListener与InteractionListener的一个小发现
  17. 图中的搜索——dij
  18. 不同强度等级下混凝土的弹性模量、轴心抗压强度标准值fck、轴心抗拉强度标准值ftk、轴心抗压强度设计值fcd、轴心抗拉强度设计值ftd (规范值)
  19. 什么是API? [如何编写和阅读API文档]
  20. 876计算机大纲,876水力学考大纲.doc

热门文章

  1. 讲座文稿 | 思维的艺术:悖论与自指【哲学与当代艺术No.23】
  2. Overture如何设置四手联弹的乐谱
  3. 「文献解读」利用大豆过表达和基因编辑技术研究GmBICs基因的功能
  4. 摸头杀,忍の摸头之术源码
  5. 谈谈音频信号处理中 CNN 的因果性
  6. iTMS plus 手机APP使用说明
  7. 学习QT的阶段性总结
  8. tar 压缩不同目录中的文件
  9. 区块链及交易所行情的数据来源
  10. JavaScript - ES6教程系列-李游Leo-专题视频课程