1. 输入5个数(含负数、小数)将它们按由小到大的顺序排列起来
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void sort(char *a[], int length)
{
int i, j;
char *tmp;
for (i = 1; i <= length - 1; i++)
{
for (j = 1; j <= length - i - 1; j++)
{
//if (strcmp(a[j + 1], a[j]) < 0)
if ((atof(a[j + 1]) - atof(a[j])) < 0)
{
tmp = a[j + 1];
a[j + 1] = a[j];
a[j] = tmp;
}
}
}
}
void print(char *a[], int length)
{
int i;
for (i = 1; i < length; i++)
{
printf("%s ", a[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
int i, j, tmp;
int length = argc;
sort(argv, length);
print(argv, length);
return 0;
}
atoi ( ) 函数是将字符串转换成浮点型
运行结果:
[root@localhost 0728]# ./103 -4 3 -7.1 -7.3 -7.2
-7.3 -7.2 -7.1 -4 3
2. 字符串逆序函数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void string_reverse(const char *ptr, char *str)
{
int len = strlen(ptr), i;
ptr += (len - 1);
for (i = 0; i < len; i++)
{
*str = *ptr;
str++;
ptr--;
}
}
int main()
{
char *ptr = (char *)malloc(sizeof(char) * 64);
char *str = (char *)malloc(sizeof(char) * 64);
printf("Please input:\n");
scanf("%s", ptr);
string_reverse(ptr, str);
printf("%s\n", str);
return 0;
}
3. 计算字符串中子串出现的次字数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int len_str, len_ptr, i, num = 0;
char *str = (char *)malloc(sizeof(char) * 32);
char *ptr = (char *)malloc(sizeof(char) * 32);
printf("Please input :\n");
scanf("%s%s", str, ptr);
len_str = strlen(str);
len_ptr = strlen(ptr);
if (len_str < len_ptr)
{
printf("input error!\n");
return -1;
}
for (i = 0; i < len_str - len_ptr + 1; i++)
{
if (strncmp(str + i, ptr, len_ptr) == 0)
{
num++;
}
if (i == len_str)
{
printf("%s 不是 %s 的子串\n", ptr, str);
}
}
if(num != 0)
{
printf("%s 共出现 %d 次\n", ptr, num);
}
return 0;
}