Когда мой код выполняется так, что он печатает array
из struct
, за которым следует char
, он не будет печатать char
, если я не помещу его в отдельный оператор printf
. Мне интересно почему ?
Подсказка о проблеме с практикой:
- Комплексное число - это число вида a + ib, где a называется
действительная часть, b называется мнимой частью, и я =. В этом
проблема, вы НЕ рассчитываете комплексное число; скорее вы просто
читать в реальных и мнимых частях и распечатать их. •
- Написать
программа, которая определяет тип для структуры для комплексного числа (это
должно иметь два члена, для реальной и мнимой частей).
- Подскажите
пользователь отдельно вводит значения для реальной и мнимой частей,
и сохраните их в структурной переменной этого типа.
- Распечатать
комплексное число в виде + ib. (Просто напечатайте значение, затем
строка «+ i», а затем значение б).
- Измените вашу программу на
иметь массив структур для комплексных чисел.
Когда я кодирую решение в виде оператора printf
в этом формате, оно работает:
printf("a + bi = %d + %d",mynum[0],mynum[1]);
printf("%c\n",imaginary);
Принимая во внимание, что код в этом формате пропускает char
и поэтому не работает:
#include <stdio.h>
typedef struct{
int a, // real part
b; // imaginary part
}ComplexNum;
void main()
{
int a, //real part
b; //imaginary part
char imaginary = 'i'; //imaginary number
printf("Enter the real part: ");
scanf("%d",&a);
printf("Enter the imaginary part: ");
scanf("%d",&b);
ComplexNum mynum[2] = {a,b};
printf("a + bi = %d + %d%c\n",mynum[0],mynum[1],imaginary);
return 0;
}
Например, если я введу 2 и 3 для входа, выход выдаст «a + bi = 2 + 3», а не «a + bi = 2 + 3i».
Я понимаю, что есть обходные пути, например, вместо того, чтобы кодировать его как printf("a + bi = %d + %di\n",mynum[0],mynum[1]);
, чтобы i включался в оператор printf
, а не включался в переменную, но, опять же, я хочу знать , почему эта ошибка происходит.
Спасибо!