第一题:
#include
int m,n,k;
int main()
{
m = 3;
while(scanf("%d",&n) == 1){
int an = 0;
int i;
for(i = 2;i <= n;i ++) {
k = m%i;
an = (an+k)%i;
}
an += 1;
printf("%d\n",an);
}
return 0;
}
第二题
#include
#include
#include
char *mcopy(char*s ,int m); //函数的定义
void main(void)
{
char str1[100];
char *str2;
int m;
printf("请输入你要输入的字符串\n");
gets(str1);
printf("请输入你要开始复制字符的位置m\n");
scanf("%d",&m);
if(m>=strlen(str1)) //若输入m值过大,结束程序
{
printf("输入值超出字符串长度...\n");
exit(1);
}
str2=mcopy(str1,m); //程序的调用
for(int j=0;j
}
char *mcopy(char*s ,int m)
{
static char array[100];
int count=0;
for(int i=m-1;i
array[count]=s[i];
count++;
}
return array;
}
第三题
#include "stdio.h"
main( )
{
int a[5]={1,2,3,4,5};
int x,i;
scanf("%d",&x);
for(i=0;i<5;i++) //循环比较
if(a[i]==x) //把数组中的数字和查找键进行比对,如果相等
{
printf("find"); //表示找到
break;
}
if(i==5) //当i=5的时候,说明数组中的所有元素都比对过了,且没有发现相等的
printf("no find"); //表示查找失败
}
第一题
#include
int kill(int,int,int);
int main()
{
int ki,num; //参与的人数为num,每数ki个杀之
scanf("%d%d",&num,&ki);
printf("The survivor is %d\n",kill(0,ki,num));//输出最终幸存者(1到num之间的一个数)
while(1);
}
int kill(int k,int ki,int num)
{
int x=0,i,m,j=0;
static int a[100]={0};//只初始化一次,且初始化为零 代表人活着
while(1) //有num个人,在数组中从a[1]到a[num]
{
if(k>=num)k=0;
if(a[++k]==0)x++;//此号人没死,数一次x加1
if(x==ki)break;//数到ki,跳出
}
a[k]=1; //置1表示 该人被杀之
for(i=1;i<=num;i++)
if(a[i]==0){
j++; //数出没被杀的人数
m=i;} //最后一位没被杀的
if(j>1)kill(k,ki,num);// 剩下的人数大于两人时,递归调用函数,继续杀之
else
return m;
}
第二题思路
char *mcopy(char *s,int m)
{
int i = strlen(s) - m + 1;
char *dest = (char *)malloc(i);
strncpy(dest,s+m,i);
}