找出任何数字的第一个和最后一个数字的总和
我想写一个程序,找出通过键盘输入的任何数字的第一个和最后一个数字的总和。 例如,我输入了52264.输出必须是5+4 = 9
。
是的,这是一项任务。
好吧,最后一位数字很容易搞清楚,对吗?
int lastDigit = input % 10;
至于第一个数字,我不确定最有效的方法。 我想到的第一个想法是:
int firstDigit = input; while (firstDigit >= 10) { firstDigit /= 10; }
所以,以52264为例:
int lastDigit = 52264 % 10; // 52264 % 10 = 4 int firstDigit = 52264; firstDigit /= 10; // 5226 firstDigit /= 10; // 522 firstDigit /= 10; // 52 firstDigit /= 10; // 5 -- less than 10
int n; cin >> n; int num1 = n % 10; int num2 = n; while (num2 >= 10) num2 /= 10; cout << num1+num2 << endl;
另一种方法是将输入视为字符串。
char buf[BUFSIZ]; char *p; char bufTemp1[2]; char bufTemp2[2]; int sum; fgets(buf, sizeof(buf), stdin); if ((p = strchr (buf, '\n')) != NULL) { *p = '\0'; } bufTemp1[0] = buf[0]; bufTemp1[1] = '\0'; strncpy (bufTemp2, &buf[strlen(buf)-1], 1); bufTemp2[1] = '\0'; sum = atoi (bufTemp1) + atoi (bufTemp2);
这样做的一种更有效的方法是预先找到位数,如下所示:
uint32_t digitCount = number == 0 ? 0 : (uint32_t)(log10(abs(number))) + 1;
从那里,简化了查找第一个和最后一个数字的过程。
这应该工作。 由于输入是一个数组,您只需要查看零元素和最后一个元素,然后将它们相加。
#include #include #define MAX_LENGTH 256 int main () { char number[MAX_LENGTH]; int first, last, sum; while (scanf("%s", number) == 1 ) { first = number[0]; last = number[strlen(number)-1]; sum = atoi(&first) + atoi(&last); printf("Sum = %d\n", sum); } return 0; }
这是一个示例运行:
123456 Sum = 7 845731 Sum = 9 35846 Sum = 9 23 Sum = 5 11 Sum = 2
#include using namespace std; int main() { int sum=0; int first,last; int n; cin>>n; first=n %10; while (n!=0) { last=n/10; } sum=first+last; cout<
找出输入数字的总位数,假设它是n 。
int temp = number; int n = 0; while(temp > 0) { temp /= 10; n++; }
然后
sum = number / (int)pow(10, n - 1) + number % 10;
这是程序:
/*program to find the sum of first and last digits of a given number */ #include int main(void) { int firstdigit,lastdigit,number,sum; printf("Enter the number whose sum of first and last digit to be found: \n\n"); scanf("%d",&number); if (number >=10) { firstdigit = number; while (firstdigit >= 10) firstdigit /=10; /*firstdigit=firstdigit/10 which will neglect mantissa part;*/ lastdigit = number % 10; sum = firstdigit + lastdigit; printf("The sum of first=%d and last=%d digit is %d\n",firstdigit,lastdigit,sum); } else { printf("wrong input given\n"); } return 0; }
printf("%d\n", input[0] - '0' + input[strlen(input)-1] - '0');
b = int(raw_input()) c = str(b) d = int(c[0]) e = int(c[-1]) print d+e