日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ OJ在线编程常见输入输出技巧与示例

發布時間:2025/3/15 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ OJ在线编程常见输入输出技巧与示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一直在leetcode上刷題,發現牛客上答題都需要自己解決輸入問題。這里記一下遇到的一些方式。

純記錄,有點亂。

1.將一行按字符輸入的數據轉換成數據

下面這個注意輸入是負數

vector<int> s;string str;getline(cin, str);int temp = 0;for (int i = 0; i != str.size(); ++i){if (isdigit(str[i])){temp =temp* 10 + (str[i] - 48);}else{s.push_back(temp);temp = 0;}if (i == (str.size() - 1)) {s.push_back(temp);}}

2.單獨輸入幾個數

cin>>n>>a>>b;

3.第一個數是數字,后面是連續字符,比如第一個輸入是為了告訴你有幾個數,后面是需要處理的字符串。

char s[100500]; int n; cin>>n>>s+1;

4.C語言連續多個輸入的判斷方式:

while(~scanf("%d%d",&n,&m)){ } //如果成功,該函數返回成功匹配和賦值的個數。如果到達文件末尾或發生讀錯誤,則返回 EOF。 //所以~scanf表示 只要輸入對了就是1.

5.C語言創建動態數組 輸入兩行,第一行為一個數組,數字之間用空格隔開,第二行表示數組的長度。

#include <stdio.h> #include<ctype.h> int main() {int N;int num[10000];int j = 0;do { //因為第一個是數字 第二個才是空格,所以用do 不然會丟失第一個數scanf_s("%d", &num[j++]);} while (getchar() != '\n');scanf_s("%d", &N);for (int i = 0; i < j; i++) {printf("%d ", num[i]);}return 0; }

一般題目要輸入一個長度為n的數組(n需要輸入),因為其長度未知,我們常規方法是建立一個足夠長的數組,如a[100],a[10000000]等。
這樣處理的缺點是會消耗大量不必要的內存。
所以可以用動態分配內存的方式創建數組。

1. malloc函數,原型:void?*malloc(unsigned?int?num_bytes)。是申請一片空間,如int?*p?=?(int?*)malloc(1*sizeof(int)),如果編譯器默認int為4字節存儲的話,那么計算結果是4Byte,一次申請一個4Byte的連續空間,并將空間基地址強制轉換為int類型,賦值給指針p,此時申請的內存值是不確定的。

2. calloc函數,原型:void *calloc(size_t n, size_t size);? ?calloc函數會將申請的空間初始化為0。由于給每一個空間都要初始化值,那必然效率較malloc要低.

3.realloc函數,原型:void?realloc(void?*ptr,?size_t?new_Size);與上面兩個有本質的區別,?用于對動態內存進行擴容(及已申請的動態空間不夠使用,需要進行空間擴容操作),ptr為指向原來空間基址的指針,?new_size為接下來需要擴充容量的大小。

? ? ? ? 如果size較小,原來申請的動態內存后面還有空余內存,系統將直接在原內存空間后面擴容,并返回原動態空間基地址;

????????如果size較大,原來申請的空間后面沒有足夠大的空間擴容,系統將重新申請一塊new_Size*sizeof(int)的內存,并把原來空間的內容拷貝過去,原來空間free;

????????如果size非常大,系統內存申請失敗,返回NULL,原來的內存不會釋放。

注意:如果擴容后的內存空間較原空間小,將會出現數據丟失,如果直接realloc(p,?0);相當于free(p)

也就是說realloc相當于重新申請了一塊new_Size*sizeof(int)大小的內存,根據實際情況決定是在原來基礎上擴容還是換個基地址。所以申請后數組首地址可能發生改變。

#include <stdio.h> #include "malloc.h" #include<ctype.h> int main() {int N;int j = 0;int *num = (int *)malloc(1 * sizeof(int));//數組*stack,malloc(size)是申請一個空間 do{scanf_s("%d", &num[j++]);num = (int *)realloc(num, sizeof(int)*(j+1));//realloc(address,size)向address上面追加size個空間 } while (getchar() != '\n');scanf_s("%d", &N);for (int i = 0; i < j; i++) {printf("%d ", num[i]);} return 0; }

6.OJ在線編程常見輸入輸出練習場

6.1 計算a+b(多組數據)

計算a+b

打開以下鏈接可以查看正確的代碼

輸入描述:

輸入包括兩個正整數a,b(1 <= a, b <= 10^9),輸入數據包括多組。

輸出描述:

輸出a+b的結果

輸入例子1:

1 5 10 20

輸出例子1:

6 30 #include <iostream> using namespace std;int main() {int a;int b;while(cin>>a>>b){cout<<a+b<<endl;}return 0; }

