小 z 想找份实习 2020-01-25 14:32 采纳率: 0%
浏览 306

求各位大佬帮忙,PAT1031 查验身份证

大佬能不能帮我看看为什么这个答案输出总是循环的一个身份证,而不是多个有问题的身份证?

图片说明图片说明图片说明
图片说明

#include<cstdio>
#include<cstring>
char find[15] = {'1','0','X','9','8','7','6','5','4','3','2'} ;
int power[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int main()
{
    int n;
    int result = 0;
    int number = 0;
    char str[20];
    char * wrong[20];
    scanf("%d", &n);
    for(int j = 0; j < n; j++)
    {
        int i = 0;
        scanf("%s", str);
        for(i = 0; i < 17; i++)
        if(str[i] >= '0' && str[i] <= '9')
        result += (str[i]-'0')*power[i];
        else
        break;

        if(i < 17)
        wrong[number++] = str;
        else if(find[result % 11] != str[17])
        wrong[number++] = str;
    }
    if(number == 0)
    printf("All passed\n");
    else
    {
        for(int j = 0; j < number; j++)
        printf("%s\n", wrong[j]);
    }

    return 0;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-01-25 23:45
    关注

    问题解决的话,请点下采纳

    // Q1052502.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    
    #include<cstdio>
    #include<cstring>
    #include<stdlib.h>
    char find[15] = {'1','0','X','9','8','7','6','5','4','3','2'} ;
    int power[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
    int main()
    {
        int n;
        int result = 0;
        int number = 0;
        char str[20];
        char * wrong[20];
        for (int i = 0; i < 20; i++)
            wrong[i] = (char *)malloc(sizeof(char) * 100);
        scanf("%d", &n);
        for(int j = 0; j < n; j++)
        {
            int i = 0;
            scanf("%s", str);
            for(i = 0; i < 17; i++)
            if(str[i] >= '0' && str[i] <= '9')
            result += (str[i]-'0')*power[i];
            else
            break;
    
            if(i < 17)
            strcpy(wrong[number++], str);
            else if(find[result % 11] != str[17])
            strcpy(wrong[number++], str);
        }
        if(number == 0)
        printf("All passed\n");
        else
        {
            for(int j = 0; j < number; j++)
            printf("%s\n", wrong[j]);
        }
    
        return 0;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Fluent udf 编写问题
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突