当前位置: 首页 > news >正文

c++第二章练习题

第二章练习题

比较整数

编写一个程序,要求用户输入两个整数,从用户处获取这些数字,然后打印较大的数字,后跟 “更大” 一词。如果这些数字相等,则打印消息 “这些数字相等”。

#include <iostream>
/*比较整数*编写一个程序,要求用户输入两个整数,从用户处获取这些数字,然后打印较大的数字,后跟 “更大” 一词。如果这些数字相等,则打印消息 “这些数字相等”。*/
int main()
{int a{0},b{0};std::cout << "Input two integer:";std::cin >> a >> b ;if (a==b) {std::cout << "equal\n";}else {if (a > b) {std::cout << a << " is larger than " << b;}std::cout << b << " is larger than " << a;}return 0;
}

算术运算、最小值和最大值

编写一个程序,从键盘输入三个整数,并打印这三个数的和、平均值、乘积、最小值和最大值。屏幕对话应如下所示:

#include <iostream>
//输入三个整数,返回最小值和最大值
//如何同时返回两个值?传引用
void find_min_max(int a, int b, int c, int& min_val, int& max_val) {//如何比较三个整数的大小?//先两个数比较选出最大,之后再与第三个数比较max_val = a > b ? a : b;max_val = c > max_val ? c : max_val;min_val = a < b ? a : b;min_val = c < min_val ? c : min_val;
}
int main()
{int num1{0}, num2{0}, num3{0}, min_val{0}, max_val{0};std::cout << "Input three different integers:";std::cin >> num1 >> num2 >> num3;std::cout << "Sum is " << num1+num2+num3 << "\n";std::cout << "Average is " << (num1+num2+num3)/3 << "\n";std::cout << "Product is " << num1*num2*num3 << "\n";find_min_max(num1,num2,num3,min_val,max_val);std::cout << "Smallest is " << min_val << "\n";std::cout << "Largest is " << max_val << "\n";return 0;
}

或者直接调用标准库中的最小最大

//建议传入值用const修饰,防止函数体对这三个值进行修改
void find_min_max(const int a,const int b,const int c, int& min_val, int& max_val) {min_val = std::min(std::min(a, b), c);max_val = std::max(std::max(a, b), c);
}

圆的直径、周长和面积

编写一个程序,读取一个作为整数的圆半径,并打印该圆的直径、周长和面积。使用常数3.14159作为π的值。所有计算均在输出语句中完成

#include <iostream>
#define PI 3.14159
int main()
{int radius{0};//读取圆半径rstd::cout << "input radius of circle:";std::cin >> radius;//打印圆直径、周长、面积std::cout << "diameter: " << 2*radius << " circumference: " << 2*PI*radius << " aera of a circle: " << PI*radius*radius;return 0;
}

最大和最小整数

编写一个程序,读入五个整数,然后确定并打印出其中的最大整数和最小整数。

#include <iostream>
int main()
{int num[5]={0};int max{0}, min{0};std::cout << "Input 5 numbers: ";//读入5个数for (int i=0; i<5; i++)std::cin >> num[i];max = min = num[0];//遍历数组找最大最小for (int i=1; i<5; i++) {if (max < num[i])max = num[i];if (min > num[i])min = num[i];}std::cout << "largest number: " << max << "\nsmallest number: " << min;return 0;
}


或直接用标准库函数

#include <iostream>
#include <algorithm>
int main()
{int num[5];std::cout << "Input 5 numbers: ";for (int &i : num)std::cin >> i;auto [min_it, max_it] = std::minmax_element(std::begin(num), std::end(num));std::cout << "largest number: " << *max_it << "\nsmallest number: " << *min_it;return 0;
}

奇数或偶数

编写一个程序,读取一个整数并确定它是奇数还是偶数,然后打印结果。[提示:使用取余运算符(%)。偶数是 2 的倍数。任何 2 的倍数除以 2 时余数为零。]

#include <iostream>
int main()
{//读取一个整数int num{0};std::cout << "input an integer: ";std::cin >> num;//判断奇偶数if (num % 2 == 0) {std::cout << num << " is even number";}else {std::cout << num << " is odd number";}return 0;
}


其他人答案

#include <iostream>using namespace std;int main() {// read an integer number from user //------------------------------------int number{0};cout << "Enter an integer number: ";cin >> number;//------------------------------------// main logic//******************************************** if (number % 2 == 0) {cout << number << " is an even number."; }if (number % 2 == 1) {cout << number << " is an odd number."; }//******************************************** return 0;
}

倍数

编写一个程序,读取两个整数,并确定第一个数是否是第二个数的倍数,然后打印结果。[提示:使用取余运算符(%)。]

#include <iostream>
int main()
{//读取2个整数int num1{0}, num2{0};std::cout << "input two integer: ";std::cin >> num1 >> num2;//判断奇偶数if (num1 % num2 == 0) {std::cout << num1 << " is a multiple of second number " << num2;}else {std::cout << num1 << " isn't a multiple of second number " << num2;}return 0;
}


其他人的答案

#include <iostream>using namespace std;int main() {// read two integers from user//---------------------------------int number1{0}, number2{0};cout << "Enter first integer: ";cin >> number1;cout << "Enter second integer: ";cin >> number2;//---------------------------------// main logic//************************************************************if (number1 % number2 == 0) {cout << number1 << " is multiple of " << number2 << ".";}if (number2 % number1 == 0) {cout << number2 << " is multiple of " << number1 << ".";}//************************************************************return 0;
} 

