簡體   English   中英

如何在C程序中將長整數與不同的數字相乘?

[英]How do I multiply a long integer with different numbers in C program?

我對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;

現在,我正在執行此操作:元素1 * 1元素2 * 2元素3 * 1但是我該怎么做,如果輸入123456789與不同的數字相乘,可以這樣說:

123456789
121212121

好吧,我不太明白你在問什么。 無論如何希望這是您正在尋找的.....

 #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;
 }

我確定已經編寫了Luhn算法解決方案供您參考,但是現在我將要發明自己的技術,以進行逐步介紹。

由於您的輸入只有9位數字,因此它將適合普通的32位變量。 我將使用unsigned ,假設它是32位或更大,但對於生產代碼,您可能希望使用inttypes.h uint32_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 ...

這不是一個單一的數學運算,因為Luhn的進位對於魔術數字技巧來說太奇怪了,但是它仍然比一堆個位數的scanf調用和數組存儲要簡單得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM