c++_day1/2_cin cout

五迷三道 提交于 2020-01-06 19:11:09

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

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!