如何找到用户输入的第一个数字w/o循环



我一直在尝试在不使用循环的情况下找到用户输入的第一个数字。我确实试过在这里应用方法(https://codeforwin.org/2015/06/how-to-find-first-and-last-digit-of-any-number.html)但在进入第二个函数之前,我似乎得到了核心转储错误。下面是我的代码。任何帮助都将不胜感激。。。

#include <stdio.h>
#include <math.h>
void takeInput (int *input);
void firstDigit (int *input, int *digit1);
int main (void)
{
//local declarations
int input; //user input, number from -99999 to 99999
int digit1;
int digit2;
int digit3;
int digit4;
int digit5;
takeInput (&input);
firstDigit (&input, &digit1);
return 0;
}
void takeInput (int *input)
{
printf("type input in -> ");
scanf("%d", input);
return;
}
void firstDigit (int *input, int *digit1)
{
int temp;
printf("firstDigit ");
temp = *input % 10000;
digit1 = *input - temp;
*input = *input % 10000;
//  printf("%d", *input);
//  temp = (int) log10(*input);
//  digit1 = (int) (*input / pow(10, temp));
printf("%d", *digit1);
return;
}

您可以将其转换为字符串,然后查找第一个和最后一个数字。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char string[20];
int input;
scanf("%d", &input);
itoa(input, string, 10);
printf("first digit: %dn", string[0] - '0');
printf("last digit: %dn", string[strlen(string) - 1] - '0');

return 0;
}

最新更新