我买个橘子去 2022-10-19 10:56 采纳率: 66.7%
浏览 85
已结题

大一c语言实验,不可字符串和数组

img


c语言实验题,不可用字符串,不可用数组,求解答,比较急,求帮助

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-10-19 11:02
    关注

    不能用字符串,那可以两个办法,一是一个大整数,二是getchar逐个字符接收处理,没说不让用字符吧?不过题意应该是大整数。17位,用long long就可以了

    int main()
    {
    
        int N;
        scanf("%d",&N);
        for(int i=1;i<=N;i++)
        {
            long long n;
            scanf("%lld",&n);
            long long a = n;
            int m = n%10;
            n = n/10;
            long long t = pow(10.0,16);
            int k = 16;
            int sum = 0;
            while(n>0)
            {
                int s;
                switch(k)
                {
                case 16:
                    s = 7;
                    break;
                case 15:
                    s = 9;
                    break;
                case 14:
                    s = 10;
                    break;
                case 13:
                    s = 5;
                    break;
                case 12:
                    s = 8;
                    break;
                case 11:
                    s = 4;
                    break;
                case 10:
                    s = 2;
                    break;
                case 9:
                    s = 1;
                    break;
                case 8:
                    s = 6;
                    break;
                case 7:
                    s = 3;
                    break;
                case 6:
                    s = 7;
                    break;
                case 5:
                    s = 9;
                    break;
                case 4:
                    s = 10;
                    break;
                case 3:
                    s = 5;
                    break;
                case 2:
                    s = 8;
                    break;
                case 1:
                    s = 4;
                    break;
                case 0:
                    s = 2;
                    break;
                }
                sum += n/t*s;
                n%=t;
                t/=10;    
                k--;
            }
            sum%=11;
            int M = 0; 
            if(sum == 0)
                M = 1;
            else if(sum == 1)
                M = 2;
            else if(sum >= 3)
                M = 12-sum;
            if(M == m)
                printf("%lld Passed",a);
            else
                printf("%lld Fail",a);
            printf("\n");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月27日
  • 已采纳回答 10月19日
  • 创建了问题 10月19日

悬赏问题

  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥15 统计大规模图中的完全子图问题
  • ¥15 使用LM2596制作降压电路,一个能运行,一个不能
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错