main函数参数及冒泡排序

来源:互联网 发布:java 手机号验证 编辑:程序博客网 时间:2024/06/08 18:25
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 
例如:命令行参数输入:test.exe -a 1 2 
执行1+2输出3 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc,char *argv[])
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d",&a,&b);
if(strcmp("-a",argv[1])==0)
{
c = a+b;
printf("a+b=%d\n",c);
}
if(strcmp("-s",argv[2])==0)
{
c = a-b;
printf("a-b=%d\n",c);
}
if(strcmp("-m",argv[3])==0)
{
c = a*b;
printf("a*b=%d\n",c);
}
if(strcmp("-d",argv[4])==0)
{
c = a/b;
printf("a/b=%d\n",c);
}
system("pause");
return 0;

}

修改main函数的命令行参数:

项目->属性->配置属性->调试->命令行参数

每个参数用空格隔开即可

2.写冒泡排序可以排序多个字符串。

#include<stdio.h>
#include<stdlib.h>
void display(int *a,int sz)//循环打印该数组的每一个元素
{
int i = 0;
for(i=0;i<sz;i++)
{
printf("%d ",a[i]);
}
}
void swap(int *a,int *b)//两个数进行交换
{
*a^=*b;
*b^=*a;
*a^=*b;
}
void my_bubble(int *a,int sz)
{
int *start = a;//定义一个指针start指向数组a的首元素
int i = 0;
int j = 0;
int flag = 0;//是否进行交换标志位
for(j=0;j<sz-1;j++)//如果有n个数,那只需将n-1个数排序,剩下的一个数就自然放到了最前面
{
for(i=0;i<sz-j-1;i++)//第一趟冒泡排序,第二趟冒泡排序只需要比较到倒数第二个数,因为最后一个数已经为最大的了
{
if((*(start+i))>(*(start+i+1)))//如果前一个比后一个大那么它俩调换位置
{
swap((start+i),(start+i+1));
flag=1;//交换两个数的值后将标志位置1,证明交换过
}
}
if(!flag)//如果进行一次冒泡排序后没有进行交换则就已经为有序的,就不需要在进行排序
{
break;
}
}
}
int main()
{
int a[]={1,23,4,5,3,6,12,45};//输入一组数据
int sz = sizeof(a)/sizeof(a[0]);//求该数组的元素个数
my_bubble(a,sz);//冒泡排序
display(a,sz);//打印
system("pause");
return 0;
}