中易网

(C++)设计一个参数数目可变的函数,输出n个实参之和

答案:3  悬赏:0  
解决时间 2021-02-11 09:23
(C++)设计一个参数数目可变的函数,输出n个实参之和
最佳答案
一楼说的那个比较不沾边,楼主不要看了。
设计可变参数数目的函数的主要难度在于要自己手动从栈中提取参数,但这些有现成的宏定义可以用,在<stdarg.h>和<stdargs.h>中。
下面是一个例子,sum()的功能是任意数量的整数求和。
sum()第一个参数是要求和的数的个数,后面跟着若干整型参数。如果实参个数小于第一个参数num的数值,sum()行为不确定。
也可以不用num而设置一个参数结束标志(比如最后一个参数为-1等),但也有同样的问题。说白了就是你必须给函数一个知道参数个数的方法,否则函数无法知道你到底在调用的时候给了几个实参。
#include <stdio.h>
#include <stdarg.h>

int sum(int num, ...)
{
va_list parg;
int arg;
int s;
int i;

va_start(parg, num);
for (s = 0, i = 0; i < num; i++)
{
arg = va_arg(parg, int);
s += arg;
}
va_end(parg);

return s;
}

int main(int argc, char* argv[])
{
printf("%d\n", sum(1, 1)); // 1
printf("%d\n", sum(2, 1, 2)); // 1 + 2
printf("%d\n", sum(3, 1, 2, 3)); // 1 + 2 + 3
printf("%d\n", sum(4, 1, 2, 3, 4)); // 1 + 2 + 3 + 4

return 0;
}
全部回答
是实现N个数字相加还是什么??? 我不太明白你要问的,先随便给你写个 #include<iostream.h> void add() { int n=0; double a=0,s=0; cout<<"请输入相加的个数"<<endl; cin >>n; for(int i=0;i<n;i++) { cout<<"请输入第"<<i+1<<"个数"<<endl; cin>>a; s=s+a; } cout<<"这"<<n<<"个数的和为"<<s<<endl; } void main() { add(); } 好久没用C++了没调试大概就这个意思!
可以使用c语言有个允许定义可接受可变参数列表的函数的功能。 如为了访问一个可变参数表中额外的参数就,需要使用中定义的宏。它们允许在任何时候从头到尾地遍历一个附加参数列表。在遇到每一个参数前要知道它的类型(调用之前可以不必清楚细节了)。可以使用一个固定参数(例如printf的第一个参数,第二个就是可变参数(实现))来提供一些信息如参数数目、类型。 自己百度下关于c标准库 (标准参数库头文件)的使用吧。。 很简单,下面是你的题目答案:
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
曾家湾地址在哪,我要去那里办事
求神雕侠侣外传,猪脚是杨过,在成为武学宗师
七彩云南第壹城的地下停车场面积是多少?车位
快乐365地址有知道的么?有点事想过去
工作满6年合同即将到期本人提出不续签又失业
豫a9h70a车主是谁呀
盈丰家私在哪里啊,我有事要去这个地方
太和附近有Nike鞋店吗
htconem8热启动工程模式怎么操作
高源线/G20(路口)地址在什么地方,想过去办事
qq三国的镶工的三孔,4孔书在哪里买?
卫生间的位置
马克华菲国际时尚男装这个地址在什么地方,我
我在外地生了小孩能把医疗保险拿回老家报销吗
阴历1988年7月8日生的是哪个星座.
推荐资讯
大学清考可以消除舞弊记录吗
DNF 幻影套装9件 带什么武器合适?
广州铁路(集团)公司洛湛铁路茂岑段工程建设指
尚经社区卫生站地址在什么地方,想过去办事
65×27-55x17的简便算法
润邦印刷厂在哪里啊,我有事要去这个地方
聚宝轩怎么去啊,有知道地址的么
买手机送的电信卡,每个月需要套餐费29元,买
有朋友知道杭州劳务市场在什么地方吗
小熊中老年平价服装(总店)在哪里啊,我有事要
军人伤残补助金和抚恤金是一会事吗?
1212-1111+1010-909+808-707+606 这道题怎么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?