/*
声明,本7题在Microsoft Visual C++6.0环境下成功皆。
*/
第一题:
#include
#include
#define maxlen 100
int main(void)
{
char str[3][maxlen],tmp[maxlen];
int i,j,k;
for(i=0;i<3;i++)
gets(str[i]);
for(i=0;i<3-1;i++)//简单选择排序
{
k=i;
for(j=i+1;j<3;j++)
if(strcmp(str[k],str[j])>0)
k=j;
if(k!=i)
{
strcpy(tmp,str[k]);
strcpy(str[k],str[i]);
strcpy(str[i],tmp);
}
}
for(i=0;i<3;i++)
puts(str[i]);
return 0;
}
//如果为了提高效率(strcpy()函数效率低),可以采用字符指针数组的方式,避免复制来复制去,源码
如下:
#include
#include
#define maxlen 100
int main(void)
{
char str[3][maxlen],*ptmp,*ps[3];
int i,j,k;
for(i=0;i<3;i++)
{
gets(str[i]);
ps[i]=str[i];
}
for(i=0;i<3-1;i++)
{
k=i;
for(j=i+1;j<3;j++)
if(strcmp(ps[k],ps[j])>0)
k=j;
if(k!=i)
{
ptmp=ps[k];
ps[k]=ps[i];
ps[i]=ptmp;
}
}
for(i=0;i<3;i++)
puts(ps[i]);
return 0;
}
//传说中的分割线//
第二题:
#include
#define maxlen 100
int mystrlen(char *str)
{
int i;
for(i=0;*str!='\0';str++)
i++;
return i;
}
int main(void)
{
char str[maxlen];
gets(str);
printf("%d\n",mystrlen(str));
return 0;
}
//传说中的分割线//
第三题:
char *mymvcpy(char *sourcestr,int sourcelen,char *destinationstr,int move)//此处move为偏移
量,最小可为0
{
char *d0;
d0=destinationstr;
int i;
for(i=0;i
if(i>=move)
*(destinationstr++)=sourcestr[i];
}
*destinationstr='\0';
return d0;
}
//传说中的分割线//
第四题:
#include
#define maxsize 100
void rev(int *arr,int size)
{
int i,tmp;
for(i=0;i
tmp=arr[i];
arr[i]=arr[size-i-1];
arr[size-i-1]=tmp;
}
}
int main(void)
{
int arr[maxsize];
int i,n=5;
for(i=0;i
rev(arr,n);
for(i=0;i
putchar('\n');
return 0;
}
//传说中的分割线//
第五题:
int mystrcmp(char *s1,char *s2)//返回两字符串的第一个不同字符的ASCII值之差
{
for(;*s1!='\0'&&*s2!='\0'&&*s1==*s2;s1++,s2++)
;
return *s1-*s2;
}
//传说中的分割线//
第六题:
#include
#define maxlen 100
char *mystrcpy(char *destination,char *source)
{
char *d0;
d0=destination;
for(;*source!='\0';destination++,source++)
*destination=*source;
*destination='\0';
return d0;
}
int main(void)
{
char s[2][maxlen];
gets(s[0]);
mystrcpy(s[1],s[0]);
puts(s[1]);
return 0;
}
//传说中的分割线//
第七题:
#include
#include
#define maxlen 100
char *revstr(char *str)
{
int i,len;
char tmp;
len=strlen(str);
for(i=0;i
tmp=str[i];
str[i]=str[len-i-1];
str[len-i-1]=tmp;
}
return str;
}
int main(void)
{
char s[maxlen];
gets(s);
puts(revstr(s));
return 0;
}