在线编程的简单输入输出

一、输入

1.循环输入

while(cin>>a>>b)
//一直循环就不使用条件跳出,根据条件判断跳出就在循环中添加判断跳出语句

//特殊的循环判断语句:
if (cin.get() == '\n')
cin.get()是在扫描器中一个一个读取输入,空格和回车也可以被读取

2.根据输入确定循环次数

cin>>n;while (n-->0)

3.输入转换

cin.get()可以单个以字符形式读入数据,之后进行数据转换
转换方法如下:

char s[15] = "123.432,432";
int n;double f1;int f2;//n是转换字符个数
sscanf(s,"%lf , %d%n " , &f1,&f2,&n) ;

C++中另外也有对应的转换函数在头文件stdlib.h里面,对应的函数为:
itoa(integer to alphanumeric)表示从整型到字符串
atoi(alphanumeric to integer)表示从字符串到整型

	char ch[5],ch2[5];
	int a = atoi(ch);//ch表示需要转换的字符
    cout << a << endl;
    _itoa_s(a,ch2,10);//a表示需要转换的数字,ch2表示转换后的字符,10是数字转换的进制
    cout << ch2 << endl;

读入数字和字符的组和的时候,可以使用cin之后再使用cin.get()来读取字符,之后的数字又可以重新进行读取了

	int a, b;char ch[3];//例如输入3,5
	cin >> a;//读入3
	ch[0] = cin.get();//读入‘,’
	cout << a << endl;
	cin >> b;//读入5
	ch[1] = cin.get();//读入‘\n’(不是必须的)
	cout << b << endl;

4.根据输入动态分配内存

	
	//一维数组
	int a;
	cin>>a;
	int *p=new int[a];
	...
	delete [] p;
	//使用malloc
	p=(int*)malloc(sizeof(int)*a)
	
	//二维数组
	int m,n;
	cin>>m>>n;
	int** p=new int*[m];
	for(int i=0;i<m;i++)
		p[i]=new int[n];
	for(int i=0;i<m;i++)	
		delete[] p[i];
	delete[] p[];
	
	//使用malloc
	cin>>m>>n;
	a=(int**)malloc(sizeof(int*)*m);
	for(i=0;i<m;i++)
	{
	a[i]=(int*)malloc(sizeof(int)*n);
	}

ps

C++中有系统定义的排序函数sort在头文件algorithm中

int a[]={2,4,1,3,5};
sort(a,a+5);//第一个参数是数据的第一个地址,第二个是最后一个数据的地址,还有第三个参数,用于排序顺序,默认为从小到大
sort(a,a+5,compare);//从大到小排序
bool compare(int a,int b){
	return a>b;
}

5.cin.get和cin.getline

转csdn链接

ps

关于stringstream
把string类型的数据进行数据流操作,可以进行数据的自动转换

	string s;
    getline(cin,s);//输入abc 123
    stringstream stream(s);//也可以直接stream<<"this is input";
    int a;
    string s1;
    stream >> s1 >> a;
    cout << a << " " << s1 << endl;
	stream.str(" ")

二、输出

1.循环输出

除了for(int i...),对于遍历输出,使用for(auto:c n)更方便快捷

2.使用逗号,最后一个没有逗号

这种就是在循环中最后一个不输出,自己手动写一个cout

posted @ 2021-09-15 17:09  zero-ng  阅读(341)  评论(0)    收藏  举报