1. 程式人生 > >c++線上編寫程式,常見的輸入資料格式 和本地編譯器輸入的區別

c++線上編寫程式,常見的輸入資料格式 和本地編譯器輸入的區別

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) 輸入一個字串存入字元陣列中

輸入:

    [email protected]@&&abnssdd

因為string型別本來就是一個數組型別:
int main()
{
string array;
	getline(cin, array);//或者直接cin>>array;   但是在vs編譯器中只能用getline
return 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型別轉換成Int
			array.push_back(temp);
		}	
	}
   return 0;
}

方法二:參考網上
int main()
{
string s;
	cin >> s;
	vector<int>nums;
	char *str = (char *)s.c_str();//string --> char
	const char *split = ",";
	char *p = strtok(str, split);//逗號分隔依次取出
	int a;
	while (p != NULL) {
		sscanf(p, "%d", &a);//char ---> int
		nums.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型別轉換成Int
				array.push_back(temp);			
			}		
		}	
	}
 return 0;
}


後序補充。。。。。

相關推薦

c++線上編寫程式常見輸入資料格式 本地編譯器輸入區別

PS:線上程式設計系統的輸入方式和vs輸入方式稍微有點不一樣:所以直接用線上編的程式用vs除錯的時候就有點不同,因為線上程式設計系統會自動判斷資料輸入的結束,而在vs中就需要手動控制輸入的結束。 (1)輸入一行陣列,中間用空格隔開:    例如:輸入 1 2 3 4 5

使用C語言編寫程式計算N個整數的(隨機輸入一個值例如1到100之間所有整數的

第一種方法:使用迴圈 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int Add(

使用C語言編寫程式求任意兩個整數的較大值

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define max(a,b)((a>b?a:b)) int main() {

使用C語言編寫程式求解有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個序列的前20項

使用C語言編寫程式,求解有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個序列的前20項 void test() {  //思路:找規律->從3/2開始 下一個數的分

習題 13.1 輸入三角形的三邊abc計算三角形的面積的公式是。。。編寫程式輸入abc檢查abc是否滿足以上條件如不滿足由cerr輸出有關出錯資訊。

C++程式設計(第三版) 譚浩強 習題13.1 個人設計 習題 13.1 輸入三角形的三邊a,b,c,計算三角形的面積的公式是 a r

輸入一行字元分別統計出其中英文字母、空格、數字其他字元的個數。(用c++語言編寫程式)【寫的第1篇部落格很高興

#include<stdio.h> int main() { char ch; //定義ch為字元型變數 int a=0,b=0,c=0,d=0; //定義a,b,c,d為整型變數並賦初值 while(scanf("%c",&ch),ch!=’\n’) //輸入字元直到c

編寫程式它從標準輸入讀取c原始碼並驗證所有的花括號都正確的成對出現

int main() { int ch = 0; int count = 0; while ((ch = getchar()) != EOF)//ctrl z { if (ch == '{') count++; else if (ch

c語言編寫程式輸入任意一個年份月份列印當月日曆。”

日常生活中我們所見到的日曆如圖所示: 程式碼思路: 1. 我們想列印某年某月的日曆,我們就得知道這個月是從星期幾開始,且這個月有多少天。 2. 要想知道這個月是從星期幾開始的,就得知道上一個月的最後一天是星期幾,要想知道上一個月的最後一天是星期幾,就得

編寫程式輸入一個年份判斷該年是否是閏年。如果是閏年輸出“yes”否則輸出“no”。 將下面的程式填寫完整。

撰寫人——軟工二班——陳喜平 題目描述 編寫程式,輸入一個年份,判斷該年是否是閏年。如果是閏年,輸出“yes”,否則輸出“no”。 將下面的程式填寫完整。 #include <stdio.h> int main() { int y; while (sc

編寫程式從鍵盤輸入 一個 英文字母(有若干行)。如果是大寫字母則輸出它對應的小寫字母;如果是小寫字母則輸出它對應的大寫字母。

撰寫人——軟工二班——陳喜平 題目描述 編寫程式,從鍵盤輸入 一個 英文字母(有若干行)。如果是大寫字母,則輸出它對應的小寫字母;如果是小寫字母,則輸出它對應的大寫字母。 輸入 一個英文字母。(有多組測試資料) 輸出 對應的小寫或者大寫字母,輸出後換行。 樣例輸入 A q 樣例輸

編寫程式輸入球到半徑計算並輸出球的體積。圓周率取3.14159。

撰寫人——軟工二班——陳喜平 題目描述 編寫程式,輸入球到半徑,計算並輸出球的體積。圓周率取3.14159。 輸入 球到半徑。 輸出 球的體積。注意:保留3位小數,輸出後換行。 樣例輸入 10 樣例輸出 4188.787 提示 來源 hnldyhy #include<stdio

編寫一個程式指定一個資料能自動計算出其總容量

package filetest;import java.io.File;import java.io.IOException; public class FileEdit { double size=0.0; //計算檔案或資料夾的大小,單位MB public double getSize(File fi

編寫程式判斷從鍵盤輸入的字元中數字的個數 大寫字母的個數小寫字母的個數其他字元的個數以*作為字元輸出的標誌

#include <stdio.h> #include <string.h> int main() { char x[1000]; printf("請輸入字串:\n"); gets(x); int l=strlen(x); int a

Python 編寫程式使用者輸入一個列表兩個整數作為下標然後使用切片獲取並輸出列表中結餘兩個下標之間的元素組成的子列表。

編寫程式,使用者輸入一個列表和兩個整數作為下標,然後使用切片獲取並輸出列表中結餘兩個下標之間的元素組成的子列表。例如,使用者輸入 [1,2,3,4,5,6]和2,5,程式輸出[3,4,5] 練習題 2018.10.11 x = int(input("輸入下標下限:"))

編寫一個應用程式使用者分別從兩個文字框輸入學術的姓名分數

package JAVA1; import java.awt.Button;   import java.awt.Label;   import java.awt.event.ActionEvent;   import java.awt.event.ActionListener;   import java.

編寫程式輸入的年、月、日給出該天是該年的第多少天?

public class TimeOver { public static void mDate(String date){ int dateSum = 0; int year = Integ

編寫程式判斷輸入的字串是否迴文

import java.util.Scanner; public class WordsTest {public static void main(String[] args) {Scanner reader=new Scanner(System.in);System.o

1、編寫程式輸入一個四位數列印輸出其個位數、十位數、百位數千位數。

上週日遇到一些事情 來不及更新 非常抱歉 #include <stdio.h> int main() { int a,b,c,d,e; printf