使用main函数的参数,实现一个整数计算器
程序可以接受三个参数,第一个参数“ - a”选项执行加法,“ - s”选项执行减法,“ - m”选项执行乘法,“ - d”选项执行除法,后面两个参数为操作数。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[], char *envp[])
{
int ret = 0;
if (argc != 4)
printf("参数个数错误,argc=%d\n", argc);
else
{
switch (*(argv[1] + 1))
{
case 'a':
ret = atoi(argv[2]) + atoi(argv[3]);
break;
case 's':
ret = atoi(argv[2]) - atoi(argv[3]);
break;
case 'm':
ret = atoi(argv[2]) / atoi(argv[3]);
break;
case 'd':
ret = atoi(argv[2])*atoi(argv[3]);
break;
default:
printf("输入有误.\n");
break;
}
printf("ret=%d\n", ret);
}
system("pause");
return 0;
}
冒泡排序可以排序多个字符串
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int cmp_string(char *str1, char *str2)
{
assert(str1&&str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
void _Swap(char *str1, char *str2, size_t sz)
{
assert(str1&&str2);
unsigned int i = 0;
for (i = 0; i < sz; i++)
{
char tmp = *str1;
*str1 = *str2;
*str2 = tmp;
str1++;
str2++;
}
}
void bubble_sort(void *base, int num, int width, int(*cmp)(const void*e1, const void*e2))
{
assert(base != NULL);
int i = 0;
int j = 0;
for (i = 0; i < num - 1; i++)
{
for (j = 0; j < num - i - 1; j++)
{
if (cmp((char *)base + j*width, (char *)base + (j + 1)*width) >0 )
_Swap(((char *)base + j*width), ((char *)base + (j + 1)*width), width);
}
}
}
int main()
{
int i = 0;
char *arr[] = { "zhangsan", "lisi", "wangwu" };
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, sz, sizeof(arr[0]), cmp_string);
for (i = 0; i < sz; i++)
printf("%s\n", arr[i]);
system("pause");
return 0;
}