目录
习题一
输出菱形图案
题目:编写一程序输出用*组成的菱形图案
我的方法:
1.分析:直接cout输出相关图案即可
2.代码:
#include<iostream>
using namespace std;
int main()
{
cout << " *" << endl;
cout << " *****" << endl;
cout << " **************" << endl;
cout << " **********************" << endl;
cout << "******************************" << endl;
cout << " **********************" << endl;
cout << " **************" << endl;
cout << " *****" << endl;
cout << " *" << endl;
}
以八进制、十六进制的形式输出一个数
题目:输入任意十进制数,将其以八进制、十六进制的形式输出
教材答案:
1.分析:
操纵符 | 作用 | 说明 |
---|---|---|
oct | 数据以八进制的形式输出 | 作用范围为后续输出的整数对象,小数不起作用 |
dec | 数据以十进制的形式输出(默认) | 同上 |
hex | 数据以十六进制的形式输出 | 同上 |
endl | 换行并刷新输出流 | |
setw(n) | 设置输出宽度 | 仅对后一个对象起作用 |
setprecision(n) | 设置输出小数位数(默认为6) | 作用范围为后续对象 |
在使用操纵符时,要使用iomanip头文件
2.涉及知识点:常用操纵符的使用
3.代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int number1;
cout << "输入的十进制数为:" << endl;
cin >> number1;
cout <<"八进制:"<< oct << number1 << endl;
cout << "十六进制:"<<hex << number1 << endl;
}
按精度从小到大输出结果
题目:输入两个数,将它们相除,观察为无限循环小数时按精度从小到大输出的结果
教材答案:
1.分析:输入的两个数,我一开始输入为两个整型的数字,发现无论精度设定为多大答案都一样,输入的是整型,输出的自然也是整型,因此要将整型的两个数字改为双精度型double
2.涉及知识点:数字类型的选择、常用操纵符的使用
3.代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double i, j;
cin >> i >> j;
cout << setprecision(1);
cout << "precision(1):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(2);
cout << "precision(2):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(3);
cout << "precision(3):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(4);
cout << "precision(4):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(5);
cout << "precision(5):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(6);
cout << "precision(6):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(7);
cout << "precision(7):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(8);
cout << "precision(8):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(9);
cout << "precision(9):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(10);
cout << "precision(10):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(11);
cout << "precision(11):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(12);
cout << "precision(12):" << i << "/" << j << "=" << i / j << endl;
cout << setprecision(13);
cout << "precision(13):" << i << "/" << j << "=" << i / j << endl;
}
习题二
精度运用
题目:摄氏温度与华氏温度的转换公式为:
c=5/9*(f-32)
其中c为摄氏温度,f为华氏温度,写出两者之间互相转换的表达式,将表达式放入程序中,以整数形式输入一种温度值,以整数形式输出转换后的温度值
我的方法&教材答案:
1.分析:直接套用公式进行转换表达即可
2.涉及知识点:(1)当/运算符用于两个整数相除时,如果商含有小数部分,将被截掉。若不想其被截掉,则至少保证除数或被除数中有一个是浮点数或双精度数
(2)\n——换行 \t——空格
转义序列 | 含义 |
\n | 换行 |
\t | 空格 |
\v | 竖向跳格 |
\b | 退格,相当于backspace键 |
\r | 回车(return) |
\f | 走纸(feed)换页 |
\a | 鸣铃(alert) |
\\ | 反斜杠符 |
\' | 单引号 |
\'' | 双引号 |
\ooo | ooo为3位八进制数 |
\xhh | hh为两位十六进制数 |
3.代码:
#include<iostream>
using namespace std;
int main()
{
int f, c=0;
cin >> f;
c = (5 / 9.0)*(f - 32); //当/运算符用于两个整数相除时,如果商含有小数部分,将被截掉。若不想其被截掉,则至少保证除数或被除数中有一个是浮点数或双精度数
cout << "摄氏度为:"<<f<<"\n"<<"转化后的华摄氏度为:"<<c << endl;
return 0;
}
用三目运算符比较出最大者
题目:用三目运算符求出x、y、z的最大者
我的方法:
1.涉及知识点:三目运算符是条件运算符,实现简单的选择功能
2.代码:
#include<iostream>
using namespace std;
int main()
{
int x, y, z;
cin >> x >> y >> z;
int max = (((x > y) ? x : y) > z) ? ((x > y) ? x : y) : z;
cout << max << endl;
}
变量值的交换
题目:分别写出引进和不引进第3个变量交换两个变量值的表达式(语句)
我的方法:
1.分析:引进第三个变量即常规的tmp交换,而不引进第三个变量我用了vector容器
2.代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//引入第三个变量
int a = 3, b = 4;
cout << "交换之前的a为:" << a << "交换之前的b为:" << b << endl;
int tmp = a;
a = b;
b = tmp;
cout << "交换之后的a为:" << a << "交换之后的b为:" << b << endl;
//不引入第三个变量
vector<int>v1;
v1.push_back(9);
vector<int>v2;
v2.push_back(6);
cout << "交换之前的c为:";
for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
{
cout << *it << endl;
}
cout << "交换之前的d为:";
for (vector<int>::iterator it = v2.begin(); it != v2.end(); it++)
{
cout << *it << endl;
}
swap(v1, v2);
cout << "交换之后的c为:" ;
for (vector<int>::iterator it = v1.begin(); it != v1.end(); it++)
{
cout << *it << endl;
}
cout << "交换之后的d为:";
for (vector<int>::iterator it = v2.begin(); it != v2.end(); it++)
{
cout << *it << endl;
}
return 0;
}
教材答案:
1.分析:跟我的不一样的是不引进第三个变量的那一条
2.代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//引入第三个变量
int a = 3, b = 4;
cout << "交换之前的a为:" << a << "交换之前的b为:" << b << endl;
int tmp = a;
a = b;
b = tmp;
cout << "交换之后的a