注册 登录
编程论坛 C语言论坛

我这哪错了,输出不来结果

暴君Dentiny 发布于 2019-08-24 22:00, 3382 次点击
只有本站会员才能查看附件,请 登录
程序代码:
#include<stdio.h>
#define clos 8
void main()
{
    int i=0,j=0;
    int I = 0, J = 0;
    static char sul[clos][clos];
    while (i < clos)
    {
        for (j = 0; j < clos; j++)
        {
            sul[i][j] = "*";
        }
        i++;
    }
    while (I< clos)
    {
        for (J = 0; j < clos; j++)
        {
            printf("%c", sul[i][j]);
        }
        puts("");
        I++;
    }
}
12 回复
#2
jklqwe1112019-08-24 22:43
for (J = 0; j < clos; j++)这一句必定有问题
#3
暴君Dentiny2019-08-24 22:48
回复 2楼 jklqwe111
那样也是无线循环,不至于输出不来
#4
jklqwe1112019-08-24 23:05
for (J = 0; j < clos; j++)你能说一下代码执行到这一句时,j的值是多少吗
#5
jklqwe1112019-08-24 23:13
sul[i][j] = "*";这句能通过编译吗
#6
jklqwe1112019-08-24 23:46
写代码时变量名应该用用一个有意义的名字,循环变量用一些单字母变量也是通常的做法,但用大小写区分不同变量就不好了,说这是不好的习惯都是轻的,还是从开始杜绝这种做法为好
#7
云不喜2019-08-25 09:24
printf("%c", sul[i][j])中如果要输出*在%c前面要加一个空格吧?或者考虑一下用putchar输出putchar('%')
应该是这样吧,自我感觉

[此贴子已经被作者于2019-8-25 09:33编辑过]

#8
bcbbcclbbc2019-08-27 15:47
可以加几个printf函数,来验证每个环节的想法与程序运行结果是否相符
#9
lxk17329422019-08-27 18:04
首先说明自己的目的(这个程序要完成什么任务),不然的话,大家只能去挑逻辑错误,可能达不到你的要求。

我感觉你是被你的一对大小写变量给搞晕了,把它们统一,全改成小写,记得输出前将各变量重置。
#10
xhxh2019-08-28 12:22
只有本站会员才能查看附件,请 登录


static 局部变量 字符型未初始化编译器赋值为空字符

[此贴子已经被作者于2019-8-28 12:27编辑过]

#11
云不喜2019-08-29 16:25
回复 3楼 暴君Dentiny
    while (I< clos)
    {
        for (J = 0; j < clos; j++)
        {
            printf("%c", sul[i][j]);
        }
        puts("");
        I++;
把这一串中的小写字母全部改成大写字母应该就可以了

[此贴子已经被作者于2019-8-29 16:28编辑过]

#12
jyxiasf2019-09-03 17:23
#include<stdio.h>
#define clos 8
void main()
{
    int i=0,j=0;
    int I = 0, J = 0;
    static char sul[clos][clos];
    while (i < clos)
    {
        for (j = 0; j < clos; j++)
        {
            sul[i][j] = '*';
        }
        i++;
    }
    while (I< clos)
    {
        for (J = 0; J < clos; J++)
        {
            printf("%c", sul[I][J]);
        }
        puts("");
        I++;
    }
}
#13
qc970012019-09-03 23:13
回复 楼主 暴君Dentiny
    while (i < clos)
    {
        for (j = 0; j < clos; j++)
        {
            sul[i][j] = "*";
        }
        i++;
    }


  这个循环结束后,j (小写)的值已经等于 clos.所以下面:

while (I< clos)
    {
        for (J = 0; j < clos; j++) 此时 j == clos,根本不会进行循环
        {
            printf("%c", sul[i][j]);
        }
        puts("");
        I++;
    }


  中的输出语句不会被执行!
1