6.2 計算a+b(輸入包括數組個數)

計算a+b

輸入描述:

輸入第一行包括一個數據組數t(1 <= t <= 100) 接下來每行包括兩個正整數a,b(1 <= a, b <= 10^9)

輸出描述:

輸出a+b的結果

輸入例子1:

2 1 5 10 20

輸出例子1:

6 30 #include<iostream>using namespace std;int main() {int t;cin>>t;int a,b;while(t--){cin>>a>>b;cout<<a+b<<endl;}return 0; }

6.3 計算a+b(有結束標志)

計算a+b

輸入描述:

輸入包括兩個正整數a,b(1 <= a, b <= 10^9),輸入數據有多組, 如果輸入為0 0則結束輸入

輸出描述:

輸出a+b的結果

輸入例子1:

1 5 10 20 0 0

輸出例子1:

6 30 #include<bits/stdc++.h> using namespace std; int main(){int a = 0, b = 0;while(1){cin >> a >> b;if(!(a || b)) break;cout << a + b << endl;}return 0; }

6.4?計算一系列數的和(有結束標志)

計算一系列數的和

輸入描述:

輸入數據包括多組。 每組數據一行,每行的第一個整數為整數的個數n(1 <= n <= 100), n為0的時候結束輸入。 接下來n個正整數,即需要求和的每個正整數。

輸出描述:

每組數據輸出求和的結果

輸入例子1:

4 1 2 3 4 5 1 2 3 4 5 0

輸出例子1:

10 15 #include<bits/stdc++.h> using namespace std; int main(){int input = 0, output = 0, N = 0;while(1){cin >> N;if(N == 0) break;output = 0;while(N--){cin >> input;output += input;}cout << output << endl;}return 0; }

6.5?計算一系列數的和

計算一系列數的和

輸入描述:

輸入的第一行包括一個正整數t(1 <= t <= 100), 表示數據組數。 接下來t行, 每行一組數據。 每行的第一個整數為整數的個數n(1 <= n <= 100)。 接下來n個正整數, 即需要求和的每個正整數。

輸出描述:

每組數據輸出求和的結果

輸入例子1:

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

輸出例子1:

10 15 #include<bits/stdc++.h> using namespace std; int main(){int N = 0, input = 0, output = 0, n = 0;cin >> N;while(N--){cin >> n;output = 0;while(n--){cin >> input;output += input;}cout << output << endl;}return 0; }

6.6?計算一系列數的和

計算一系列數的和

輸入描述:

輸入數據有多組, 每行表示一組輸入數據。 每行的第一個整數為整數的個數n(1 <= n <= 100)。 接下來n個正整數, 即需要求和的每個正整數。

輸出描述:

每組數據輸出求和的結果

輸入例子1:

4 1 2 3 4 5 1 2 3 4 5

輸出例子1:

10 15 #include<bits/stdc++.h> using namespace std; int main(){int N = 0, input = 0, output = 0;while(cin >> N){output = 0;while(N--){cin >> input;output += input;}cout << output << endl;}return 0; }

6.7?計算一系列數的和

計算一系列數的和

輸入描述:

輸入數據有多組, 每行表示一組輸入數據。每行不定有n個整數,空格隔開。(1 <= n <= 100)。

輸出描述:

每組數據輸出求和的結果

輸入例子1:

1 2 3 4 5 0 0 0 0 0

輸出例子1:

6 9 0 #include<bits/stdc++.h> using namespace std; int main(){int input = 0, output = 0;while(cin >> input){output += input;if(getchar() == '\n'){cout << output << endl;output = 0;}}return 0; }

6.8?對輸入的字符串進行排序后輸出

對輸入的字符串進行排序后輸出

輸入描述:

輸入有兩行,第一行n第二行是n個空格隔開的字符串

輸出描述:

輸出一行排序后的字符串,空格隔開,無結尾空格

輸入例子1:

5 c d a bb e

輸出例子1:

a bb c d e #include<bits/stdc++.h> using namespace std; int main(){int N = 0;string str;vector<string> res;cin >> N;while(N--){cin >> str;res.push_back(str);}sort(res.begin(), res.end());for(auto& s : res)cout << s << " ";cout << endl;return 0; }

6.9?對輸入的字符串進行排序后輸出

對輸入的字符串進行排序后輸出

輸入描述:

多個測試用例,每個測試用例一行。每行通過空格隔開,有n個字符,n<100

輸出描述:

對于每組測試用例,輸出一行排序過的字符串,每個字符串通過空格隔開

輸入例子1:

a c bb f dddd nowcoder

輸出例子1:

a bb c dddd f nowcoder #include<bits/stdc++.h> using namespace std; int main(){string str;vector<string> res;while(cin >> str){res.push_back(str);if(getchar() == '\n'){sort(res.begin(), res.end());for(auto& s:res)cout << s << " ";cout << endl;vector<string>().swap(res);}}return 0; }

