大神来帮看看

yi19861209 2017-03-10 09:18:58
#include<stdio.h>
int xn(int *x,int *m);
int main()
{
int n=10,x,nx[10],*p,*z;
for(x=0;x<n;x++)
{
nx[x]=x+1;
printf("%3d",nx[x]);
}
printf("\n");
p=nx;
z=&nx[x];
printf("%5d\n",xn(p,z));
return 0;
}
int xn(int *x,int *m)
{
int i=1,j,y,*a;
a=x;
for(j=0;x!=m;x++)
{
j++;
}
x=a;
do
{
if(i==3) //这里i=1它也运行
{
y=*x;
*x=0;
j--;
i=0;
}
else
{
i++;
x++;
if(x>m)
x=a;
while(*x==0);
{
x++;
}
}
}
while(j!=1);
printf("\n");
return *x;
}
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
一百个Chocolate 2019-08-04
  • 打赏
  • 举报
回复
if(i==3) //这里i=1它也运行 在if语句里面 你如果写i=1 那就代表赋值语句了,就相当于if(true) i=1 和i==1 是有区别的 楼主注意一下 =是赋值 ==是判断两个数是否相等 相等则返回true 否则返回false
一百个Chocolate 2019-08-04
  • 打赏
  • 举报
回复
请问一下,楼主写这代码是想做什么呢? 你只给代码也不知道你要的是什么呀
yi19861209 2017-03-11
  • 打赏
  • 举报
回复
我是(i==3)的
yi19861209 2017-03-11
  • 打赏
  • 举报
回复
我用的是do...while,我去了“;”后报错啊。
自信男孩 2017-03-11
  • 打赏
  • 举报
回复
#include<stdio.h>

int xn(int *x,int *m);

int main()
{
    int n=10, i;
    int nx[10], *p, *z;

    for(i = 0; i < n; i++)
    {
        nx[i] = i + 1;
        printf("%3d", nx[i]);
    }
    printf("\n");
    p = nx;
    z = &nx[i-1];   /* replace i with i-1, i has overflowed.*/

    printf("%5d\n", xn(p, z));
    return 0;
}
int xn(int *x, int *m)
{
    int i = 1, j, y;
    int *a;

    a = x;
    for(j = 0; x != m; x++)
    {
        j++;
    }
    x = a;
    do
    {
        if(i == 3)
        {
            y = *x;
            *x = 0;
            j--;
            i = 0;
            printf("i = %d, *x = %d\n", i, *x);
        }
        else
        {
            i++;
            x++;
            if(x > m)
                x=a;
            while(*x == 0)    /*del ;*/
            {
                x++;
            }
            printf("+++i = %d, *x = %d\n", i, *x);
        }
    } while(j != 1);

    printf("\n");
    return *x;
}
不是i为1的语句体里执行了,而是i确实等于了3才执行了。 另外,提出2点问题: 1. main函数里,z = &xn[i]其实数据已经越界了,因为i 的下标范围是0~9,经过循环后i是10了,所以越界; 2. xn函数里有while(*x == 0);去掉后面的分号; 最后提一点,注意coding style.
幻夢之葉 2017-03-10
  • 打赏
  • 举报
回复
if(i==3) //这里i=1它也运行 i = 1 跟 i == 1 可是不同的噢

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