点赞(1)
 

0.0分

88 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 20 条评论

乡涧小尘 1月前 回复TA
接着上面的

void Find_del(List q, int n){
	List p;
	for(int i=1;i<n;i++){
		p = q->next->next; //把next看成存储下一个节点的地址的仓库。现在假设链表是q,p节点的循环 ,等号右边 q-> next指的是仓库的内容,也就是下一个节点 p的存储空间首地址 
		q->next->next = p->next; //但是如果 q->next在等号左边, 它所指的就是 q的next仓库本身,而不再是它的内容 
		
		//看不懂上面两行的话就看看它们右边的注释 
		q = p->next;
		free(p);
	}
	printf("%d\n", q->number);
	free(q);
}

int main(){
	int n;
	List q;
	scanf("%d", &n);
	if(n==1){
		printf("%d\n", n);
		return 0;
	}
	q = Creat(n);
	Find_del(q,n);
	return 0;
}
乡涧小尘 1月前 回复TA
#include<stdio.h>
#include<stdlib.h>

typedef struct node{
	int number;
	struct node *next;
}Node, *List;


List Creat(int n){
	List q,p;
	Node *head = (Node *)malloc(sizeof(Node));
	head->next = NULL;
	q=head;
	for(int i=1;i<=n;i++){
		p = (Node *)malloc(sizeof(Node));
		p->number = i;
		p->next = NULL;
		q->next = p;
		q = p;
	}
	q->next = head->next;
	return head->next;
}
//Creat()创建表 ,并返回第一个节点(不是表头) 的地址
三硝基甲苯 2月前 回复TA
#include<stdio.h>
int baoshuFinish(int* a,int n)
{
	int flag=0;
	for(int i=0;i<n;i++){
		if(a[i]==1){flag++;}
	}
	return flag;
}
int baoshu(int n)
{
	int a[n];
	for(int i=0;i<n;i++){
		a[i]=1;
	}
	int i=-1;
	while(baoshuFinish(a,n)!=1){
		for(int j=0;j<3;j++){
			do
			{
				i++;i%=n;
			}while(a[i]==0);
			while(a[i]==0){
				i++;i=i%n;
			}
		}
		a[i]=0;
	}
	int save;
	for(int i=0;i<n;i++){
		if(a[i]==1){save=i+1;}
	}
	return save;
}
int main()
{
	int n;
	scanf("%d",&n);
	printf("%d",baoshu(n));
}
dotcpp0712666 1年前 回复TA
@dotcpp0712666 理解错了,没事了
dotcpp0712666 1年前 回复TA
#include <stdio.h>
int main()
{
    int i, n, temp, t;
    scanf("%d", &n);
    int a[n ];
    for (i = 1; i <= n; i++)
    {
        if (i % 3 == 0)
        {
            temp = i;
        }
    }
    if (temp = n)
    {
        temp -= 1;
    }else
    if (n%temp==1)
    {
        temp = n;
    }
    printf("%d", temp);

    return 0;
}
为啥这个只有50分彦祖们帮忙看下
浪费钱 1年前 回复TA
#include <stdio.h>
int main()
{
	int a,b,c=0;
	int sz[50];
	scanf("%d",&a);
	for(b=0; b<a; b++){
		sz[b]=b+1;
	}
	int d=a;
	while(d>1){
		for(b=0; b<a; b++){
			if(sz[b]!=0){
				c++;
				if(c==3){
					sz[b]=0;
					c=0;
					d--;
				}
			}
		}
	}
	for(b=0; b<a; b++){
		if(sz[b]!=0)
			printf("%d",sz[b]);
	}
	return 0;
}
dotcpp0676864 1年前 回复TA
#include<stdio.h>
int main()
{
    int a,e=0,f;
    scanf("%d", &a);
    int c = 1, b[100], i,d;
    for (i = 0; i < a; i++)
    {
        b[i] = i+1;
    }
    i = 0;
    while (e!=1)
    {
        e = 0;
        d = i % a;
        if (c != 3 && b[d] != -1) c++;
        else if (c == 3&&b[d]!=-1)
        {
            b[d] = -1, c = 1; 
        }
        for (f = 0; f < a; f++)
        {
            if (b[f] != -1) e++;
        }
        i++;
    }
    for (i = 0; i < a; i++)
    {
        if (b[i] != -1) { printf("%d", b[i]); break; }
    }
    return 0;
}
王文萱 1年前 回复TA
@stolen 终于懂了!
Yojiro 1年前 回复TA
@dotcpp0626434 他是先输入了n的值(scanf("%d",&n)),,就在n这个地址里面有了数值,然后再int a[n].
1年前 回复TA
@dotcpp0626434 c99新版本可以的