main函数参数_可变参数

来源:互联网 发布:好玩的java源代码 编辑:程序博客网 时间:2024/06/07 09:12
1.使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 
例如:输入test.exe -a 1 2 

执行1+2输出3 

在VS中编写代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdarg.h>

int main(int argc, char *argv[])
{
int num1 = 0;
int num2 = 0;
int result = 0;
if (argc != 4)
{
printf("输入参数个数有误!\n");
return 1;
}
int num1 = atoi(argv[2]);//此处利用atoi函数将指针数组类型转换为整型。
int num2 = atoi(argv[3]);
if (argv[1][0] == '-')
{
switch (argv[1][1])
{
case'a':
result = num1 + num2;
break;
case's':
result = num1 - num2;
break;
case'm':
result = num1 * num2;
break;
case'd':
result = num1 / num2;
break;
default:
printf("输入参数有误!\n");
break;
}
}
printf("%d\n", result);
return 0;
}

在DOS中运行:


2.使用可变参数,实现函数求未知参数部分n个数的平均值。 

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
int average(int n, ...)
{
va_list arg;
int i = 0;
int sum = 0;
va_start(arg, n);
for (i = 0; i < n; i++)
{
sum=sum+va_arg(arg, int);
}
va_end(arg);
return sum / n;
}
int main()
{
printf("%d\n",average(4,2,3,3,4));
system("pause");
return 0;

3.使用可变参数,实现函数求未知参数部分n个数中的最大值。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
int Max(int n, ...)
{
va_list arg;
int max = 0;
int i = 0;
int temp = 0;
va_start(arg, n);
max = va_arg(arg, int);
for (i = 1; i < n; i++)
{
if (max <( temp = va_arg(arg, int)))
{
max = temp;
}
}
va_end(arg);
return max;
}
int main()
{
printf("%d\n", Max(3, 9, 34, -45));
system("pause");
return 0;
}