Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C程序中,如何将一个长整数与不同的数相乘?_C_Arrays - Fatal编程技术网

在C程序中,如何将一个长整数与不同的数相乘?

在C程序中,如何将一个长整数与不同的数相乘?,c,arrays,C,Arrays,我对C语言编程非常陌生,我正在写一个程序,这个程序需要一个9位数的数字。在此之后,我将每个数字乘以1或2。我使用数组要求用户输入他们的数字。我想知道是否有办法将这9个数字与不同的数字相乘为一个整数,而不是使用数组?以下是我的数组代码: #include <stdio.h> int main(void) { int sin_num[9]; int num1; int num2, num11, num12; int num3, num4, num5,

我对C语言编程非常陌生,我正在写一个程序,这个程序需要一个9位数的数字。在此之后,我将每个数字乘以1或2。我使用数组要求用户输入他们的数字。我想知道是否有办法将这9个数字与不同的数字相乘为一个整数,而不是使用数组?以下是我的数组代码:

#include <stdio.h>

int main(void) {

    int sin_num[9];
    int num1;
    int num2, num11, num12;
    int num3, num4, num5, num6, num7, num8, num9, num10;



    for(num1=0; num1<9; num1++) {
            printf("Enter your SIN number one by one:");
            scanf("%d", &sin_num[num1]);
    }


    num2 = sin_num[0] * 1;
    num3 = sin_num[1] * 2;
    num4 = sin_num[2] * 1;
    num5 = sin_num[3] * 2;
    num6 = sin_num[4] * 1;
    num7 = sin_num[5] * 2;
    num8 = sin_num[6] * 1;
    num9 = sin_num[7] * 2;
    num10 = sin_num[8] * 1;

我相信已经有一些Luhn算法的解决方案可以参考,但我现在就要发明自己的解决方案,只是为了进行一次演练

由于您的输入仅为9位数字,因此它将适合普通32位变量。我将使用
unsigned
,假设它是32位或更大,但对于生产代码,您可能希望使用
inttypes.h
uint32\u t
和相关的
scanf

#include <stdio.h>

int main(void) {

    unsigned sin_num, checksum, digit;
    int i;

    printf("Enter your SIN as a 9 digit number using only digits:\n");
    if (scanf(" %9u", &sin_num) < 1) ... do error handling or just exit ...

    for (i = 0; sin_num; ++i) {
        digit = sin_num % 10;
        sin_num /= 10;
        if (i & 1) { // Double odd digits (might have this backwards; check me for your case
            digit *= 2;
            if (digit >= 10) digit = digit % 10 + digit / 10; // Luhn carry is strange
        }
        checksum += digit;
    }

    ... do whatever else you need to do ...
#包括
内部主(空){
无符号sinu_num,校验和,数字;
int i;
printf(“以9位数字形式输入SIN,仅使用数字:\n”);
如果(scanf(“%9u”,&sin_num)<1)…执行错误处理或退出。。。
对于(i=0;sin_num;++i){
数字=单数%10;
sin_num/=10;
如果(i&1){//两个奇数位数(可能是倒过来的;请检查我以了解您的情况)
数字*=2;
如果(数字>=10)数字=数字%10+数字/10;//卢恩进位奇怪
}
校验和+=数字;
}
…做任何你需要做的事情。。。

这不是一个单一的数学运算,因为Luhn的进位对于数字魔术来说太奇怪了,但它仍然比一堆个位数的
scanf
调用和数组存储简单得多。

我确信已经有Luhn算法解写出来了,你可以参考,但我现在就要发明自己的算法只是为了进行一次演练

由于您的输入只有9位,它将适合一个普通的32位变量。我将使用
unsigned
,假设它是32位或更大,但对于生产代码,您可能希望使用
inttypes.h
uint32\u t
和相关的
scanf

#include <stdio.h>

int main(void) {

    unsigned sin_num, checksum, digit;
    int i;

    printf("Enter your SIN as a 9 digit number using only digits:\n");
    if (scanf(" %9u", &sin_num) < 1) ... do error handling or just exit ...

    for (i = 0; sin_num; ++i) {
        digit = sin_num % 10;
        sin_num /= 10;
        if (i & 1) { // Double odd digits (might have this backwards; check me for your case
            digit *= 2;
            if (digit >= 10) digit = digit % 10 + digit / 10; // Luhn carry is strange
        }
        checksum += digit;
    }

    ... do whatever else you need to do ...
#包括
内部主(空){
无符号sinu_num,校验和,数字;
int i;
printf(“以9位数字形式输入SIN,仅使用数字:\n”);
如果(scanf(“%9u”,&sin_num)<1)…执行错误处理或退出。。。
对于(i=0;sin_num;++i){
数字=单数%10;
sin_num/=10;
如果(i&1){//两个奇数位数(可能是倒过来的;请检查我以了解您的情况)
数字*=2;
如果(数字>=10)数字=数字%10+数字/10;//卢恩进位奇怪
}
校验和+=数字;
}
…做任何你需要做的事情。。。

这不是一个单一的数学运算,因为Luhn的进位对于数字魔术来说太奇怪了,但它仍然比一堆个位数的
scanf
调用和数组存储简单得多。

我确信已经有Luhn算法解写出来了,你可以参考,但我现在就要发明自己的算法只是为了进行一次演练

由于您的输入只有9位,它将适合一个普通的32位变量。我将使用
unsigned
,假设它是32位或更大,但对于生产代码,您可能希望使用
inttypes.h
uint32\u t
和相关的
scanf

#include <stdio.h>

int main(void) {

    unsigned sin_num, checksum, digit;
    int i;

    printf("Enter your SIN as a 9 digit number using only digits:\n");
    if (scanf(" %9u", &sin_num) < 1) ... do error handling or just exit ...

    for (i = 0; sin_num; ++i) {
        digit = sin_num % 10;
        sin_num /= 10;
        if (i & 1) { // Double odd digits (might have this backwards; check me for your case
            digit *= 2;
            if (digit >= 10) digit = digit % 10 + digit / 10; // Luhn carry is strange
        }
        checksum += digit;
    }

    ... do whatever else you need to do ...
#包括
内部主(空){
无符号sinu_num,校验和,数字;
int i;
printf(“以9位数字形式输入SIN,仅使用数字:\n”);
如果(scanf(“%9u”,&sin_num)<1)…执行错误处理或退出。。。
对于(i=0;sin_num;++i){
数字=单数%10;
sin_num/=10;
如果(i&1){//两个奇数位数(可能是倒过来的;请检查我以了解您的情况)
数字*=2;
如果(数字>=10)数字=数字%10+数字/10;//卢恩进位奇怪
}
校验和+=数字;
}
…做任何你需要做的事情。。。

这不是一个单一的数学运算,因为Luhn的进位对于数字魔术来说太奇怪了,但它仍然比一堆个位数的
scanf
调用和数组存储简单得多。

我确信已经有Luhn算法解写出来了,你可以参考,但我现在就要发明自己的算法只是为了进行一次演练

由于您的输入只有9位,它将适合一个普通的32位变量。我将使用
unsigned
,假设它是32位或更大,但对于生产代码,您可能希望使用
inttypes.h
uint32\u t
和相关的
scanf

#include <stdio.h>

int main(void) {

    unsigned sin_num, checksum, digit;
    int i;

    printf("Enter your SIN as a 9 digit number using only digits:\n");
    if (scanf(" %9u", &sin_num) < 1) ... do error handling or just exit ...

    for (i = 0; sin_num; ++i) {
        digit = sin_num % 10;
        sin_num /= 10;
        if (i & 1) { // Double odd digits (might have this backwards; check me for your case
            digit *= 2;
            if (digit >= 10) digit = digit % 10 + digit / 10; // Luhn carry is strange
        }
        checksum += digit;
    }

    ... do whatever else you need to do ...
#包括
内部主(空){
无符号sinu_num,校验和,数字;
int i;
printf(“以9位数字形式输入SIN,仅使用数字:\n”);
如果(scanf(“%9u”,&sin_num)<1)…执行错误处理或退出。。。
对于(i=0;sin_num;++i){
数字=单数%10;
sin_num/=10;
如果(i&1){//两个奇数位数(可能是倒过来的;请检查我以了解您的情况)
数字*=2;
如果(数字>=10)数字=数字%10+数字/10;//卢恩进位奇怪
}
校验和+=数字;
}
…做任何你需要做的事情。。。

这不是一个单一的数学运算,因为Luhn的进位对于数字魔术来说太奇怪了,但它仍然比一堆个位数的
scanf
调用和数组存储简单得多。

我不太明白你在问什么。无论如何,希望这就是你想要的

 #include<stdio.h>


 int main()
 {

   long int nine_digit_num;
   int step=100000000;
   int digit,input_num,i;

   printf("Enter 9 digit number:\n");
   scanf("%ld",&nine_digit_num);


   for(i=1;i<=9;i++)
   {  
     printf("Enter a number to multiply with the %d digit:\n",i);
     scanf("%d",&input_num);
     digit=nine_digit_num/step; // this and the next step are used to
     digit=digit%10;            // obtain the individual digits.
     printf("%d*%d=%d\n",digit,input_num,digit*input_num);
     step=step/10;
  }
   return 0;
 }
#包括
int main()
{
长整数九位数;
int step=100000000;
整数位数,输入_num,i;
printf(“输入9位数字:\n”);
scanf(“%ld”和九位数);

因为(i=1;i嗯,我不太明白你在问什么。无论如何,希望这是什么