编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行的任何位置。当用户按下enter键,数据输入停止。程序自动对所有的整数进行求和并打印出结果。
需要解决两个问题,提取数字,提取连续数字。
//c #include<stdio.h> void main() { int sum=0;; int i; char ch; while(scanf("%d",&i)==1) { sum+=i; while((ch=getchar())==' ')//屏蔽空格 ; if(ch=='\n') break; ungetc(ch,stdin);//将变量ch中存放的字符退回给stdin输入流。 } printf("sum; %d\n",sum); }
//c++ #include<iostream> using namespace std; int main() { int sum=0; cout<<"请输入"; int i; while(cin>>i) { sum+=i; while(cin.peek()==' ') { cin.get(); } if(cin.peek()=='\n') break; } cout<<"sum:"<<sum<<endl; return 0; }
①表达式cin>>i返回输入流对象本身也就是cin,但如果读到文件尾或者提取操作符遇到一个非法值,返回值是false。
#include<iostream> using namespace std; int main() { char buf[20]; cin.ignore(7); cin.getline(buf,10); cout<<buf<<endl; return 0; } /* 输入:12345 12345 12345 12345 输出:2345 1234 */
②cin.ignore(7)忽视前七个字符
③cin.getline(buff,10)获取十个到buf中存放(第十位是'\0)
④using namespace std;名字空间,c++所有标识符都是在同一个特殊的名字空间(std)中定义的。如果没有使用这条指令,需要用std::cout这样的语法来调用输出流对象。
#include<iostream> using namespace std; int main() { const int SIZE=50; char buf[SIZE]; cout<<"请输入一段文本:"; cin.read(buf,20); cout<<"字符串收集到的字符数为:" <<cin.gcount()<<endl; cout<<"输入文本的信息是:"; cout.write(buf,20); cout<<endl; return 0; }
题目:程序向用户提出一个“Y/N"问题。然后把用户输入的值赋值给answer变量。
#include<iostream> int main() { char answer; std::cout<<"请问可以格式化你的硬盘吗?【Y/N】"<<"\n"; std::cin>>answer; switch(answer) { case'Y': case'y': std::cout<<"随便格式化硬盘是不好的"<<"\n"; break; case'N': case'n': std::cout<<"您的选择是明智的"<<"\n"; break; default: std::cout<<"您的输入不符合要求"<<"\n"; break; } return 0; }
题目:摄氏转换
#include<iostream> int main() { //华氏温度==摄氏温度 *9.0/5.0+32; const short ADD_SUBTRACT=32; const double RATIO=9.0/5.0; double tempIn,tempOut; char typeIn,typeOut; std::cout<<"请以【xx.C】或者【xx.F】格式输入一个温度:"; std::cin>>tempIn>>typeIn; std::cin.ignore(100,'\n');//避免回车的影响 std::cout<<"\n"; switch(typeIn) { case'C': case'c': tempOut=tempIn*RATIO+ADD_SUBTRACT; typeOut='F'; typeIn='C'; break; case'F': case'f': tempOut=(tempIn-ADD_SUBTRACT)/RATIO; typeOut='C'; typeIn='F'; break; default: typeOut='E'; break; } if(typeOut!='E') { std::cout<<tempIn<<typeIn <<"="<<tempOut<<typeOut<<"\n"; } else { std::cout<<"输入错误\n"; } return 0; }
重载(overloading)可以是参数个数,数据类型不同,但不能是返回值不同。
#include<iostream> void convertTemperature(double tempIn,char typeIn); void convertTemperature(int tempInInt,char typeIn); int main() { //华氏温度==摄氏温度 *9.0/5.0+32 double tempIn; int tempInInt; char typeIn; std::cout<<"请以【xx.C】或者【xx.F】格式输入一个温度:"; std::cin>>tempIn>>typeIn; std::cin.ignore(100,'\n');//避免回车的影响 std::cout<<"\n"; convertTemperature(tempIn,typeIn); std::cout<<"请以【xx C】或者【xx F】格式输入一个温度:"; std::cin>>tempInInt>>typeIn; std::cin.ignore(100,'\n');//避免回车的影响 std::cout<<"\n"; convertTemperature(tempInInt,typeIn); return 0; } void convertTemperature(double tempIn,char typeIn) { const short ADD_SUBTRACT=32; const double RATIO=9.0/5.0; double tempOut; char typeOut; switch(typeIn) { case'C': case'c': tempOut=tempIn*RATIO+ADD_SUBTRACT; typeOut='F'; typeIn='C'; break; case'F': case'f': tempOut=(tempIn-ADD_SUBTRACT)/RATIO; typeOut='C'; typeIn='F'; break; default: typeOut='E'; break; } if(typeOut!='E') { std::cout<<tempIn<<typeIn <<"="<<tempOut<<typeOut<<"\n"; } else { std::cout<<"输入错误\n"; } } void convertTemperature(int tempInInt,char typeIn) { const short ADD_SUBTRACT=32; const double RATIO=9.0/5.0; int tempOut; char typeOut; switch(typeIn) { case'C': case'c': tempOut=tempInInt*RATIO+ADD_SUBTRACT; typeOut='F'; typeIn='C'; break; case'F': case'f': tempOut=(tempInInt-ADD_SUBTRACT)/RATIO; typeOut='C'; typeIn='F'; break; default: typeOut='E'; break; } if(typeOut!='E') { std::cout<<tempInInt<<typeIn <<"="<<tempOut<<typeOut<<"\n"; } else { std::cout<<"输入错误\n"; } }
来源:https://www.cnblogs.com/KIROsola/p/12154528.html