1. 程式人生 > 程式設計 >C++ 輸入一行數字(含負數)存入陣列中的案例

C++ 輸入一行數字(含負數)存入陣列中的案例

看了一些部落格後發現對C++獲取輸入數到陣列中有些執行錯誤,是因為沒有載入C的標準庫。

其實以下程式碼使用C語言更加合理,但是C的輸入輸出過於繁瑣,因此使用了C++來寫。

程式碼功能:

獲取鍵入的數字儲存到陣列中,數字包括正數和負數,不錄入空格鍵和換行符。

程式碼段:

#include<iostream>
#include <stdio.h>
using namespace std;
int main()
{ int i=0;
 int a;
 int num_in[40];
 char c;
 cin>>a; //想要儲存的數的數目
 while(i<a)
 {
  c=getchar(); //獲取輸入字元
  if((c>='0'&&c<='9')||c=='-') //輸入正整數、負整數
 {
 ungetc(c,stdin);
 cin>> num_in[i++];
 }
 }
  for(int j=0;j<i;j++)
  {
   cout<<"a["<<j<<"]:"<<num_in[j]<<endl;
  }
  return 0;
 }

結果如下圖:

C++ 輸入一行數字(含負數)存入陣列中的案例

補充知識:C++把輸入的一連串逗號分隔的數字存到陣列

需求:

輸入一連串數字,數字之間逗號隔開,把數字存到陣列或者向量裡。

程式碼:

#include <iostream>
#include <string>
#include <vector>
#include "stdio.h"
using namespace std;
int main ()
{
 string s;
 while(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);
  }
  //printf
  for (int i=0; i<nums.size(); i++) {
   printf ("%d\n",nums[i]);
  }
 }
 return 0;
}

以上這篇C++ 輸入一行數字(含負數)存入陣列中的案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。