为什么C语言程序输入不了内容,有什么错误?

 我来答
自我编程
2019-11-14 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

二维字符串数组a[n][m],其中a[n]的是行指针,表示的一行数据。

所以在你图中代码char c[5][20];c[i]就表示一行字符串的首地址。

同理s数组也是。

所以当输入c和s数组,用c[i],s[i]做参数,不要加&,直接写scanf("%s%s",c[i],s[i])就可以了。

而a是不是字符数组,%f不能直接对应一行,而要对应其中一个元素,所以要写&a[i][j]。

而你的循环条件也不对,你那样写,字符数组,浮点数组循环输入次数是不一样的,要分开循环。

另外scanf输入默认是空格分隔,所以字符串和字符串之间要有空格,每个数字之间也要空格。像这样输入:


#include <stdio.h>

int main()

{

    int i,j;

    char c[5][20];

    char s[5][20];

    float a[11][6];

    printf("please input:\n");

    for(i=0;i<5;i++)

        scanf("%s%s",c[i],s[i]);

    for(i=0;i<11;i++)

        for(j=0;j<6;j++)

            scanf("%f",&a[i][j]);


    printf("\n输出打印:\n");

    printf("c数组内容:\n");

    for(i=0;i<5;i++)

        printf("%s\n",c[i]);

    printf("s数组内容:\n");

    for(i=0;i<5;i++)

        printf("%s\n",s[i]);

    printf("a数组内容:\n");

    for(i=0;i<11;i++,printf("\n"))

        for(j=0;j<6;j++)

            printf("%f",a[i][j]);

    return 0;

}

IT圈新鲜事
2019-11-14 · 记录IT技术领域中的新鲜事
IT圈新鲜事
采纳数:1722 获赞数:11349

向TA提问 私信TA
展开全部
你这个语法都不对啊。for后面加了分号,证明是一个语句,全部执行后就结束了,不会到scanf那个语句。等到三个循环执行完了,才能执行输入操作,但是此时i和j的值就已经超过数组范围了,所以是无法输入的。
追问
咋改呀
追答

int i,j;

for (i = 0; i<5; i++)

{

    for(j = 0; j<20; j++)

    {

scanf("%c", c[i][j]);

    }

}

for (i = 0; i<5; i++)

{

    for(j = 0; j<20; j++)

    {

scanf("%c", s[i][j]);

    }

}

for (i = 0; i<11; i++)

{

    for(j = 0; j<6; j++)

    {

scanf("%f", a[i][j]);

    }

}

如果帮助到您,请点击“采纳”哦~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2759a31
2019-11-14 · TA获得超过169个赞
知道小有建树答主
回答量:155
采纳率:75%
帮助的人:32.3万
展开全部
for循环写得不对。要实现录入数据,可以参考如下修改:

char s[5][20];
float a[3][3];
for(int i = 0; i <= 4; i++)
scanf("%s", &s[i]);//输入5个字符串
printf("%c\n", s[1][2]);
for(int i = 0; i <= 2; i++)
for(int j = 0; j <= 2; j++)
scanf("%f", &a[i][j]);//输入3*3的矩阵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式