瞎折腾


私信TA

用户名:chenbin

访问量:62379

签 名:

等  级
排  名 73
经  验 9877
参赛次数 0
文章发表 74
年  龄 0
在职情况 学生
学  校 中南大学
专  业

  自我简介:

解题思路:
1.根据题目要求,先定义一个整形数组cir,大小100左右即可;在定义一个指针*p;在用for循环个数值依次递增顺序编号,先令i=0;再*(p+i)=i+1;

2.再分别定义k=0,l=0,其中k负责计数(先判断if(*(p+1)!=0)时,k++;当k==3时,就令此时对应的cir[i]=0;k=0;l++);而l是循环控制条件(即当l<n-1时就执行上述将数到3的数组值置为0的一系列操作)。

3.当i到了最后那一位怎么办了呢?说明此时一轮循环已经结束,当然又得从头再数3了,那就继续第2步操作,直到数组中只有一位非零数值为止。

4.最后,当while(*p==0)时就执行p++操作,如何退出呢?当p指向数组中的非零数值时,跳出循环,输出*p即为数组中的非零数值,ps:不是编号哦。





注意事项:





参考代码:

#include<stdio.h>

int main()

{

int cir[100],*p,i,n,k,l;

p=cir;

scanf("%d",&n);

for(i=0;i<n;i++)

{

*(p+i)=i+1;

}

k=0;

l=0;

i=0;

while(l<n-1)

{

if(*(p+i)!=0)

k++;

if(k==3)

{

*(p+i)=0;

k=0;

l++;

}

i++;

if(i==n)

{

i=0;

}

}

while(*p==0)

{

p++;

}

printf("%d",*p);

return 0;

}


 

0.0分

0 人评分

  评论区