冒泡排序
#include <stdio.h>
int main()
{
int arr[]={7,6,9,7,10,3,5,10};
int n=sizeof(arr)/sizeof(int);
int *p=arr;
int i,j;
for(i=1;i<n;i++)
{
int count=0;
for(j=0;j<n-i;j++)
{
if(*(p+j)>*(p+j+1))
{
int t=*(p+j);
*(p+j)=*(p+1+j);
*(p+1+j)=t;
count++;
}
}
if(count==0)
break;
}
for(i=0;i<n;i++)
printf("%d ",*(p+i));
printf("\n");
return 0;
}
简单选择排序
#include <stdio.h>
int main()
{
int arr[]={1,3,6,9,10,-5,6,1,40};
int n=sizeof(arr)/sizeof(int);
int i,j,t;
int *p=arr;
for(i=0;i<n-1;i++)
{
t=i;
for(j=i+1;j<n;j++)
{
if(*(p+t)>*(p+j))
{
t=j;
}
}
if(t!=i){
int tmp=*(p+i);
*(p+i)=*(p+t);
*(p+t)=tmp;
}
}
for(i=0;i<n;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
return 0;
}
杨辉三角
#include <stdio.h>
int main()
{
printf("打印几行杨辉三角:");
int n;
scanf("%d",&n);
int arr[n][n];
int (*p)[n]=arr;
int i,j;
for(i=0;i<n;i++)
{
for(j=n;j>=i;j--)
printf(" ");
for(j=0;j<=i;j++)
{
if(i==j||j==0)
{
*(*(p+i)+j)=1;
}
else if(i>1&&j>0)
{
*(*(p+i)+j)=*(*(p+i-1)+j-1)+*(*(p+i-1)+j);
}
printf("%-4d",*(*(p+i)+j));
}
printf("\n");
}
return 0;
}
字符串练习
#include <stdio.h>
#include <string.h>
char *nizhi(char *str ,int n) //字符串逆置
{
char *p=str;
char *q=p+n-1;
char t;
while(str<q)
{
if(str<q)
{
t=*str;
*str=*q;
*q=t;
q--;
str++;
}
}
int i=0,j=0,k;
while(*(p+i))
{
while(*(p+j)!=' '&&*(p+j)!='\0')
{
j++;
}
k=j-1;
while(i<k)
{
t=*(p+i);*(p+i)=*(p+k);*(p+k)=t;
i++;
k--;
}
while(*(p+j)==' ')
{
j++;
}
i=j;
}
return p;
}
int my_atoi(char *str) //自写atoi函数
{
int sum=0;
while(*str)
{
sum=sum*10+(*str++-48);
}
return sum;
}
size_t my_strlen(const char *str) //自写strlen函数
{
const char *p=str;
while(*str++);
return str-p;
}
char *my_strcpy(char *str1, const char *str2) //自写strcpy函数
{
char *p=str1;
while(*str2)
{
*str1++=*str2++;
}
*str1='\0';
return p;
}
char *my_strcat(char *str1,const char *str2) //自写strcat函数
{
char *p=str1;
while(*str1++);
while(*str2)
{
*(str1++-1)=*str2++;
}
return p;
}
int my_strcmp(const char *str1,const char *str2) //自写strcmp函数
{
while(*str1++==*str2++)
{
if(*str1!='\0')
break;
}
return *(str1-1)-*(str2-1);
}
char *shanchu(char *str) //删除字符串中的空格并输出
{
char *p=str;
int i=0;
while(*p)
{
if(*p!=' ')
*(str+i++)=*p;
p++;
}
*(str+i)='\0';
return str;
}
int main()
{
char str[100]={"hello world!"};
char str2[100]={"hello world! "};
char str1[]={"12346"};
int n=sizeof(str)/sizeof(char)-1;
//puts(nizhi(str,n));
//printf("%d\n",my_atoi(str1));
//printf("%ld\n",my_strlen(str));
//puts(my_strcpy(str,str1));
//puts(my_strcat(str,str1));
//printf("%d %d\n",my_strcmp(str,str2),'a'-'h');
//printf("%d\n",strcmp(str,str2));
char a[]=" sf fa see g";
puts(shanchu(a));
return 0;
}