2018-2-2 test16

使用可变参数,实现函数,求函数参数的平均值。

#include<stdio.h>
#include<stdarg.h>
#include<windows.h>
int avg(nums, ...)
{
	va_list arg;
	va_start(arg, nums);
	int i = 0;
	int sum = 0;
	while (i < nums)
	{
		sum+=va_arg(arg, int);
		i++;
	}
	va_end(arg);
	return sum / nums;
	
}
int main()
{
	int data=avg(5, 1, 2, 3, 4, 5);
	printf("%d", data);
	system("pause");
	return 0;
}

使用可变参数,实现函数,求函数参数的最大值。

#include<stdio.h>
#include<stdarg.h>
#include<windows.h>
int my_max(nums, ...)
{
	va_list arg;
	va_start(arg, nums);
	int i = 0;
	int j = 0;
	while (i < nums)
	{
		int m = va_arg(arg, int);
		if (j < m)
		{
			j = m;
		}
		i++;
	}
	
	
	va_end(arg);
	return j;
	
}
int main()
{
	int data=my_max(5, 1, 2, 3, 4, 5);
	printf("%d", data);
	system("pause");
	return 0;
}

模拟实现printf函数
/*要实现printf函数,我们首先应该获取printf函数中由双引号中的字符串,若遇到不是%的字符,我们应该直接将其输出,若遇到%,我们应该判断它后面是什么字符,这里先只考虑%c,%s的情况,如果是%c那么我们应该将读到的字符输出来,若为%s,应该将读到的字符串通过指针解引用的方式依次输出,如果是%d%f我们暂且将它当做普通字符输出。
*/

实现的代码如下:

#include<stdio.h>
#include<stdarg.h>
#include<windows.h>
#include<assert.h>

void print(char* format, ...)
{
	assert(format);
	va_list arg;
	va_start(arg, format);
	char ch = 0;
	while (*format != '\0')
	{
		if (*format == '%')
		{
			format++;
			ch = *format;
			switch (ch)
			{
			case 'c':
			{
				char a = va_arg(arg, char);
				printf("%c ", a);
				break;
			}
			case 's':
			{
				char* b = va_arg(arg, char*);
				while (*b != '\0')
				{
					putchar(*b);
					b++;
				}
				printf(" ");
				break;
			}
			case 'd':
			{
				int c = va_arg(arg, int);
				printf("%d", c);
				break;
			}
			default:

				break;
			}

			format++;

		}

		else

		{

			putchar(*format);

			format++;

		}

	}
	va_end(arg);
	}

int main()
{

	
	print("%s%c%c%c%d.\n", "hello", 'b', 'i', 't',100);
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值