[英]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.