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

时间:2010-08-22 06:23:38

标签: c

我想写一个程序,找出通过键盘输入的任何数字的第一个和最后一个数字的总和。例如,我输入了52264.输出必须是5+4 = 9

是的,这是一项任务。

10 个答案:

答案 0 :(得分:5)

嗯,最后一位数字很容易弄清楚,对吧?

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

答案 1 :(得分:3)

int n;
cin >> n;
int num1 = n % 10;
int num2 = n;
while (num2 >= 10)
     num2 /= 10;

cout << num1+num2 << endl;

答案 2 :(得分:2)

另一种方法是将输入视为字符串。

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);

答案 3 :(得分:1)

这应该有效。由于输入是一个数组,你只需要查看零元素和最后一个元素,然后总结它们。

#include <stdio.h>
#include <string.h>
#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

答案 4 :(得分:1)

#include <iostream>
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<<sum<<endl;

}

答案 5 :(得分:1)

更有效的方法是事先找到位数,如下:

uint32_t digitCount = number == 0 ? 0 : (uint32_t)(log10(abs(number))) + 1;

从那里,简化了查找第一个和最后一个数字的过程。

答案 6 :(得分:0)

找出输入数字的总位数,假设它是 n

int temp = number;
int n = 0;

while(temp > 0)
{
   temp /= 10;
   n++;
}

然后

sum = number / (int)pow(10, n - 1)  + number % 10;

答案 7 :(得分:0)

这是程序:

/*program to find the sum of first and last digits of a given number */
#include <stdio.h>

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

答案 8 :(得分:0)

printf("%d\n", input[0] - '0' + input[strlen(input)-1] - '0');

答案 9 :(得分:0)

b = int(raw_input())
c = str(b)
d = int(c[0])
e = int(c[-1])

print d+e