文章

67

粉丝

207

获赞

29

访问

37.4k

头像
查找学生信息 题解:
P1177 北京大学上机题
发布于2024年1月11日 13:34
阅读数 706

有大佬可以帮我看一下这个题吗,输出超范围

 

#include <iostream>
#include <string.h>
using namespace std;
int main(){
    int n,m;
    int a[100],index=0;
    char  b[100][10];
    char cc[]="BeiJu";
    while(1){
    cin >> n;
    cin >> m;
    if(n==0||m==0)
        break;
    for(int i=0;i<100;i++){
        a[i]=0;
        for(int j=0;j<10;j++)
            b[i][j]=0;}
    int c=0;
    for(int i=0;i<n;i++)
        cin >> a[i];
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            //if(...

登录查看完整内容


登录后发布评论

2 条评论
snake VIP
2024年1月12日 19:29

这个代码有几个问题,第一是数组范围开小了,每个案例第一行两个整数N,M,2 <= N ,M<= 200。

第二是多组数组不要用while(1),把第一个输入放进while就可以

第三是多输出了空行,其中puts就带有换行,不需要再加cout<<endl;

修改代码如下:

#include <iostream>
#include <string.h>
using namespace std;
int main(){
    int n,m;
    int a[300],index=0;
    char  b[300][300];
    char cc[]="BeiJu";
    while(cin >> n){
    cin >> m;
    if(n==0||m==0)
        break;
    for(int i=0;i<300;i++){
        a[i]=0;
        for(int j=0;j<300;j++)
            b[i][j]=0;}
    int c=0;
    for(int i=0;i<n;i++)
        cin >> a[i];
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            //if(i==j)
                //continue;
            if(a[i]==a[j]&&i!=j)
            index++;
            if(j==n-1&&index==0){

            strcpy(b[c],cc);
            c++;
                break;
            }
             if(j==n-1){
                 if(index>=1&&index<10){
                 b[c][0]='0'+index;
                 c++;}
                 else if(index>=10&&index<100)//书号为两位数
                 {
                     b[c][1]='0'+index%10;
                     b[c][0]='0'+index/10;
                     c++;
                 }
                 else {//三位数
                     b[c][2]='0'+index%10;
                     b[c][1]='0'+index/10%10;
                     b[c][0]='0'+index/100;
                     c++;
                 }
             }
        }
    //    cout << c;
        index=0;
    }
    for(int i=0;i<c;i++)
        puts(b[i]);
    //cout << endl;
    }
//    system("pause");
    return 0;
}

 

赞(0)

孙某人 : 回复 snake: 谢谢大佬,感谢感谢

2024年1月12日 19:42