您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
第五讲 输出输入小结
发布时间:2021-05-11 18:41:43编辑:雪饮阅读()
编写程序向用户提出一个“Y/N问题”,然后把用户输入的值赋值给answer变量
要求1:针对用户输入“Y”或“y”和“N”或“n”进行过滤,就是说不能要求用户必须大写或者小写
要求2:运行生成的exe文件,找下问题
實例如:
#include <iostream>
using namespace std;
int main()
{
char answer;
/*
流插入运算符“<<”
*/
std::cout << "请问可以格式化您的硬盘吗?【Y/N】" << "\n";
/*
cin代表标准输入设备
流提取运算符 ">>"
從標準輸入提取到answer
*/
std::cin >> answer;
switch(answer)
{
case 'Y':
case 'y':
std::cout << "1" << "\n";
break;
case 'N':
case 'n':
std::cout << "2" << "\n";
break;
default:
std::cout << "3" << "\n"; //输入的不是上面四个字符时输出这个
break;
}
/*
为什么要加下面这些就是因为要求2运行生成的exe文件时出现的问题,不加的话输入一个字符后再按回车直接就没了
为什么要加这个是因为如果只加了下面两行的话,会取得一样的结果,因为在上面实际输入了两个字符,
有一个流向了answer,另一个留在了缓存区,所以std::cin.get()会读取到回车,所以就就什么都没了
上面這樣寫不絕對,我覺得還是要看編譯器,比如我這裏用的是vc6++編譯就沒有問題,我將下面3個語句都注釋了都沒有問題
*/
//std::cin.ignore(100, '\n');
//std::cout << "输入任何字符结束程序!" << "\n";
//std::cin.get();
return 0;
}
編譯運行結果如:
请问可以格式化您的硬盘吗?【Y/N】
n
2
Press any key to continue
C++ 代码实现温度转换
首先認識下華氏度和攝氏度,常見用的都是攝氏度
攝氏度以” °C”結尾,而華氏度以” °F”結尾
然後華氏度與攝氏度之間的換算公式如
华氏度 = 32°F(华氏温标单位)+ 摄氏度× 1.8。
那麽接下來就是具體的實現:
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
string t;
/*
<<:
流插入运算符“<<”
*/
cout << "请输入带有符号的温度值(123C / 100C):";
/*
>>:流提取運算符
*/
cin >> t;
cout << "输入的带有符号的温度值为:" << t << endl;
/*
string.find:
找到 -- 返回 第一个字符的索引
没找到--返回 string::npos(代表 -1 表示不存在)
第二個參數=》position:字符串中的某个位置,表示从从这个位置开始的字符串中找指定元素。
這一步爲了保證c或者C必須能找到,必須包含
這一步爲了判斷輸入的是攝氏度
*/
if (t.find('c', 0) != -1 || t.find('C', 0) != -1)
{
int index_c=t.find('c', 0);
if(index_c==-1){
index_c=t.find('C', 0);
}
/*
stod()函数,用於字符串轉數字
*/
double num = stod(t.substr(0,index_c));
/*
华氏度 = 32°F(华氏温标单位)+ 摄氏度× 1.8
9/5=1.8
*/
cout << "华氏度:" << num * 9 / 5 + 32 << "F" << endl;
}
//這一步爲了判斷輸入是華氏度
else if (t.find('f', 0) != -1 || t.find('F', 0) != -1)
{
int index_f=t.find('f', 0);
if(index_f==-1){
index_f=t.find('F', 0);
}
cout << "找到索引:"<<index_f<<"\n";
double num = stod(t.substr(0, index_f));
cout << "摄氏度:" << (num - 32) * 5 / 9 << "C" << endl;
}
else
{
cout<<"输入有误!";
}
return 0;
}
這段程序如果在vc6++中進行編譯就會出錯如:
![g++.jpg](/d/file/xuewuzhijing/xindebiji/610000b9f43a7153baabf18d7f6f9361.jpg)
個人懷疑應該是vc6++比較古董,那麽這裏再次用回前面學c語言階段用的gcc環境,雖然說gcc也可以編譯.cpp,但前提是沒有用到c++的一些新特性,比如c++的一些庫等。
如果用到了c++的東西,而c語言中沒有的東西,則就必須按c++的來進行編譯了。
那麽這裏在gcc環境下,c++編譯使用命令g++,g++編譯.cpp和gcc編譯.c基本一致。
則g++編譯並運行如:
D:\cproject>g++ main.cpp -o m
D:\cproject>m.exe
请输入带有符号的温度值(123C / 100C):123f
输入的带有符号的温度值为:123f
找到索引:3
摄氏度:50.5556C
关键字词:c++,g++
上一篇:第4讲-从另一个小程序接着说
下一篇:第6讲-函数的重载