解题思路:
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 人评分
小九九 (C语言代码)浏览:882 |
C语言训练-斐波纳契数列 (C语言代码)浏览:3015 |
C语言程序设计教程(第三版)课后习题9.3 (Java代码)浏览:1025 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:940 |
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:649 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:544 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2121 |
链表数据求和操作 (C语言代码)浏览:1035 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:586 |
简单的a+b (C语言代码)浏览:691 |