C程序!同样的表达式不同的值

lostchild 发布于 2013/12/11 14:20
阅读 222
收藏 2
c

在练习时写了2个差不多相同的程序,其中的一个表达式是相同的!但赋的值却出错...

程序1:

//统计输入的d单词而且用#制作水平表!
#include <stdio.h>
#define NUMBER 100//上限
main()
{
    int in,number[NUMBER];
    int i=0,j=0,p;
    while((in=getchar())!='#')
    {
        if(in!='\n')
        {
            if(in!=' '||in!='\t')
            {
                ++i;
            }
        }//统计单词数
        else if(in=='\n')
        {
            number[j++]=i;
            i=0;
        }//把单词数赋值给数组
    }//这个表达式!
    for(i=0;i<j;i++)//制表
    {
        printf("%d>>%d:",i,number[i]);
        for(p=0;p<number[i];p++)
        {
            printf("#");
        }
        printf("\n");
    }
    return 0;
}



这程序没出错!

程序2:

//将输入的单词以垂直的方式制表输入
#include <stdio.h>
#define ceiling 100//上限
main()
{
    int in,number[ceiling];
    int i=0,j=0,x,y;
    while((in=getchar())!='#')
    {
        if(in!='\n')
        {
            if(in!=' '||in!='\t')
            {
                ++i;
                printf("\t1%d:",i);
            }
        }
        else if(in=='\n')
        {
            number[j]=i;
            i=0;
            j++;
            printf("\t2%d::\n",number[j]);
        }
    }//这个表达式!
    for(i=1,x=0;i<j;i++)
    {
        if(number[x]>number[i])y=number[x];
        else y=number[i];
    }//统计制表需要的高度
    for(i=y;i>=0;i--)
    {
        printf("%d^",i);//为表画个边线与高度
        for(x=0;x<j;x++)
        {
            if(number[x]!=0)printf("#");
            else printf(" ");
        }
        printf("\n");
    }//制表中....
    printf("࿌ ");
    for(i=0;i<j;i++)
    {
        printf(">");
    }//为表画个线
    printf("\n  ");
    for(i=0;i<j;i++);
    {
        printf("%d",number[i]);
    }//为表打上序号
    printf("\n");
    return 0;
}



编译环境都是gcc!

在表达式中printf过赋值前与赋值后,发现两个值都不一样!

我在想了一小时为毛一样的表达式或都是赋值竟然结果不一!。。。。

以下是问题补充:

@lostchild:程序1没错!错得是程序2! (2013/12/11 14:21)
加载中
0
中山野鬼
中山野鬼
你的逻辑不对。。。至少 i >= j 时,前一个不会打印,后一个照样打印。。。算法重要的是逻辑描述。哈。
lostchild
lostchild
这块我知道,我现在只是想搞清楚为啥赋值会不同。。
0
中山野鬼
中山野鬼
另外提醒一点,第一个代码比第二个代码逻辑清晰。 处理数据记录标记,根据标记做打印,这些动作要分开进行。没有任何理由会让他们揉在一起。哈。无论是速度还是代码质量。
lostchild
lostchild
谢谢提醒
0
进击的企鹅
进击的企鹅
main函数没返回int,gcc编译居然不报错?你的gcc哪个版本
中山野鬼
中山野鬼
不报错很正常。。哈。
lostchild
lostchild
不知道,系统centos6.4的一直没更新!
0
修改登录密码
修改登录密码
就没看懂代码什么意思
返回顶部
顶部