解题思路:定义一个足够大的数组来存放人员的编号,定义一个变量来延续数组后面的编号!比如:n=3,则数组为{1,2,3};数组足够大的情况下,判断下标+1%3是否等于0;是就把这个下标的元素置0。表达能力不太好。具体的看代码把。标注的挺清楚的。
注意事项:循环的退出条件用一个计数器来作为跳出条件,看代码把。
参考代码:
#include<stdio.h> #include<stdlib.h> int main() { int i,k=0,l,n; //i作为循环条件,k作为计数器,l作为n结尾的开头 int *p; scanf("%d",&n); p=(int*)malloc(sizeof(int)*n*8);//定义一个可变化的指针大小 for(i=0; i<n*(n/2); i++) { //给每一个元素的相应位置赋值对应的人员编号 p[i]=i+1; } l=n; //让l的初始值等于数组的最后那个数的下一个 for(i=0; k<n-1; i++) { //退出条件是n-1个元素置0后退出 if((i+1)%3==0) { //取余,余数为0的就是数到3的那个人 p[i]=0; //数字是3的人给他这个数组元素清0 k++; //计数器k+1 } else if(p[i]!=0) { //判断这个数组元素是否为0 p[l]=p[i]; //数组不为0的元素将他放到数组n的后面作为延续 l++; } } printf("%d",p[l-1]); //直接输出第l-1个元素就是剩下的最后的那个人的编号了 return 0; }
0.0分
13 人评分
C二级辅导-公约公倍 (C语言代码)浏览:1550 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1550 |
C语言程序设计教程(第三版)课后习题5.7 (C++代码)浏览:879 |
买不到的数目 (C++代码)浏览:909 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:643 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1114 |
WU-图形输出 (C++代码)浏览:836 |
DNA (C语言描述,数据结构)浏览:909 |
C语言程序设计教程(第三版)课后习题6.5 (C++代码)浏览:487 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:761 |
隐世 2024-03-12 17:01:49 |
一个人你报个锤子的数