C++PrimerPlus第四章编程题

编程题

题目总览

在这里插入图片描述

在这里插入图片描述

编程题题解

    1. 题目要求输入四次信息,有四次交互的输入(in),最后在一口气列举出来。同时对于firstname与lastname进行了拼接,而且对于输入的成绩进行降级操作。同时对于名字name的要求是可以输入多个单词,也就是可以输入空格。
  • 再次解析题意就是需要输入4个变量,同时firstname和lastname需要使用getline的方法来实现输入(避免空格字符造成跳过输入流程的错误),再拼接为name(或者按照顺序输出)。成绩输入的字母aiisc-1实现降级。
  • 代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string fn;
	string ln;
	string name;
	int age;
	char grade;
	std::cout << "What is your first name: ";
	getline(cin, fn);		//std::cin >> fn;两者区别在于使用getline可以避免在识别到空格就跳过下阶段的输入
	std::cout << "\nWhat is your last name : ";
	getline(cin, ln);		//std::cin >> ln; 使用getline需要头文件string
	name = ln + "," + fn;
	std::cout << "\nWhat letter grade do you deserve?";
	std::cin >> grade;
	grade += 1;
	std::cout << "\nWhat is your age?";
	std::cin >> age;
	std::cout << "Name: " << name << "\nGrade: " << grade << "\nAge: " << age;
	return 0;
}
    1. 题目要求使用string来获取到交互的喜爱甜点和名字,再输出(类似题1)
  • 代码:
#include<iostream>
#include<string>
int main()
{
	using namespace std;
	const int ArSize = 20;
	string name;
	string dessert;
	std::cout << "Enter your name:\n";
	getline(cin, name);
	std::cout << "Enter your favorite dessert:\n";
	getline(cin, dessert);
	std::cout << "I have some delicious [" << dessert;
	std::cout << "] for you , [" << name<< "].\n";
	return 0;
}
    1. 使用拼接和复制的函数来对字符串数组进行操作。
  • 代码:
#include<iostream>
#include<cstring>
int main()
{
	char fn[20];
	char ln[20];
	std::cout << "Enter your first name: ";
	std::cin >> fn;
	std::cout << "Enter your last name: ";
	std::cin >> ln;
	char name[50];
	strcpy_s(name, fn);
	strcat_s(name, ",");
	strcat_s(name, ln);
	std::cout << "Here is the information in a single string : " << name;
	return 0;
}
    1. 改写第三题中使用的char数组操作部分为string操作部分
  • 代码:
#include<iostream>
#include<string>
int main()
{
	using namespace std;
	string fn;
	string ln;
	std::cout << "Enter your first name: ";
	std::cin >> fn;
	std::cout << "Enter your last name: ";
	std::cin >> ln;
	string name;
	name = fn + "," + ln;
	std::cout << "Here is the information in a single string : " << name;
	return 0;
}
    1. 定义一个结构包含字符串,浮点数,整数三种成员类型,再初始化并输出。
  • 代码:
#include<iostream>
#include<string>
struct CandyBar{
	std::string brand;//品牌
	float heavy;	
	int calorie;
};
int main()
{
	CandyBar snack{
		"Mocha Munch",
		2.3,
		350
	};
	std::cout << "snack CandyBar:\n";
	std::cout << "Brand:" << snack.brand;
	std::cout << "\nHeavy:" << snack.heavy;
	std::cout << "\nCalorie:" << snack.calorie;
	return 0;
}
    1. 对于题5而言增加了一个数组的操作,多个结构赋值与输出。
  • 代码:
#include<iostream>
#include<string>
struct CandyBar {
	std::string brand;//品牌
	float heavy;
	int calorie;
};
int main()
{
	using namespace std;
	CandyBar candys[3] = {
		{"aerbeisi",10,200},
		{"xufuji",20,400},
		{"buerjia",30,500}
	};
	for (int i = 0; i < 3; i++) {
		std::cout << "\nBrand:" << candys[i].brand;
		std::cout << "\nHeavy:" << candys[i].heavy;
		std::cout << "\nCalorie:" << candys[i].calorie;
		std::wcout << "\n___________";
	}
	return 0;
}
    1. 建立一个结构,输入来对结构内的元素进行赋值,并输出。
  • 代码:
#include<iostream>
#include<string>
struct Pizza {
	std::string Company;
	float diameter;
	float weight;
};
int main()
{
	Pizza pizza;
	std::cout << "\ncompany:";
	std::cin >> pizza.Company;
	std::cout << "\ndiameter:";
	std::cin >> pizza.diameter;
	std::cout << "\nweight:";
	std::cin >> pizza.weight;
	std::cout << "pizza信息为:";
	std::cout << "\n公司:" << pizza.Company;
	std::cout << "\n直径:" << pizza.diameter<<"cm";
	std::cout << "\n重量:" << pizza.weight << "g";
	return 0;
}
    1. 相较于题目7,这里要求不是声明一个结构变量,改为用new来为结构分配内存。
  • 代码:
#include<iostream>
#include<string>
struct Pizza {
	std::string Company;
	float diameter;
	float weight;
};
int main()
{
	Pizza *pizza = new Pizza;
	std::cout << "\ndiameter:";
	std::cin >> pizza->diameter;
	std::cout << "\ncompany:";
	std::cin >> pizza->Company;
	std::cout << "\nweight:";
	std::cin >> pizza->weight;
	std::cout << "pizza信息为:";
	std::cout << "\n公司:" << pizza->Company;
	std::cout << "\n直径:" << pizza->diameter << "cm";
	std::cout << "\n重量:" << pizza->weight << "g";
	delete pizza;
	return 0;
} 
    1. 对6进行动态分配数组的规划。
  • 代码:
#include<iostream>
#include<string>
struct CandyBar {
	std::string brand;//品牌
	float heavy;
	int calorie;
};
int main()
{
	using namespace std;
	CandyBar *ca1 = new CandyBar;
	CandyBar *ca2 = new CandyBar;
	CandyBar *ca3 = new CandyBar;
	CandyBar *cas[3] = { ca1,ca2,ca3 };
	for (int i = 0; i < 3; i++) {
		std::cin >> cas[i]->brand;
		std::cin >> cas[i]->calorie;
		std::cin >> cas[i]->heavy;
	}
	for (int i = 0; i < 3; i++) {
		std::cout << "\nBrand:" << cas[i]->brand;
		std::cout << "\nHeavy:" << cas[i]->heavy;
		std::cout << "\nCalorie:" <<cas[i]->calorie;
		std::wcout << "\n___________";
	}
	delete ca1, ca2, ca3,cas;
	return 0;
}
    1. 输入数据并且计算平均值与次数。使用array对象来存储数据。
  • 代码:
#include<iostream>
#include<array>
int main()
{
	using namespace std;
	array<float, 3>run;	//创建一个run的array对象,内部包含3个float类型元素。
	float sum = 0;
	for (int i = 0; i < 3; i++)
	{
		std::cout << "请输入第" << i+1 << "次的40米跑成绩:";
		std::cin >> run[i];
		sum += run[i];
		std::cout << "\a第" << i + 1 << "次40米跑成绩为" << run[i] << "s\n\n";
		std::cout << "前" << i+1 << "次平均成绩为:" << sum / (i + 1)<<"s\n\n";
	}
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰不停前进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值