1:利用一维逆序输出
#include<stdio.h>
void main()
{int i,a[5],b[5];
for(i=0;i<5;i++)
{scanf("%d",&a[i]);}
for(i=0;i<5;i++)
{b[i]=a[4-i]; //如果用原来的a数组到后面时前几个项的数字已经改变也就是说原来的数字已经不再
printf("%2d",b[i]); //无法给后面的赋值了 ,所以再使用一个数组,是原来的a数组不变
}
}
2:利用一维数组选择法升序
每次筛选出最小的数字放在前面,第一次筛选十个,第二次筛选九个。。。。
#include<stdio.h>
void main()
{int N,i,m,min,a[10];
N=10;
printf("输入%d个需要排列的整数:\n",N);
for(i=0;i<10;i++)
{scanf("%d",&a[i]);} //完成创建数组
for(m=0;m<10;m++)
{
min=a[m];
for(i=m;i<10;i++)
{if(min>a[i])
{min=a[i];
a[i]=a[m];
a[m]=min;
}
}
printf("%2d",a[m]);
}
}
3:利用冒泡法对十个整数升序
两两交换把最大的数字放在最后;
每一轮都把大的数字往后移动
#include<stdio.h>
void main()
{int N,i,j,max,a[10];
N=10;
printf("输入%d个需要排列的整数:\n",N);
for(i=0;i<10;i++)
{scanf("%d",&a[i]);} //完成创建数组
for(i=0;i<=9;i++)
{for(j=0;j<=9-i;j++)
if(a[j]>a[j+1])
{
max=a[j];
a[j]=a[j+1];
a[j+1]=max;
}
printf("%2d",a[i]);
}
}
4:puts和gets
首先这是字符串类型的方法头文件要导入<string.h>
puts把字符串以\0结束的字符序列输出(每个字符串最后都会有一个默认添加的"\0",只要字符串的空有空间最后都是\0收尾,其余位置不用\0本身也占一个字符串)
gets把字符串以\0结束的字符序列输入相当于取地址
#include<stdio.h>
#include<string.h>
void main()
{
char str[100];
printf("输入你想说的话:");
gets(str);//输入内容
puts(str);
}
5字符串连接:以最后的\0为拼接点
strcat()
#include<stdio.h>
#include<string.h>
void main()
{
char str1[]={"hello"};
char str2[]={"world"};
strcat(str1,str2);//拼接并存放在str1
strcat(str1,"!");//也可以自己添加一些字符
puts(str1);
//或者
printf("%s",str1);
}
6:字符串的复制
数组名不能直接赋值,数组名是是地址
两个组名不能直接赋值
在复制的时候,复制到的那个数组必须足够大
复制是复制拼接是拼接,复制会删除 复制到的符串的原有内容,也就是说复制是把另一个字符串里的内容完全照搬,而不是拼接!
#include<stdio.h>
#include<string.h>
void main()
{
char str1[]={"hello"};
char str2[]={"world"};
strcpy(str1,str2);
strcat(str1,"!");
puts(str1);
//或者
printf("%s",str1);
}
7:字符串测量长度
#include<stdio.h>
#include<string.h>
void main()
{ int m,n;
char str1[]={"hello"};
char str2[]={"world"};
strcpy(str1,str2);
strcat(str1,"!");
m=strlen(str1);//第一种测量方式 当然也可以直接printf("%d",strlen(str1));
n=strlen("and you");//第二种测量方式
printf("%d\n%d\n",m,n);
}