编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行的任何位置。当用户按下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