作业帮 > 综合 > 作业

怎么编写这两个程序(C语言)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 13:34:45
怎么编写这两个程序(C语言)
学校给高一(三)班分配了一个名额,去参加奥运会的开幕式.每个人都争着要去,可是名额只有一个,怎么办?班长想出了一个办法,让班上的所有同学(共有n个同学)围成一圈,按照顺时针方向进行编号.然后随便选定一个数m,并且从1号同学开始按照顺时针方向依次报数,1,2,…,m,凡报到m的同学,都要主动退出圈子.然后不停地按顺时针方向逐一让报出m者出圈,最后剩下的那个人就是去参加开幕式的人.
  要求:用环形链表的方法来求解.所谓环形链表,即对于链表尾结点,其next指针又指向了链表的首结点.基本思路是先创建一个环形链表,模拟众同学围成一圈的情形.然后进入循环淘汰环节,模拟从1到m报数,每次让一位同学(结点)退出圈子.
  输入格式:输入只有一行,包括两个整数n和m,其中n和 m的含义如上所述.
  输出格式:输出只有一个整数,即参加开幕式的那个人的编号.
  输入输出样例样例输入8 3样例输出7
学校给高一(三)班分配了一个名额,去参加奥运会的开幕式.每个人都争着要去,可是名额只有一个,怎么办?班长想出了一个办法,让班上的所有同学(共有n个同学)围成一圈,按照顺时针方向进行编号.然后随便选定一个数m,并且从1号同学开始按照顺时针方向依次报数,1,2,…,m,凡报到m的同学,都要主动退出圈子.然后不停地按顺时针方向逐一让报出m者出圈,最后剩下的那个人就是去参加开幕式的人.
要求:用环形链表的方法来求解.所谓环形链表,即对于链表尾结点,其next指针又指向了链表的首结点.基本思路是先创建一个环形链表,模拟众同学围成一圈的情形.然后进入循环淘汰环节,模拟从1到m报数,每次让一位同学(结点)退出圈子.
输入格式:输入只有一行,包括两个整数n和m,其中n和 m的含义如上所述.
输出格式:输出只有一个整数,即参加开幕式的那个人的编号.
输入输出样例
输入样例:
8 3
输出样例:
7
请编写程序的时候不要加什么请输入的一类文字~
编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩:
  (1) 如果该字符是空格,则保留该字符;
  (2) 如果该字符是第一次出现或第三次出现或第六次出现,则保留该字符;
  (3) 否则,删除该字符.
  例如,若用户输入“occurrence”,经过压缩后,字符c的第二次出现被删除,第一和第三次出现仍保留;字符r和e的第二次出现均被删除,因此最后的结果为:“ocurenc”.
  输入格式:输入只有一行,即原始字符串.
  输出格式:输出只有一行,即经过压缩以后的字符串.
  输入输出样例样例输入occurrence样例输出ocurenc
编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩:
(1) 如果该字符是空格,则保留该字符;
(2) 如果该字符是第一次出现或第三次出现或第六次出现,则保留该字符;
(3) 否则,删除该字符.
例如,若用户输入“occurrence”,经过压缩后,字符c的第二次出现被删除,第一和第三次出现仍保留;字符r和e的第二次出现均被删除,因此最后的结果为:“ocurenc”.
输入格式:输入只有一行,即原始字符串.
输出格式:输出只有一行,即经过压缩以后的字符串.
输入输出样例
输入样例:
occurrence
输出样例:
ocurenc
第一道题:#include <stdio.h>
#include <malloc.h>

struct List
{
\x09int i;
\x09struct List *next;
};

void Create(List** pList,int stu)
{
\x09int i;
\x09List *p = NULL;
\x09List *q = p;
\x09for(i=0; i<stu; i++)
\x09{
\x09\x09p = (List*)malloc(sizeof(List));
\x09\x09p->i = i+1;
\x09\x09p->next = NULL;
\x09\x09if(i == 0)
\x09\x09{
\x09\x09\x09*pList = q = p;
\x09\x09}
\x09\x09else
\x09\x09{
\x09\x09\x09q->next = p;
\x09\x09\x09q = q->next;
\x09\x09}
\x09}
\x09q->next = *pList;
}

void Select(List** pList,int num)
{
\x09int i;
\x09List* p = NULL;
\x09p = *pList;
\x09if(*pList == (*pList)->next)
\x09\x09return;
\x09for(i=0; i<num-2; i++)
\x09{
\x09\x09p = p->next;
\x09}
\x09p->next = p->next->next;
\x09*pList = p->next;
\x09Select(pList,num);
}

int main(void)
{
\x09int Student, num;
\x09List *pList = NULL;

\x09scanf("%d %d",&Student,&num);

\x09if(num == 1)
\x09{
\x09\x09printf("%d\n",Student);
\x09\x09return 0;
\x09}

\x09Create(&pList,Student);
\x09Select(&pList,num);
\x09printf("%d\n",pList->i);

\x09return 0;    
}
第二道题:#include <stdio.h>
#include <string.h>
#include <malloc.h>

int main(void)
{
\x09char buff[1000] = {0};
\x09int i = 0;
\x09int j,k;
\x09int *a;
\x09char *c;
\x09gets(buff);
\x09i = strlen(buff);
\x09c = (char *)malloc(i+1);
\x09a = (int *)malloc(i);

\x09for(j=0; j<i; j++)
\x09\x09a[j] = 1;

\x09for(j=i-1; j>=0; j--)
\x09{
\x09\x09if(buff[j] == ' ')
\x09\x09\x09continue;
\x09\x09for(k=0; k<j; k++)
\x09\x09{
\x09\x09\x09if(buff[j] == buff[k])
\x09\x09\x09\x09a[j]++;
\x09\x09}
\x09}

\x09k = 0;
\x09for(j=0; j<i; j++)
\x09{
\x09\x09if(a[j] == 1 || a[j] == 3 || a[j] == 6)
\x09\x09{
\x09\x09\x09c[k] = buff[j];
\x09\x09\x09k++;
\x09\x09}
\x09}
\x09c[k] = '\0';

\x09printf("%s\n",c);
\x09return 0;    
}