LOADING

加载过慢请开启缓存 浏览器默认开启

ACM格式输入(二)

2023/4/13 c++ C++ ACM 刷题

c++常用的输入输出方法

案例

一维数组:

输入包含一个整数n代表数组长度。
接下来包含n个整数,代表数组中的元素
3
1 2 3

int n;
scanf("%d",&n); // 读入3,说明数组的大小是3
vector<int> nums(n); // 创建大小为3的vector<int>
for(int i = 0; i < n; i++) {
    cin >> nums[i];
}

// 验证是否读入成功
for(int i = 0; i < nums.size(); i++) {
    cout << nums[i] << " ";
}
cout << endl;

若是不限定输入数据的大小

vector<int> nums;
int num;
while(cin >> num) {
    nums.push_back(num);
    // 读到换行符,终止循环
    if(getchar() == '\n') {
        break;
    }
}
// 验证是否读入成功
for(int i = 0; i < nums.size(); i++) {
    cout << nums[i] << " ";
}
cout << endl;

二维数组

例如

输出N行,每行M个空格分隔的整数。每个整数表示该位置距离最近的水域的距离。
4 4
0110
1111
1111
0110

int n,m;
int res[n][m];
//vector<vector<int>>res(n,vector<int>(n));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        scanf("%d",&res[i][j]);
    }
}
// 验证是否读入成功
for(int i = 0; i < m; i++) {
    for(int j = 0; j < n; j++) {
        cout << matrix[i][j] << " ";
    }
    cout << endl;

再附加每行数据用特殊字符给隔开的限制

int m; // 接收行数
int n; // 接收列数

cin >> m >> n;

vector<vector<int>> matrix(m);

for(int i = 0; i < m; i++) {
    // 读入字符串
    string s;
    getline(cin, s);
    
    // 将读入的字符串按照逗号分隔为vector<int>
    vector<int> vec;
    int p = 0;
    for(int q = 0; q < s.size(); q++) {
        p = q;
        while(s[p] != ',' && p < s.size()) {
            p++;
        }
        string tmp = s.substr(q, p - q);
        vec.push_back(stoi(tmp));
        q = p;
    }
    
    //写入matrix
    matrix[i] = vec;
    vec.clear();
}

// 验证是否读入成功
for(int i = 0; i < matrix.size(); i++) {
    for(int j = 0; j < matrix[i].size(); j++) {
        cout << matrix[i][j] << " ";
    }
    cout << endl;
}

结构体输入:

第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
… … …
第 n+1 行:第 n 个学生的姓名 学号 成绩

3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95

struct Student{
  char name[11];
  char subject[11];
  int score;
};
int main(){
    int n;
    scanf("%d",&n);
    Student* s = new Student[n];
    for(int i=0;i<n;i++){  
       cin>>s[i].name>>s[i].subject>>s[i].score;
    }
    return 0;
}
本文作者:GWB
当前时间:2023-11-09 11:11:12
版权声明:本文由gwb原创,本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 国际许可协议。
转载请注明出处!