因为是c语言课,所以代码尽量用纯c写,有不对的地方可以爆锤。
问题 A: Redraiment的遭遇
这道题没什么好说的,几乎没人不过,天数用笔画都能画出来,附上不知道谁写的代码
#include <stdio.h>
int main()
{
int m,n,i,j,skt=0,sum=0,t=0,ckt=0;
while(1)
{
scanf("%d/%d",&m,&n);
if(m==0 && n == 0)
break;
if(m>8)
printf("0\n");
if(m>=7 && m <= 8)
{
int a[9][32]={
0};
for(i=7;i<=8;i++)
{
for(j=1;j<=31;j++)
{
if(skt==t)
{
a[i][j]=1;
t++;
skt=-1;
}
skt++;
}
}
if(m==8)
{
for(j=n;j<=31;j++)
{
if(a[m][j]==1)
{
sum+=1;
}
}
}
if(m==7)
{
for(j=n;j<=31;j++)
{
if(a[7][j]==1)
{
sum+=1;
}
}
for(j=1;j<=31;j++)
{
if(a[8][j]==1)
{
sum+=1;
}
}
}
printf("%d\n",sum);
}
if(m<7)
{printf("10\n");}
sum=0;skt=0;t=0;
}
return 0;
}
问题 B: 围圈报数-指针[中]
这道题是约瑟夫环的简化,虽然过的人很多但是好像很多人对指针不感冒,随手从代码列表里随便拿了一个改成指针。(其实在数组里用指针跟不用是一样的)
#include<stdio.h>
int main()
{
int a[1000],i,j,k,n;
int *q;//定义一个指针q
scanf("%d",&n);
for(i=1;i<=n;i++)
a[i]=i;
q = a;//让指针q指向a数组的首地址,就是a.
for(i=1,j=1,k=n; ;j++,i++)
{