鱼C论坛

 找回密码
 立即注册
查看: 4212|回复: 5

请高手进来看看我改完的这个程序,怎么结果不同呢?

[复制链接]
发表于 2013-1-26 21:46:15 | 显示全部楼层 |阅读模式
3鱼币
#include <stdio.h>
void main()
{  char a[]="abcdefg";
   char b[]="123456";
   char c[80];
   int i=0,j=0,k=0;
   while(a[i]!='\0'||b[j]!='\0')
   {
    if (a[i]!='\0')
    {
     c[k]=a[i];
     i++;
    }
    else
     c[k]=b[j++];
      k++;
   }
   c[k]='\0';
   puts(c);
   }这是原版的

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-26 21:47:16 | 显示全部楼层
我改完后的#include <stdio.h>
void main()
{  char a[]="abcdefg";
   char b[]="123456";
   char c[80];
   int i=0,j=0,k=0;
   while(a[i]!='\0'||b[j]!='\0')
   {
           if (a[i]!='\0')
           {
                   c[k]=a[i];
                   i++;
           }
           else
                   c[k]=b[j];
                j++;
                           k++;
   }

   c[k]='\0';
   puts(c);
   }就是那个吧b[j++],我把它拆开了 怎么结果就不同了???

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-26 22:13:01 | 显示全部楼层
else
       c[k]=b[j++];
要改为
else {
            c[k]=b[j];
            j++;
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-28 14:34:40 | 显示全部楼层
2楼回答的不错 但是没说出你的问题esle 适用的范围 你少了{}程序的意义就不一样
#include <stdio.h>
void main()
{  char a[]="abcdefg";
char b[]="123456";
char c[80];
int i=0,j=0,k=0;
while(a[i]!='\0'||b[j]!='\0')
{
    if (a[i]!='\0')
    {
                c[k]=a[i];
                i++;
    }
    else
        {
               
                c[k]=b[j];
                j++;
        }
       
        k++;
}
c[k]='\0';
puts(c);
scanf("%d");
   }
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-3 17:27:25 | 显示全部楼层
else {
            c[k]=b[j];
            j++;
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-2-13 19:59:30 | 显示全部楼层
为了让你清晰直观的明白为什么这两个结果不一样。这里给你两段代码,你替换进你程序对应的位置,看看有什么不一样。
1.
  1. //代码一:替换掉你那else,注意你需要按几次键才出现最终结果。
  2.            else
  3. {               c[k]=b[j];
  4.                 j++;
  5.                       system("pause");
  6. }
复制代码
2.
  1. //代码二:替换相同位置
  2.             else
  3. {              c[k]=b[j];
  4.         j++;
  5. }
  6.         system("pause");
复制代码
这里的system("pause");是暂停程序运行的意思。
我解释下你为什么会得到不同的结果
if-else,后面加上大括号的话,当值符合判断条件的时候,程序执行大括号内的代码。如果不加大括号。程序执行if-else后面的第一句话。你对比一下你的程序。当你不加大括号的时候
  1.            else
  2.                    c[k]=b[j];
  3.                 j++;
  4.                            k++;
复制代码
程序无论符合不符合a[i]!='\0'这个条件,都会执行j++这个语句,所以你的程序会得到和之前不一样的结果。之前的程序是当符合a[i]!='\0'的条件才执行j++。明白了么  ....
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 18:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表