注册 登录
编程论坛 C语言论坛

求大神帮忙改改代码

FAMASXP 发布于 2020-04-21 13:22, 2372 次点击
#include<math.h>
main()
{
double a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,x,s
int hcf(int,int);
int lcd(int,int,int)
printf("17:\n");
scanf("%d%d,&a,&d,&c,&d,&e,&f,&g,&h,&i,&j,&k,&l,&m,&n,&o,&p,&q");
x=7*a+9*b+10*c+5*d+8*e+4*f+2*g+1*h+6*i+3*j+7*k+9*l+10*m+5*n+8*o+4*p+2*q
printf("sine of %lf is &lf\n"x);
}
这个代码的本意是想要让用户输入17个数,把他按照倒数第三行的顺序相加,用12-x/11的余数,再/11余数为值s。然后返回得数s(只写到了x,后面的不会写了)。
谢谢大佬,错误是在main函数第五行(int hcf……)
6 回复
#2
rjsp2020-04-21 13:52
求身份证的最后一位吧

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned long long id;
    if( scanf("%llu",&id)!=1 || id<10000000000000000ull || id>=100000000000000000ull )
    {
        puts( "只能输入身份证前17位." );
        return 1;
    }

    unsigned sum = 0;
    const unsigned a[17] = { 2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7 };
    unsigned long long t = id;
    for( size_t i=0; i!=17; ++i )
    {
        sum += t%10 * a[i];
        t /= 10;
    }
    char check = "10X98765432"[sum%11];
    putchar( check );
}

#3
FAMASXP2020-04-21 21:52
输入17位后,然后是puts后面的字,没有第18位
11111111111111111
只能输入身份证前17位.
[Process completed (code 1) - press Enter]
 只有这些,请问第18位是哪一个?
(那串1是17位身份证号码)

附:(是求最后一位的,大佬牛批)
#4
FAMASXP2020-04-21 21:53
我用的是c语言编译器
#5
rjsp2020-04-21 22:59
以下是引用FAMASXP在2020-4-21 21:53:12的发言:

我用的是c语言编译器

巧啦,我用的也是c语言编译器。
如果不是的话,在C语言板块不用C语言,那应该算得上捣乱了吧?
#6
FAMASXP2020-04-21 23:34
那这个问题怎么办呢?
我这个是最新版的,点击开始以后就是这样。
只能输入身份证前17位.
[Process completed (code 1) - press Enter]
在哪儿能看到第18位的值呢?
#7
八画小子2020-04-22 17:59
没仔细看,应该是计算身份证第18位的校验位数值的吧。
1