一、冒泡排序
主要是封装函数进行整型数组的输入与输出,对输入的数组进行冒泡排序后,从小到大依次输出。(冒泡排序:即将第一个数字与后面依次比较大小,如果满足判断条件则交换,而后最小/最大放在最后,再进行排序将此时第一个数字与后面数字进行排序(此时已经不用再与刚刚最后一个进行比较),而后依次如此得出最终结果)) 。
#include <stdio.h>
//输入数组函数
int input(int *p)
{
int i = 0;
for (i=0;i<5;i++)
{
scanf("%d",p);
p++;
}
}
//输出数组函数
int output(int *c)
{
int j = 0;
for (j=0;j<5;j++)
{
printf("%5d ",*c++);
}
}
//冒泡排序
int sort(int *p)
{
int i = 0;
int j = 0;
int tmp = 0;
for (i=0;i<4;i++)
{
for (j=0;j<4-i;j++)
{
if(p[j] > p[j+1])
{
tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
}
}
}
}
int main()
{
int arr[5];
input(arr);
sort(arr);
output(arr);
}
二、字符型计算器
要求输入数字与字符在同一数组中,用到字符串数组,但是字符串中数字无法进行加减乘除运算,所以用两个新的字符串数组用来接收截取数字运算符前后的字符数字,之后进行转换运算。
(程序多了一点繁琐,封装四个函数分别用于加减乘除,其实也可以直接使用,不用封装函数)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//声明四个封装好的函数
float add(float a, float b );
float sub(float a1, float b1 );
float mul(float a2, float b2 );
float divis(float a3, float b3 );
int main()
{
char str[20] = {'\0'};
char str1[20] = {'\0'};
char str2[20] = {'\0'};
int i = 0,j=0,k=0,s=0;
float z = 0;
char c;
//定义一个字符串"quit"
char aar[10] = {"quit"};
while(1)
{
k = 0;j = 0;
//输入字符串
gets(str);
//截取数字运算符前面的字符串放入一个字符串数组中
for (i = 0;i<20;i++)
{
if (str[i]!='+'||str[i]!='-'||str[i]!='*'||str[i]!='/')
{
str1[j] = str[i];
j++;
if (str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/')
{
//取出数字运算符
c = str[i];
s = i;break;
}
}
}
//截取数字运算符之后的字符串,放入另一个字符串数组中
for (i = s+1;i<20;i++)
{
str2[k] = str[i];
k++;
}
//持续输入计算过程中,输入quit则退出循环
if(0 == strcmp(str,aar))
{
break;
}
//判断数字运算进行计算
else
{
//将刚刚赋值后的字符串中字符数字转换为double型数字
float x = atof(str1);
float y = atof(str2);
switch (c)
{
case '+' : z = add(x,y);break;
case '-' : z = sub(x,y);break;
case '*' : z = mul(x,y);break;
case '/' : z = divis(x,y);break;
}
printf("%f %c %f %f\n",x,c,y,z);
}
}
}
//封装加减乘除四个函数
float add(float a, float b)
{
return a+b;
}
float sub(float a1, float b1)
{
return a1-b1;
}
float mul(float a2, float b2)
{
return a2*b2;
}
float divis(float a3, float b3)
{
return a3/b3;
}
三、查看字符串
输入一串字符,然后对其中的字母小写,字母大写,数字,空格以及其它字符计算其个数,不算最后的结束标志。(主要调用函数进行统计,使用数组用来输出统计的数据)
#include <stdio.h>
//声明封装好的函数
void check(char *,int *);
int main()
{
char str[50] = {'\0'};
//定义整型数组用来输出结果
int arr[5] = {0};
//输入字符串
gets(str);
check(str,arr);
printf("大写:%d,小写:%d,数字:%d,空格:%d,字符:%d\n",\
arr[1],arr[0],arr[2],arr[3],arr[4]);
}
//无返回值使用void
void check(char *p,int *q)
{
int i=0,j=0,k=0,h=0,m=0;
while(*p != '\0')
{
if(*p >= 'a' && *p <='z')
{
i++;
}
else if(*p >= 'A' && *p <= 'Z')
{
j++;
}
else if(*p >= '0' & *p <= '9')
{
k++;
}
else if(*p == ' ')
{
h++;
}
else
{
m++;
}
p++;
}
//改变整型数组内,各个地址内所存放的值
*q = i;
*(q+1) = j;
*(q+2) = k;
*(q+3) = h;
*(q+4) = m;
}