c++在线编写程序,常见的输入数据格式 和本地编译器输入的区别

来源:互联网 发布:java 全角半角转换 编辑:程序博客网 时间:2024/05/20 22:00

PS:在线编程系统的输入方式和vs输入方式稍微有点不一样:所以直接用在线编的程序用vs调试的时候就有点不同,因为在线编程系统会自动判断数据输入的结束,而在vs中就需要手动控制输入的结束。

1)输入一行数组,中间用空格隔开:

   例如:输入 1 2 3 4 5 2 8


在线编程就可以这么写:

int main(){int temp;vector<int> array;while (cin >> temp){array.push_back(temp);}return 0;}

vs编译器上就要这么写:

int main(){int temp;vector<int> array;char c;cin >> temp;array.push_back(temp);while ((c = getchar()) != '\n'){cin >> temp;array.push_back(temp);}return 0;}

需要加入头文件:#include<sstream>


(2) 输入多行,第一行数字一般表示每行输入的个数

例如输入: 

        5 6

      1 2 3 4 5

      4 5 6 6 7 7

这种情况在vs和在线输入的情况都是一样的:

根据题目的要求,可以把每一行数字放入每一个数组中

int main(){int a, b;cin >> a >> b;vector<int> arrayA, arrayB;int temp;for (int i = 0; i < a; i++){cin >> temp;arrayA.push_back(temp);}for (int i = 0; i < b; i++){cin >> temp;arrayB.push_back(temp);}return 0;}

也可以放入一个大数组中:

int main(){int a, b;cin >> a >> b;vector<int> array;int temp;for (int i = 0; i < (a + b); i++){cin >> temp;array.push_back(temp);}return 0;}

(3) 输入一个字符串存入字符数组中

输入:

    Abncd123678@@&&abnssdd

因为string类型本来就是一个数组类型:int main(){string array;getline(cin, array);//或者直接cin>>array;   但是在vs编译器中只能用getlinereturn 0;}

(4) 输入一行数组用逗号或其他符号隔开

输入:

     1,2,3,4,3,4,5

方法一:

int main(){string line;getline(cin,line);vector<int> array;for (int i = 0; i < line.length(); i++){if (line[i] != ','){int temp = (int)(line[i] - '0');//将char类型转换成Intarray.push_back(temp);}}   return 0;}

方法二:参考网上
int main(){string s;cin >> s;vector<int>nums;char *str = (char *)s.c_str();//string --> charconst char *split = ",";char *p = strtok(str, split);//逗号分隔依次取出int a;while (p != NULL) {sscanf(p, "%d", &a);//char ---> intnums.push_back(a);p = strtok(NULL, split);}return 0;}

这种方法加入头文件:#include "stdio.h"


(5) 输入多行有字数限制的数字,但是行数未知

        1 2 3 3

      2 3 4 4

      5 6 6 7

      3 4 6 7

       ........

这种情况也需要区分一下:

在线编程:

int main(){int a, b, c, d;vector<int> array;while (cin >> a >> b >> c >> d){array.push_back(a);array.push_back(b);array.push_back(c);array.push_back(d);}return 0;}

Vs编译器:

根据测试用例,自己定义输入的条件限制吧,比如测试用例为4行,定义循环个数为4

int main(){int a, b, c, d;vector<int> array;int num = 4;while (num--){cin >> a >> b >> c >> d;array.push_back(a);array.push_back(b);array.push_back(c);array.push_back(d);} return 0;}

(6) 让循环读取一行数字1 2 3;4 5 6;7 8 9” 

int main(){string line;getline(cin, line);vector<int> array;for (int i = 0; i < line.length(); i++){if (line[i] != ' '){if (line[i] == ';'){cout << "要不要放入下一个数组" << endl;}else{int temp = (int)(line[i] - '0');//将char类型转换成Intarray.push_back(temp);}}} return 0;}


后序补充。。。。。

阅读全文
0 0
原创粉丝点击