在数组结构后打印字符

时间:2019-04-17 18:22:00

标签: c

运行我的代码以使其先显示array中的struct,然后显示char时,除非我将其放在单独的{ {1}}语句。我想知道为什么

练习问题提示:

  • 复数是a + ib形式的数字,其中a称为 实部b称为虚部,而i =。在这 问题,您不计算复数;而是你会 阅读实部和虚部并进行打印。 •
    • 写一个 定义复数结构类型的程序(它 应该有两个成员(实部和虚部)。
    • 提示 用户分别输入实部和虚部的值, 并将它们存储在这种类型的结构变量中。
    • 打印 复数形式为a + ib。 (只需打印a的值,然后 字符串“ + i”,然后是b)的值。
    • 修改程序以 具有一系列用于复数的结构。

当我以这种格式编写解决方案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; } 语句中,而不是包含在变量中,但是我想知道为什么发生此错误。

谢谢!

1 个答案:

答案 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);