C语言的for循环中省略赋值语句对结果是否有影响?


我尝试着在终端上打印菱形,电脑系统是基于ubuntu12.04改的elementary os运行在VMware上。
当我在声明i,j的时候同时赋值,并省略了for循环中的第一个表达式时,打印不出菱形。
当我在声明i,j的时候不赋值,在for循环的第一个表达式才赋值时,又可以打印出菱形。
我想问,是否在for循环中赋初值对程序运行的结果有影响吗?


 #include <stdio.h>
#include <math.h>

int diamond(int,char);

int main(void)
{
    diamond(3,'*');
    diamond(5,'+');
    return 0;
}

int diamond(int n,char c)
{
    if (n%2==0){
        printf("请输入奇数");
    }
    else {
        int middle = n/2+1;
        int i,j;
        for (i=1;i<=n;i++){
            for (j=1;j<=n;j++){
                if (i<=middle && j<=middle+(i-1) && j>=middle-(i-1))
                    printf("%c\t",c);
                else if(i>middle && j<=middle+(n-i) && j>=middle-(n-i))
                    printf("%c\t",c);
                else
                    printf("\t");
            }
            printf("\n");
        }
    }
    return 0;
}

c 编程 程序员

开飞机的猛男 10 years, 8 months ago

首先:该不会是写成了 int i,j=1;

其次:(重要)内层循环变量 j ,应该在每次内层循环开始执行时,都赋初值。把 j 的赋值提到 int i,j 这个位置肯定不行。

henryoh answered 10 years, 8 months ago

Your Answer