运行我的代码以使其先显示array
中的struct
,然后显示char
时,除非我将其放在单独的{ {1}}语句。我想知道为什么?
练习问题提示:
当我以这种格式编写解决方案char
语句时,它会起作用:
printf
这种格式的代码省略了printf
,因此不起作用:
printf("a + bi = %d + %d",mynum[0],mynum[1]);
printf("%c\n",imaginary);
例如,如果我输入2和3作为输入,则输出将产生“ a + bi = 2 + 3”,而不是“ a + bi = 2 + 3i”。
我意识到存在变通方法,例如,通过将其编码为char
,以便将i包含在#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;
}
语句中,而不是包含在变量中,但是我想知道为什么发生此错误。
谢谢!
答案 0 :(得分:2)
在char
旁边打印int
没问题。
1)您只需要创建一个ComplexNum
数组时。您需要更改:
ComplexNum mynum[2] = {a,b};
至:
ComplexNum mynum = {a,b};
或:
ComplexNum mynum;
mynum.a = a;
mynum.b = b;
2)您拥有%d
,然后您传递了ComplexNum
。您需要更改:
printf("a + bi = %d + %d%c\n",mynum[0],mynum[1],imaginary);
收件人:
printf("a + bi = %d + %d%c\n",mynum.a,mynum.b,imaginary);