例如:输入test.exe -a 1 2
执行1+2输出3
在VS中编写代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdarg.h>
{
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;
}