• PAT:1031. 查验身份证(15) AC


    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
      int weight[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
      char M[15]={'1','0','X','9','8','7','6','5','4','3','2'};
      int n;
      bool TAG=true;          //是否全都没问题的标志
      scanf("%d",&n);
      for(int t=0 ; t<n ; ++t)
      {
        char str[20];
        scanf("%s",str);
        int len=strlen(str);
        int sum=0;
        bool tag=true;        //每一轮是否有问题的小标志
        for(int i=0 ; i<len-1 ; ++i)
        {
          
          int tmp=str[i]-'0';
          if(tmp>=0 && tmp<=9)  //判断前16位是否有字母,for到len-1
            sum+=tmp*weight[i];
          else
          {
            tag=0;        //前16位有字母,非法输入
            break;
          }
        }
        int Z=sum%11;        //判断最后一位是否正确
        if(M[Z]!=str[len-1])
          tag=0;
        if(0==tag)          //如果号码有问题,输出
        {
          TAG=false;        //至少一个有问题
          puts(str);
        }
      }
      if(true==TAG)          //全都没问题
        printf("All passed");
      //system("pause");
      return 0;
    }
  • 相关阅读:
    元祖操作
    列表操作
    字符串操作
    zabbix监控脚本
    nginx 使用php-fpm的配置php环境参数
    网卡切换脚本
    mysql数据备份脚本
    docker概念
    网络链路质量监控smokeping
    搭建speedtest
  • 原文地址:https://www.cnblogs.com/Evence/p/4296342.html
Copyright © 2020-2023  润新知