棋盘图案

使用尽可能少的语句显示相同的图案。

#include <iostream>
int main()
{for (int i=0; i<8; i++)if (i % 2 == 0) {std::cout << "* * * * * * * \n";}else {std::cout << " * * * * * * * \n";}return 0;
}

字符的整数等效值

这是一个前瞻性内容。在本章中,你学习了整数和int类型。C++还可以表示大写字母、小写字母和各种特殊符号。C++在内部使用小整数来表示每个不同的字符。计算机使用的字符集以及这些字符对应的整数表示称为该计算机的字符集。你可以通过将字符用单引号括起来来打印该字符,例如

cout << 'A'; // print an uppercase A

你可以使用static_cast来打印字符的整数等效值,如下所示:

cout << static_cast<int>('A'); // print 'A' as an integer

这称为强制类型转换操作。表达式static_cast<int>('A')会将字符'A'转换为其整数等效值65(在使用ASCII字符集或Unicode字符集的系统上)。
编写一个程序,打印用户在键盘上输入的字符的整数等效值。将输入存储在一个char类型的变量中。使用大写字母、小写字母、数字和特殊字符(如$)多次测试你的程序。

#include <iostream>
int main()
{//输入字符,输出对应整数等效值char a{0};std::cout << "Input a char: ";std::cin >> a;std::cout << "Equivalent value: " << static_cast<int>(a);return 0;
}


整数的各位数字

编写一个程序,输入一个五位整数,将该整数分解为各个位上的数字,并以每两个数字之间间隔三个空格的方式打印出来。例如,如果用户输入42339,程序应输出:
[提示:使用整数除法和取余运算符。]

#include <iostream>
int main()
{//输入一个五位数int num{0},a{0},b{0},c{0},d{0},e{0};std::cout << "Input a Five-digit number:";std::cin >> num;//整数分解为各个位上的数字每两个数字之间间隔三个空格的方式打印a = num / 10000;b = num / 1000 % 10; // num/1000取出前两位,取余取出后一位c = num / 100 % 10;d = num / 10 % 10;e = num % 10;std::cout << a << "  " << b << "  " << c << "  " << d << "  " << e;return 0;
}

万位:用 num / 10000,即去掉后四位,得到最高位。
千位:用 num / 1000 % 10,先去掉后三位,再对 10 取余,得到千位。
百位:用 num / 100 % 10,先去掉后两位,再对 10 取余,得到百位。
十位:用 num / 10 % 10,先去掉个位,再对 10 取余,得到十位。
个位:用 num % 10,直接对 10 取余,得到个位。
这种方法基于十进制数位的权重,每一位的值都可以通过合适的整除和取余操作获得。

表格

编写一个程序,计算从0到10的整数的平方和立方。使用制表符打印出以下格式整齐的值表:

#include <iostream>
int main() {std::cout << "integer  square  cube\n";for (int i=0; i<=10; i++) {std::cout << i << i*i << i*i*i << "\n";}return 0;
}


未能制表

#include <iostream>
int main() {std::cout << "integer\tsquare\tcube\n";for (int i=0; i<=10; i++) {std::cout << i << "\t" << i*i << "\t" << i*i*i << "\n";}return 0;
}

http://www.xdnf.cn/news/692245.html

相关文章:

  • Java数值字符串相加
  • 英飞凌SBC芯片TLE9263QX for STM32的库函数与使用
  • ⭐️⭐️⭐️ 免费的AI Clouder认证 ⭐️⭐️⭐️ 第四弹【课时1:课程概览】for「大模型Clouder认证:基于通义灵码实现高效AI编码」
  • 企业信息管理系统的设计与实现(代码+数据库+LW)
  • 【多线程初阶】初识线程 创建线程
  • 线性回归中标准方程法求逆失败的解法:正则化
  • 三维点云深度学习代码torch-points3d-SiamKPConvVariants复现记录(持续更新中)
  • MAC程序签名遇到的问题
  • 用结构填充平面
  • GUI 编程——python
  • PortSwigger-02-XXE
  • Gerapy二次开发:在Ubuntu服务器中利用pyenv+supervisor实现项目部署
  • 为 MCP Server 提供 Auth 认证,及 Django 实现示例
  • 三、zookeeper 常用shell命令
  • Spring AI 代理模式(Agent Agentic Patterns)
  • 基于Vue3.0的【Vis.js】库基本使用教程(002):图片知识图谱的基本构建和设置
  • 机器学习-随机森林
  • 算法训练第一天
  • 深度解析 torch.mean 的替代方案
  • Web前端快速入门(Vue、Element、Nginx)
  • 通过海康萤石API控制家里相机的云台及抓图
  • PHP:从Web开发基石到现代应用引擎的进化之路
  • 青岛市长任刚与深兰科技董事长陈海波会谈,深兰青岛项目即将进入快车道!
  • Nacos注册中心原理
  • System Properties 和 Settings.Global 的区别
  • 尚硅谷redis7 70-72 redis哨兵监控之案例实操7
  • go实现定时任务
  • QT 5.15.2 程序中文乱码
  • Linux基础 -- Linux 启动调试之深入理解 `initcall_debug` 与 `ignore_loglevel`
  • JavaScript核心总结与现代化应用指南