冒泡排序
解析:i < 5 - 1:5 个数比循环比 4 趟,序号从0开始,0~4 共5个数
j < 5 - 1 - i :5 个数只比四次,序号从 0 开始,并且要防止 j + 1 数据溢出,并每次递减
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[5]={2,68,17,52,41};
int temp;
for(int i=0;i<5-1;i++){ //5个数比4趟,最后一个数不需要比,直接固定了位置
printf("%d:\n",i);
for(int j=0;j<5-1-i;j++){ //每个数从最开始比4次,每一趟都递减
if(a[j]<a[j+1]){ //如果前一个数小于后一个数就交换
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(int i=0;i<5;i++){
printf("%d\t",a[i]);
}
printf("\n");
}
}
return 0;
}
运行结果:
选择排序
解析:设定一个 index 值,默认为最前面的那个数的脚标
由于每个数排好序了之后就不动了,所以最前面的那个数的脚标不可能一直为0
将每个数(index脚标的数除外)跟index比大小,方法类似找最大值
将最大的或最小的脚标赋值给index,每个数比完一圈出来再判断index值有没有变
变了就和原来那个位置进行交换
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[5]={12,34,22,91,3};
int index;
int temp;
for(int i=0;i<5-1;i++){
index=i; //设定的值 一开始index=0
for(int j=i+1;j<5;j++){ //一开始index和1比
if(a[index]<a[j]){
index=j;
}
}
if(index!=i){
temp=a[i];
a[i]=a[index];
a[index]=temp;
}
}
for(int k=0;k<5;k++){
printf("%d\t",a[k]);
}
printf("\n");
return 0;
}
运行结果:
输入字符串排序
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{ char str[100]={0};
scanf("%s",str);
puts(str);
int temp;
int index;
for(int i=0;i<strlen(str)-1;i++){
index=i;
for(int j=i+1;j<strlen(str);j++){
if(str[index]>str[j]){
index=j;
}
}
if(index!=i){
temp=str[i];
str[i]=str[index];
str[index]=temp;
}
}
puts(str);
return 0;
}
运行结果:
四则运算函数封装
#include <stdio.h>
int jia(int a,int b){
int data=a+b;
printf("%d+%d=%d\n",a,b,a+b);
return data;
}
int jian(int a,int b){
int data=a-b;
printf("%d-%d=%d\n",a,b,a-b);
return data;
}
int cheng(int a,int b){
int data=a*b;
printf("%dx%d=%d\n",a,b,a*b);
return data;
}
int chu(int a,int b){
int data=a/b;
printf("%d/%d=%d\n",a,b,a/b);
return data;
}
int main(int argc, const char *argv[])
{
int a,b;
char c;
scanf("%d%c%d",&a,&c,&b);
if('+'==c){
jia(a,b);
}else if('-'==c){
jian(a,b);
}else if('*'==c){
cheng(a,b);
}else if('/'==c){
chu(a,b);
}
return 0;
}
封装杨辉三角
#include <stdio.h>
void sanjiao(int num){
int arr1[100][100]={0};
for(int i=1;i<num;i++){
arr1[0][0]=1;
for(int j=0;j<=i;j++){ //必须是<=i因为要包括10
if(j==0){
arr1[i][j]=1; //将每一行的第0个单独处理
}else{
arr1[i][j]=arr1[i-1][j-1]+arr1[i-1][j];
}
}
}
for(int i=0;i<num;i++){
for(int j=0;j<=i;j++){ //必须是<=i因为要包括10
printf("%d\t",arr1[i][j]);
}
printf("\n");
}
}
int main(int argc, const char *argv[])
{
int data;
scanf("%d",&data);
sanjiao(data);
return 0;
}
封装strlen
#include <stdio.h>
void length(char str[]){
int num=0;
for(int i=0;'\0'!=str[i];i++){
num++;
}
printf("length=%d\n",num);
return;
}
int main(int argc, const char *argv[])
{
char str[100]={0};
scanf("%s",str);
length(str);
return 0;
}
运行结果:
封装strcpy
#include <stdio.h>
void strcopy(char str2[],char str1[]){
for(int i=0;'\0'!=str1[i];i++){
str2[i]=str1[i];
}
printf("%s\n",str2);
}
int main(int argc, const char *argv[])
{
char str1[100]="hello ";
char str2[100]="12345 yangruixue!";
strcopy(str2,str1); //str1 复制给 str2
return 0;
}
运行结果:
封装strncpy
#include <stdio.h>
void strcopy(char str2[],char str1[],int n){
for(int i=0;'\0'!=str1[i];i++){
if(i==n){
break;
}
str2[i]=str1[i];
}
printf("%s\n",str2);
}
int main(int argc, const char *argv[])
{
char str1[100]="hello ";
char str2[100]="12345 yangruixue!";
strcopy(str2,str1,3); //str1 复制给 str2
return 0;
}
运行结果:
封装strcmp
#include <stdio.h>
#include <string.h>
void strcompare(char str1[],char str2[]){
int res=0;
for(int i=0;i<strlen(str2);i++){
res=str1[i]-str2[i];
if(res>0||res<0){
break;
}
}
printf("%d\n",res);
}
int main(int argc, const char *argv[])
{
char str1[10]="23459";
char str2[10]="2345987";
strcompare(str1,str2);
return 0;
}
运行结果:
封装strcat
#include <stdio.h>
#include <string.h>
void strjoin(char str1[],char str2[]){
int j=0;
int i=0;
int length=(strlen(str1)+strlen(str2));
for(i=strlen(str1);i<length;i++){
str1[i]=str2[j];
j++;
}
str1[i]='\0';
printf("%s\n",str1);
}
int main(int argc, const char *argv[])
{
char str1[10]="hello ";
char str2[10]="world";
strjoin(str1,str2);
return 0;
}
运行结果:
封装memset
#include <stdio.h>
#include <string.h>
void strset(char str1[],char a,int num){
int i=0;
for(i=0;i<num;i++){
str1[i]=a;
}
printf("%s\n",str1);
}
int main(int argc, const char *argv[])
{
char str1[10]="12345678";
strset(str1,'a',4);
return 0;
}
运行结果: