输入多组数据,没数据结束标志或文件结束
while(cin>>a>>b)
#include <iostream>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b) cout<<a+b<<endl;
return 0;
}
输入多组数据,有结束标志
多组输入,输入整数n(n<1000000),以0结束
C++语句:while(cin>>n,n)
或:
cin>>n;
while(n)
{……… cin>>n; }
输入数据有多组,每组一行,为两个整数A和 B,以一个空格分隔。输入以0 0结束。所有数据保证在int类型表示范围内。
C++语句:
while ((cin>>a>>b)&&(a||b))
或:
cin>>a>>b;
while (a||b)
{………………….. cin>>a>>b; }
读入字符串相关
参考 C/C++读入多行字符串string
http://blog.csdn.net/summerfanl/article/details/52121566
#include<iostream>
#include<sstream> //istringstream 必须包含这个头文件
#include<string>
using namespace std;
int main()
{
string str="i an a boy";
istringstream is(str);
string s;
while(is>>s)
{
cout<<s<<endl;
}
}
返回array
#include <iostream>
#include <cstdlib>
using namespace std;
//return a 1d array
int *bigger_one(int* arr, int n){
int *a=(int *)malloc(2*sizeof(int));
int maxNum=0, maxIndex, i;
for(i=0;i<n;i++){
if(arr[i]>maxNum){
maxNum=arr[i];
maxIndex=i+1;
}
}
a[0]=maxNum;
a[1]=maxIndex;
return a;
}
int main(){
int test[3]={5,2,9};
int* ans=bigger_one(test,3);
int i;
for(i=0;i<2;i++) cout<<ans[i]<<endl;
free(ans);
return 0;
}
利用指针函数,并结合动态内存。
int *fun()
{
声明一个动态数组 a;
return a;
}
void main()
{
用指针调用函数 int *p=fun();
释放该指针 free(p); (相当于释放了指针函数里面的动态数组)
}
#include <iostream>
#include <cstdlib>
using namespace std;
//return 2d array, find the biggest num and its location in every row
int **da(int** arr,int n,int m){
int **data;
data=(int**)malloc(n*sizeof(int*));
for(int i=0;i<n;i++){
data[i]=(int *)malloc(2*sizeof(int));
}
for (int i=0;i<n;++i)
{
int maxNum=0;
for (int j=0;j<m;++j)
{
//这里改为arr[i][j]则报错
if (*((int *)arr+m*i+j)>maxNum)
{
maxNum=*((int *)arr+m*i+j);
data[i][0]=maxNum;data[i][1]=j+1;
}
}
}
return data;
}
int main(){
int mat[2][3]={
{1,3,2},
{5,6,7}
};
int** pmat=da((int**)mat,2,3);
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
cout<<pmat[i][j]<<" ";
}
cout<<endl;
}
for(int i=0;i<2;i++){
free(pmat[i]);
}
free(pmat);
return 0;
}
以上代码参考:http://blog.csdn.net/robert_chen1988/article/details/53548848
网友评论