6.10?對輸入的字符串進行排序后輸出

對輸入的字符串進行排序后輸出

輸入描述:

多個測試用例,每個測試用例一行。 每行通過,隔開,有n個字符,n<100

輸出描述:

對于每組用例輸出一行排序后的字符串,用','隔開,無結尾空格

輸入例子1:

a,c,bb f,dddd nowcoder

輸出例子1:

a,bb,c dddd,f nowcoder #include<bits/stdc++.h> using namespace std; int main(){vector<string> res;string input, str;while (getline(cin, input)) {for (int i = 0; i < input.size(); i++) {if (input[i] == ',') {res.push_back(str);string().swap(str);}elsestr += input[i];}if (!str.empty()) {res.push_back(str);string().swap(str);}sort(res.begin(), res.end());for (int i = 0; i < res.size(); i++) {if (i != res.size() - 1)cout << res[i] << ",";elsecout << res[i] << endl;}vector<string>().swap(res);}return 0; }

6.11 輸出每組數的和

輸入描述:

輸入有多組測試用例,每組空格隔開兩個整數

輸出描述:

對于每組數據輸出一行兩個整數的和

輸入例子1:

1 1

輸出例子1:

2 #include <iostream> using namespace std; int main(){long a,b;while(cin>>a>>b){cout<<a+b<<endl;}return 0; }

總結

以上是生活随笔為你收集整理的C++ OJ在线编程常见输入输出技巧与示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本欧美国产一区二区三区 | 一区二区三区在线视频免费观看 | 无码人妻精品一区二区蜜桃视频 | 免费看a毛片 | 一级黄色片在线看 | 久久久久久久久久久久久久久久久久久 | 黄色1级大片 | 青青操视频在线 | 亚洲aaa级| 国产一区91| 五月激情视频 | 在线视频区 | 免费一级特黄特色毛片久久看 | 销魂奶水汁系列小说 | 91视频com| 亚洲成人福利视频 | 波多野结衣视频网址 | 午夜精品福利在线观看 | 720url在线观看免费版 | 超碰p | 十八禁一区二区三区 | 琪琪成人 | 欧美z○zo重口另类黄 | 日韩成人中文字幕 | 国产一区二区三区欧美 | 边啃奶头边躁狠狠躁 | h色视频在线观看 | 色男人影院 | 韩国三级在线播放 | 男女插插网站 | 叶山小百合av一区二区 | 欧美成人精品一区二区综合免费 | 日韩一级在线播放 | 色视频在线观看 | 欧美xxxⅹ性欧美大片 | 一区在线免费 | 欧美人与动物xxxx | 久久久久久久久久久久久久久久久久久 | 国产精品一区视频 | 国产中文字幕一区二区三区 | 成人黄色片免费看 | 日韩成人黄色 | av中文字幕一区二区 | avt天堂网 | 青青草午夜| 国产在线拍揄自揄拍无码视频 | 久久九九综合 | 欧美高清在线视频 | v888av| 国产污视频在线看 | 国产精品正在播放 | 欧美日韩一区二区三区在线 | 乱图区| 久久久精品一区二区涩爱 | 超碰男人天堂 | 国产黄a三级三级三级看三级男男 | 无码人妻丰满熟妇精品 | 激情视频91| 永久黄网站色视频免费观看w | 窝窝午夜理论片影院 | 久久99一区| 欧美手机在线 | 97精品国产97久久久久久春色 | 天天艹天天 | 精品久久无码视频 | 久久成人久久 | 久久亚洲精品石原莉奈 | 国产精彩视频在线观看 | 国产精品中文无码 | 激情免费网站 | 91嫩草欧美久久久九九九 | 很黄很色的视频 | 日韩制服在线 | 精品无码一区二区三区的天堂 | 天堂俺去俺来也www 欧美大片在线播放 | 毛片视频在线免费观看 | 初尝黑人巨炮波多野结衣 | 亚洲乱码视频在线观看 | 在线看污视频 | 爱情岛亚洲首页论坛 | 欧美不在线 | 超碰97干 | 久久精品久久精品久久精品 | 国产传媒在线观看 | 欧美影院在线 | 日韩美女久久 | 成人在线小视频 | 夜夜天天操 | 老熟女毛茸茸 | 涩涩在线看 | 91精品国产高清一区二区三密臀 | 青青草视频播放器 | 亚洲午夜在线观看 | 中文字幕制服丝袜 | xxxxwwww在线观看 | 久操视频免费在线观看 | 在线欧美一区二区 | 中国18videosex极品 | 中国极品少妇xxxx做受 |