m0_62282054 2022-02-19 21:45 采纳率: 89.6%
浏览 20
已结题

出现这样的结果是为什么,应该如何修改代码




#include<stdio.h>
#include<string.h>
int main()
{
    int n,m,sum;
    char a[100][18];
    int i,k,p;
    int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    char c[17]={'1','0','X','9','8','7','6','5','4','3','2'};
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s",a[i]);
    }
    for(i=0;i<n;i++)
    {
        m=0;
        sum=0;
        for(k=0;k<17;k++)
        {
            if(a[i][k]>='0'&&a[i][k]<='9')
            {
                m++;
                sum=sum+(a[i][k]-'0')*b[k];
            }
            else
            {
            printf("%s",a[i]);
            printf("\n");
            break;
            }
        } 
        sum=sum%11;
        if(c[sum]==a[i][17]) 
        p++;
        else  
        {
          printf("%s",a[i]);
          printf("\n");
        }
        if(p==n) printf("All passed");
        
    
    } 
} 


img

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/0814267725461

  1. 56.jpeg "#left")
  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-02-20 00:28
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int n,m,sum;
        char a[100][20]; //char a[100][18];
        int i,k,p;
        int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
        char c[17]={'1','0','X','9','8','7','6','5','4','3','2'};
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%s",a[i]);
        }
        for(i=0,p=0;i<n;i++)//for(i=0;i<n;i++)
        {
            //m=0;
            sum=0;
            for(k=0;k<17;k++)
            {
                if(a[i][k]>='0' && a[i][k]<='9')
                {
                    //m++;
                    sum=sum+(a[i][k]-'0')*b[k];
                }
                else
                {
                    printf("%s\n",a[i]);
                    //printf("\n");
                    break;
                }
            }
            if(k < 17) continue;  //修改
                    //sum=sum%11;
            if(c[sum%11]==a[i][17])
                 p++;
            else
            {
                printf("%s\n",a[i]);
                    //printf("\n");
            }
        }
        if(p==n) printf("All passed");//修改
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月19日

悬赏问题

  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?