信息学奥赛C++ 2024-02-04 13:44 采纳率: 0%
浏览 18

gesp三级6月真题2023编程第1题

请各位解答此题

img


我的代码:

#include<iostream>
#include<string>
#include<cstring> 
using namespace std;
int N,M;
string students_num;
int main(){
    cin>>N>>M;
    for(int i=0;i<=N-1;i++){
        cin>>students_num[i];
    }
    int numbers[1100];
    for(int i=0;i<=N-1;i++){
        numbers[i]=i;
    }
    string finding;
    for(int i=0;i<=M-1;i++){
        finding[i]=students_num.find(i);
    }
    
    for(int i=0;i<=M-1;i++){
        if(finding[i]=='-1'){
            bool mes=false;
            mes=true;
            break;
        }
        else{
            goto all_student_num_correct;
        }
    }
    all_student_num_correct:
        cout<<M;
        return 0;
    int mes=true;
    string student_not_num;
    if(mes==true){
        for(int i=0;i<=M-1;i++){
            student_not_num[i]=finding.find('-1');
        }
    }
    int student_not_num_int=stoi(student_not_num);
    int not_num_out[1100];
    for(int i=0;i<=M-1;i++){
        students_num[student_not_num_int[i]]=not_num_out[i];
    }
    string int_to_string;
    for(int i=0;i<=M-1;i++){
        int_to_string[i]=to_string(not_num_out[i]);
    }
    for(int i=0;i<int_to_string[i];i++){
        cout<<not_num_out[i]<<" "; 
    }
    return 0;
} 

  • 写回答

2条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-02-04 13:45
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    您提供的代码存在一些问题,首先该代码并未完全解答GESP三级6月真题2023编程第1题(由于未提供题目具体内容,我无法针对性地给出修正后的代码)。不过,根据您给出的代码片段,可以发现以下几点问题:

    1. students_num字符串在循环中读取时没有正确使用std::string的索引。应该用students_num += std::to_string(i);students_num.push_back(std::cin.get());等方式添加字符。

    2. finding[i]=students_num.find(i);这里的逻辑有误,find函数不会接受整数作为查找字符,应该是查找某个具体的字符或者子串。

    3. 使用了标签(all_student_num_correct:)和goto语句,这在现代C++编程中并不推荐,可以通过逻辑判断优化。

    4. 代码结构混乱,存在多次返回0,且变量定义的位置不恰当,如messtudent_not_num等。

    5. 对于转换和输出的部分,比如将数字转换为字符串并输出,您的代码处理方式也是错误的。

    请根据实际题目要求重新梳理思路并编写代码。若能提供具体试题内容,我将能够为您提供更准确的帮助。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月4日