吉大秦少游 2018-11-14 05:27 采纳率: 0%
浏览 829
已采纳

1072 开学寄语,AC时三个测试都通不过,提示格式错误,答案错误,求助

 //1072 开学寄语v1
#include <iostream>
#include <map>
using namespace std;

int main(){
    int N,M,i,j,t,tem,stucnt=0,goods=0,n;   cin>>N>>M;
    int check[M];
    string name;
    map<string,int> mp;
    for(i=0;i<M;i++)    cin>>check[i];

    for(i=0;i<N;i++){   //N个学生 
        int k=1;
        cin>>name>>n;
        for(j=0;j<n;j++){
            cin>> tem;
            for(t=0;t<M;t++){
                if(tem==check[t]){
                    goods++;    //存在一件,要被计数 
                    if(k==1){   //只输出一遍姓名 
                        k--;
                        cout<<name<<":";
                    }
                    if(k==0)    cout<<" "<<tem; //每次输出物品编号前有个空格 
                    if(mp[name]==0){
                        mp[name]++;
                        stucnt++;
                    }   
                }
            }
            if(j==n-1)  cout<<endl;
        }
    }
    cout<<stucnt<<" "<<goods<<endl; 
    return 0;
}
  • 写回答

3条回答

  • Italink 2018-11-14 14:34
    关注

    2个错误
    1:由于物品为4位的数字,而你用int接受之后,会舍弃前面的0,要么你改用string,要么用iomanip里的函数或者printf控制输出
    2,换行的问题,如果某个学生没有违禁物品,就不用输出他的信息(k仍为1);

     #include <iostream>
    #include<string>
    #include<iomanip>
    #include <map>
    using namespace std;
    int main() {
        int N, M, i, j, t, tem, stucnt = 0, goods = 0, n;   cin >> N >> M;
        int check[8];
        string name;
        map<string, int> mp;
        for (i = 0; i < M; i++)
            cin >> check[i];
        for (i = 0; i < N; i++) {   //N个学生 
            int k = 1;
            cin >> name >> n;
            for (j = 0; j < n; j++) {
                cin >> tem;
                for (t = 0; t < M; t++) {
                    if (tem == check[t]) {
                        goods++;    
                        if (k == 1) {  
                            k--;
                            cout << name << ":";
                        }
                        if (k == 0)
                            cout << " " << setw(4) << setfill('0') << tem; //ERROR 1
                        if (mp[name] == 0) {
                            mp[name]++;
                            stucnt++;
                        }
                    }
                }
                if (j == n - 1 && k == 0)   //ERROR 2
                    cout << endl;
            }
        }
        cout << stucnt << " " << goods << endl;
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败