Предполагается, что эта программа попросит пользователя ввести положительное целое число (целое число может быть любого числа цифр в диапазоне целочисленного типа) и заменить каждую цифру на сумму этой цифры плюс 6 модуля 10. Программа затем необходимо поменять первую цифру на последнюю цифру, прежде чем отобразит вывод.Вывод одинаков для каждого номера?
Входной образец/выход:
Enter the number of digits of the number: 5
Enter the number: 92828
Output: 48485
По какой-то причине с моим кодом, независимо от того, какой номер я вхожу, все просто выходит как 6. (так что, если я вхожу 5 номеров, я получаю 666666) , Я новичок в указателях, так есть проблема с этим, или я просто ошибаюсь в математике? Программа запускается без предупреждений компилятора.
#include <stdio.h>
#include <stdlib.h>
void replace(int *a, int *b, int n);
void swap(int *p, int *q);
int main()
{
int n = 0;
int i = 0;
int a[100], b[100];
//Prompt user to enter number of digits
printf("Enter the number of digits you'd like to replace: ");
scanf("%d", &n);
//Prompt user to enter the number to use
printf("Enter the number to use: ");
for(i = 0; i < n; i++);
scanf("%1d", &a[i]);
//replace function
replace(a, b, n);
for(i = 0; i < n; i++)
printf("%d", b[i]);
printf("\n\n");
return 0;
}
void replace(int *a, int *b, int n)
{
int i;
for (i = 0; i < n; i++)
{
*(b+i) = (*(a+i)+ 6) % 10;
}
printf("The output is: ");
//swap function
swap(b, (b+ (n-1)));
}
void swap(int *p, int *q)
{
int t;
t = *p;
*p = *q;
*q = t;
}
Всегда что-то простое. Спасибо за помощь! –