Я писал программу для штрафа n-го числа за входное число. Но я всегда получаю вывод 1-го положения входного числа.
Это мой выход:
clang-7 -pthread -lm -o main main.c
./главный
Ввести число:
123456789
Войдите в N-ю позицию:
5
1987654321 \\я изменил входное число, чтобы я мог хранить num как inputed в массиве, когда я использую %
Номер в позиции 5 - это: 1
Что я уже пробовал:
#include <stdio.h> #include <stdlib.h> int length (long int num) { int len=0; while(num>0) { num = num/10; len++; } return len; } long int reverse(long int num) { int len = length(num); int i,rev; long int str = 10,mlt; while(i<len) { rev = num%10; num = num/10; str = (str+rev)*10; i++; } long int num1 = str/10; printf("%ld\n", num1); return num1; } int position(long int num, int n) { int len = length(num); int a; int *ptr = (int*) malloc(len*sizeof(int)); long int num1 = reverse(num); for(int i=0; i<len; i++) { ptr[i] = num1%10; } return ptr[n]; } int main() { long int num; int n; printf("Enter a number: \n"); scanf("%ld", &num); printf("Enter the nth position: \n"); scanf("%d", &n); printf("The no. in %d position is: %d", n, position(num, n)); }
Rick York
Почему вы не оставили его в виде строки, а затем не использовали индекс массива, чтобы получить символ? Мне это кажется гораздо проще, потому что я не совсем понимаю, что вы пытаетесь сделать. Если вам нужен четвертый символ строки, то это строка[3]. Что еще тут может быть?