| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5743 人关注过本帖
标题:从保留字interrupt到形参数目可变函数的讨论
只看楼主 加入收藏
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
//若干个自然数的最大公约数
//形参1释义:指明“若干”是几

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

unsigned GCD(unsigned a,unsigned b)
{
return b?GCD(b,a%b):a;
}

unsigned gcd(int nterm, ...)
{
unsigned gcd=0;
int i;
va_list p;
va_start(p,nterm);
for(i=1;i<=nterm;i++)
{
gcd=GCD(va_arg(p,unsigned),gcd);
}
va_end(p);
return gcd;
}

main( )
{
printf("%d\n",gcd(2,15,36));

printf("%d\n",gcd(4,480,216,360,1296));
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-09 06:01
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

//若干个自然数的最小公倍数
//形参1释义:指明“若干”是几

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

static unsigned GCD(unsigned a,unsigned b)
{
return b?GCD(b,a%b):a;
}

static unsigned LCM(unsigned a,unsigned b)
{
return a/GCD(a,b)*b;
}

unsigned lcm(int nterm, ...)
{
unsigned lcm=1;
int i;
va_list p;
va_start(p,nterm);
for(i=1;i<=nterm;i++)
{
lcm=LCM(va_arg(p,unsigned),lcm);
}
va_end(p);
return lcm;
}

main( )
{
printf("%d\n",lcm(2,15,36));

printf("%d\n",lcm(4,480,216,360,1296));
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-09 08:59
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-09 09:55
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

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

unsigned short GCD(unsigned short a,unsigned short b)
{
return b?GCD(b,a%b):a;
}

unsigned short gcd(int nterm, ...)
{
unsigned short gcd=0;
int i;
va_list p;
va_start(p,nterm);
for(i=1;i<=nterm;i++)
{
gcd=GCD(va_arg(p,unsigned short),gcd);
}
va_end(p);
return gcd;
}

main( )
{
printf("%d\n",gcd(2,15L,36)); //output 3

printf("%d\n",gcd(4,480,216L,360,1296L)); //output 24
}


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-09 10:57
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-09 11:08
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
谢谢您,俺受益匪浅。
看来变参函数是照实参(长度)压栈,
scanf()格式控制严格的原因在此。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-09 11:56
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-09 12:59
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 

#include<stdio.h>
double sumi(int,int);
double sumf(double,double);
main( )
{
printf("%lf\n",sumi(3.2,2));/*此处被警告,输出5.000000*/
printf("%lf\n",sumf(3.2,2));/*此处无警告,输出5.200000*/
}
double sumi(int i1,int i2)
{
return i1+i2;
}
double sumf(double x,double y)
{
return x+y;
}
//评论
//sumi(3.2,2)被警告是因为编译器预见到精度损失
//sumf(3.2,2)未受警告因为编译器预计精度无损失
//但从编程规范化考虑,两者都有欠缺。最好改为
//sumi((int)3.2,2)//意在表明:程序员有意为之
//sumf(3.2,(double)2)//理由同上
//类似轻微违法犯罪分子的区别


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-09 16:11
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-09 19:26
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
以下是引用穆扬在2006-6-9 19:26:30的发言:
勿以善小而不为

不知道现在–★–回过头去看林锐的文章是否有新的收获


偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-09 20:38
快速回复:从保留字interrupt到形参数目可变函数的讨论
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024954 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved