m0_74061367 2022-12-11 12:34 采纳率: 100%
浏览 39
已结题

想问一下这个完整程序

img


希望有个完整程序!我只会一个一个硬算,可以在关键部分写一下注释嘛,学习真的艰难。

  • 写回答

3条回答 默认 最新

  • 关注

    运行结果:

    img

    代码:

    #include <stdio.h>
    
    //判断是否是数字字符
    int isNumber(char c)
    {
        if(c>='0' && c<='9')
            return 1;
        else
            return 0;
    }
    
    //11010519491231002x
    //将p中的n个字符转换为数字,比如p="12345",n=2,则取前2位输出12
    int trans(char* p,int n)
    {
        int s = 0,i;
        for(i=0;i<n;i++)
        {
            if(isNumber(p[i]))
                s = s*10 + (p[i]-'0');
            else
                return -1; //非数字
        }
        return s;
    }
    
    int main()
    {
        char str[20]={0};
        int qz[18]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
        int i = 0;
        int year = 0,month=0,day = 0;
        char* p = str; //指针指向输入的字符串
        int sum = 0;
        int yzm[] ={'1','0','X','9','8','7','6','5','4','3','2'};
        scanf("%s",str); //得到字符串
    
        for(i=0;i<17;i++)//处理前17个字符
        {
            if(isNumber(str[i])==0)//如果不是数字字符说明不合法
            {
                printf("wrong\n");
                return 0;
            }else
            {
                sum += (str[i] -'0') * qz[i]; //数字位乘以对应的权值求和
            }
        }
        sum = sum%11; //求除以11的余数
        year = trans(p+6,4); //得到年份
        month = trans(p+10,2);//得到月
        day = trans(p+12,2);//得到日
        
        if(str[17]=='x') //将小写的x转成大写X,避免误判,因为上面字符数组中定义的是X
            str[17] = 'X';
        if(yzm[sum] == str[17] )
            printf("correct,出生年月为: %d年%d月%d日\n",year,month,day);
        else
            printf("wrong\n");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi