C 在结构数组后打印字符

C 在结构数组后打印字符,c,C,当运行我的代码以便它打印一个后跟字符的struct数组时,它不会打印字符,除非我将其放在一个单独的printf语句中。我想知道为什么 实践问题提示: 复数是A+ib形式的数字,其中A被称为 实部b称为虚部,i=。在这个 问题是,您不计算复数;相反,你只会 读入实部和虚部并打印出来 写一篇 为复数结构定义类型的程序 应该有两个成员,用于实部和虚部。 促使 用户可以分别输入实部和虚部的值, 并将它们存储在这种类型的结构变量中。 打印 a+ib形式的复数。只需打印a的值,然后 字符串“+i”,然后是b

当运行我的代码以便它打印一个后跟字符的struct数组时,它不会打印字符,除非我将其放在一个单独的printf语句中。我想知道为什么

实践问题提示:

复数是A+ib形式的数字,其中A被称为 实部b称为虚部,i=。在这个 问题是,您不计算复数;相反,你只会 读入实部和虚部并打印出来 写一篇 为复数结构定义类型的程序 应该有两个成员,用于实部和虚部。 促使 用户可以分别输入实部和虚部的值, 并将它们存储在这种类型的结构变量中。 打印 a+ib形式的复数。只需打印a的值,然后 字符串“+i”,然后是b的值。 将程序修改为 具有复数的结构数组。 当我将解决方案编码为以下格式的printf语句时,它可以工作:

printfa+bi=%d+%d,mynum[0],mynum[1]; printf%c\n,虚拟的

然而,这种格式的代码省略了字符,因此不起作用:

#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;
}
e、 例如,如果我为输入输入2和3,那么输出将产生一个+bi=2+3,而不是一个+bi=2+3i

我意识到有一些解决方法,例如,将其编码为printfa+bi=%d+%di\n、mynum[0]、mynum[1];因此,i包含在printf语句中,而不是包含在变量中,但我想再次了解发生此错误的原因

谢谢

在int旁边打印字符不是问题

1您正在创建一个ComplexNum数组,而您只需要一个。您需要更改:

ComplexNum mynum[2] = {a,b};
printf("a + bi = %d + %d%c\n",mynum[0],mynum[1],imaginary);
致:

或:

2您有%d,然后您正在传递一个ComplexNum。您需要更改:

ComplexNum mynum[2] = {a,b};
printf("a + bi = %d + %d%c\n",mynum[0],mynum[1],imaginary);
致:


ComplexNum mynum[2]={a,b};?你是说ComplexNum mynum={a,b};相反您还必须相应地修改mynum[0]和mynum[1];,您仍然需要printfa+bi=%d+%d%c\n,mynum.a,mynum.b,invential;。如果你打开警告,你会看到各种各样的问题。你显然忽略了真正的问题。在整数旁边打印字符不是问题。哎呀!你说得对,@frslm。谢谢,我还不太懂这种语言。不过,我还是想知道为什么printfa+bi=%d+%d%c\n,mynum[0],mynum[1],是虚构的;没有为字符“i”打印?
printf("a + bi = %d + %d%c\n",mynum.a,mynum.b,imaginary);