【分析】数组逆序存储 双指针扫描
#include <stdio.h>
#include <string.h>
#define maxlen 200
int main()
{
char t,str[maxlen];
int i,j;
while(scanf("%s",str)!=EOF)
{
i=0,j=strlen(str)-1;
while(i<j)
{
t=str[i];
str[i]=str[j];
str[j]=t;
i++,j--;
}
printf("%s\n",str);
}
return 0;
}
【分析】欧几里得算法求gcd,可通过递归或非递归算法完成。
法一:非递归算法
#include <stdio.h>
void Fun(int x,int y)
{
int p,t;
if(x<y)
{
t=x;
x=y;
y=t;
}
while(y!=0)
{
p=x%y;
x=y;
y=p;
}
printf("%d\n",x);
}
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
Fun(a,b);
return 0;
}
法二:递归算法
#include <stdio.h>
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
printf("%d\n",gcd(a,b));
return 0;
}
【分析】统计数字1-10的出现次数,然后"打擂台"。
#include <stdio.h>
int main()
{
int i,j;
int a[20],time[11],max; //20个数.每个数的出现次数.出现次数的最大值
while(scanf("%d",&a[0])!=EOF)
{
for(i=0;i<11;i++)
time[i]=0;
for(i=1;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++) //保证a与time一一对应,如a[2]=5,则time[5]记录5的出现次数
time[a[i]]++;
max=time[1];
for(i=2;i<11;i++)
{
if(time[i]>max)
{
max=time[i];
j=i;
}
}
printf("%d\n",j);
}
return 0;
}