压缩字符串
#include<stdio.h>
#define M 80
void zip(char *p);
int main()
{
char line[M];
gets(line);
zip(line);
puts(line);
return 0;
}
void zip(char *p)
{
char *q=p;
int n;
while(*p!='\0')
{
n=1;
while(*p==*(p+n))
{
n++;
}
if(n>=10)
{
*q++=(n/10)+'0';
*q++=(n%10)+'0';
}
else if(n>=2)
{
*q++=n+'0';
}
*q++=*(p+n-1);
p=p+n;
}
*q='\0';
}
数组循环后移
#include<stdio.h>
#define M 100
void mov(int *x,int n,int m);
int main()
{
int *p,a[M],m,n,i;
scanf("%d %d",&m,&n);
for(p=a,i=0;i<n;i++)
{
scanf("%d",&*p++);
}
mov(a,n,m);
printf("After moved:");
for(i=0;i<n;i++)
{
printf("%5d",a[i]);
}
return 0;
}
void mov(int *x,int n,int m)
{
int i,j,temp;
m=m%n;
for(i=0;i<m;i++)
{
int c=x[n-1];
for(j=n-1;j>0;j--)
{
x[j]=x[j-1];
}
x[0]=c;
}
}
水仙花数之小结
int main()
{
int n,sum=0,c=0,i,m,d,j,flag=3;
scanf("%d %d",&i,&m);
for( ;i<m;i++)
{
d=c=i;
sum=0;
for( j=0;c!=0;j++){
c/=10;
}
for(int k=0;k<=j;k++)
{
n=d%10;
sum=sum+pow(n,j);
d/=10;
}
if(flag!=j){
printf("\n");
flag=j;
}
if(i==sum&&j==3)
{
printf("水仙花数%-6d ",sum);
}
if(i==sum&&j==4)
{
printf("玫瑰花数%-6d ",sum);
}
}
return 0;
}