搜索
查看: 862|回复: 13
打印 上一主题 下一主题

求助。。。指针好难 求教导

[复制链接]
跳转到指定楼层
楼主
发表于 2016-8-11 18:48:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
10啊哈币
本帖最后由 madeinchina 于 2016-8-11 19:45 编辑

[mw_shl_code=c,true]#include <stdio.h>
int main()
{
        char a[]="abcd",b[]="aabc",c[]="bbde",d[]="bacc",e[]="baaa",k='f';
    char *p[]={a,b,c,d,e},*t=&k;
    int i,j,on,h=0;
    for (i=0;i<4;i++)
    {
      for (j=1;j<5;j++)
      {
        on=0;
        while (*p==*p[j])
        {
          on=1;
          *p++;
          *p[j]++;
          h++;
          if (*p!=*p[j])
          {
            break;
          }
        }
        if (*p>*p[j])
        {
          *t=*p;
          *p=*p[j];
          *p[j]=*t;
        }
        while (on)
        {
          *p--;
          *p[j]--;
          h--;
          if (h==0)
          {
            break;
          }
        }
      }
    }
    for (i=0;i<5;i++)
    {
      printf("%s\n",p);
    }
        system("pause");
        return 0;
}[/mw_shl_code]

1.png (99.16 KB, 下载次数: 2)

1.png

2.png (133.53 KB, 下载次数: 1)

2.png

指针解析.c

833 Bytes, 下载次数: 3

沙发
 楼主| 发表于 2016-8-11 19:05:42 | 只看该作者
本帖最后由 madeinchina 于 2016-8-11 19:59 编辑

#include <stdio.h>
int main()
{
        char a[]="abcd",b[]="aabc",c[]="bbde",d[]="bacc",e[]="baaa",k='f';
    char *p[]={a,b,c,d,e},*t=&k;
    int m,j,on,h=0;
    for (m=0;m<4;m++)
    {
      for (j=1;j<5;j++)
      {
        on=0;
        while (*p[m]==*p[j])
        {
          on=1;
          *p[m]++;
          *p[j]++;
          h++;
          if (*p[m]!=*p[j])
          {
            break;
          }
        }
        if (*p[m]>*p[j])
        {
          *t=*p[m];
          *p[m]=*p[j];
          *p[j]=*t;
        }
        while (on)
        {
          *p[m]--;
          *p[j]--;
          h--;
          if (h==0)
          {
            break;
          }
        }
      }
    }
    for (m=0;m<5;m++)
    {
      printf("%s\n",p[m]);
    }
        system("pause");
        return 0;
}
板凳
发表于 2016-8-11 19:22:35 | 只看该作者
可以用[mw_shl_code=c,true][mw_shl_code=c,true][/mw_shl_code][/mw_shl_code]把代码弄起来吗,否则[ i ]会被识别成斜体
地板
 楼主| 发表于 2016-8-11 19:34:06 | 只看该作者
邀请码 发表于 2016-8-11 19:22
可以用[/mw_shl_code]把代码弄起来吗,否则[ i ] ...

这东西咋用
5#
 楼主| 发表于 2016-8-11 20:01:16 | 只看该作者
邀请码 发表于 2016-8-11 19:22
可以用[/mw_shl_code]把代码弄起来吗,否则[ i ] ...

那不用i了  你看看这好像while 好像一直在循环
6#
发表于 2016-8-11 21:41:22 | 只看该作者
madeinchina 发表于 2016-8-11 20:01
那不用i了  你看看这好像while 好像一直在循环

我测了一下,已经上了500次了
7#
发表于 2016-8-11 21:48:49 | 只看该作者
你的指针最好重学一遍
8#
 楼主| 发表于 2016-8-11 22:18:27 | 只看该作者
本帖最后由 madeinchina 于 2016-8-11 22:57 编辑
初学C 发表于 2016-8-11 21:48
你的指针最好重学一遍

  指针没问题  循环问题
9#
发表于 2016-8-12 11:17:13 | 只看该作者
IDE调试的时候说是这句出的问题:
if (*p[m]!=*p[j])
10#
发表于 2016-8-12 11:27:35 | 只看该作者
另外这个程序是干啥的?没弄懂
11#
 楼主| 发表于 2016-8-12 12:07:21 | 只看该作者
邀请码 发表于 2016-8-12 11:27
另外这个程序是干啥的?没弄懂

for内层循环第二次  while循环会死循环   这是已经修改完毕的完整版
#include <stdio.h>
int main()
{
        char a[]="abcd",b[]="aabc",c[]="bbde",d[]="bacc",e[]="baaa";
    char *pa[]={a,b,c,d,e},t;
    int m,j,k,on,w=0,*t1;
    for (m=0;m<5;m++) //i为数组编号
    {
      for(j=0;j<3;j++)//数组下标
      {
        for(k=j+1;k<4;k++)//数组下标
        {
          if (*(pa[m]+j)>*(pa[m]+k))
          {
            t=*(pa[m]+j);
            *(pa[m]+j)=*(pa[m]+k);
            *(pa[m]+k)=t;
          }
        }
      }
    }
    for (j=0;j<4;j++)
    {
      for (k=j+1;k<5;k++)
      {
        on=0;
        while(*pa[j]==*pa[k])
        {
          on=1;
          pa[j]++;
          pa[k]++;
          w++;
          if (*pa[j]!=*pa[k])
          {
            break;
          }
        }
        if (*pa[j]>*pa[k])
        {
          t1=pa[j];
          pa[j]=pa[k];
          pa[k]=t1;
/*        printf("%c\n",*pa[j]);
          printf("%c\n",*pa[k]);
          printf("%d\n",pa[j]);
          printf("%d\n",pa[k]);*/
        }
        while (on)
        {
          *pa[j]--;
          *pa[k]--;
          w--;
          if (w==0)
          {
            break;
          }
        }
      }
    }
    for (m=0;m<5;m++)
    {
      puts(pa[m]);
    }
        system("pause");
        return 0;
}

12#
发表于 2016-8-12 15:46:12 | 只看该作者
madeinchina 发表于 2016-8-12 12:07
for内层循环第二次  while循环会死循环   这是已经修改完毕的完整版
#include
int main()

我的意思是这个程序是干啥的,不是哪里错了。。
13#
发表于 2016-8-12 15:46:57 | 只看该作者
在第二层循环里面的开头加上if(i==j)continue;否则就会出错
14#
发表于 2016-8-12 18:13:48 | 只看该作者
*t1的类型
"pause"的头文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表