找出任何数字的第一个和最后一个数字的总和

我想写一个程序,找出通过键盘输入的任何数字的第一个和最后一个数字的总和。 例如,我输入了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