陈7嘎嘎厉害 2023-11-13 22:24 采纳率: 37.5%
浏览 46
已结题

PTA 7-3 判断题.

img

#include<stdio.h>
int main(){
    int n=0,m=0,i=0,j=0,k=0,sum[10001];
    int a[101],b[101],d[101];
    scanf("%d %d",&n,&m);
    for(i=0;i<m;i++){
        scanf("%d",&a[i]);
    }for(i=0;i<m;i++){
        scanf("%d",&b[i]);
    }
    for(i=0;i<n;i++){
        sum[i]=0;
        for(j=0;j<m;j++){
            scanf("%d",&d[j]);
            
            if(d[j]==b[j]){
                
                sum[j]+=a[j];}
            
        }
}
        for(i=0;i<n;i++){
            printf("%d\n ",sum[i]);
        }
        return 0;
        
    }

    我的答案有问题,是2,1,6

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-14 08:41
    关注

    【以下回答由 GPT 生成】

    #include <stdio.h>
    int main() {
        int n = 0, m = 0, i = 0, j = 0, k = 0, sum[10001];
        int a[101], b[101], d[101];
    
        scanf("%d %d", &n, &m);
    
        for (i = 0; i < m; i++) {
            scanf("%d", &a[i]);
        }
    
        for (i = 0; i < m; i++) {
            scanf("%d", &b[i]);
        }
    
        for (i = 0; i < n; i++) {
            sum[i] = 0;
            for (j = 0; j < m; j++) {
                scanf("%d", &d[j]);
                if (d[j] == b[j]) {
                    sum[i] += a[j];  // 此处应该累加到sum[i]而不是sum[j],因为外层循环为i
                }
            }
        }
    
        for (i = 0; i < n; i++) {
            printf("%d\n", sum[i]);
        }
    
        return 0;
    }
    

    在原代码中,sum应该在对应的循环中累加,而且内部循环的累加应该加到sum[i]而不是sum[j]。已经优化并修改了代码,上述代码应该可以达到预期的效果。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月13日