c - 可变函数-升序
问题描述
写一个升序函数(int n, char type, ...),接收n个值,严格升序返回1,否则返回0。类型字符表示值的类型,可以be 'd' - 你,'in' - 双倍。这是我的尝试,但我有点卡住了。
double asc(int n,char tip,...)
{
va_list va;
va_start(va,tip);
va_list var;
va_start(va,tip);
while(--n)
{
if(tip=='d')
{
int va1=va_arg(va,int);
if( va>va1)
return 1;
else
return 0;
}
else
if(tip=='f')
{
double va2=va_arg(va,double);
if(va>va2)
return 1;
else
return 0;
}
}
return 0;
}
int main(int argc, char const *argv[])
{
asc(3,'d',-1,7,9);
return 0;
}
解决方案
int asc(int n,char tip,...)
{
va_list va;
va_start(va,tip);
int result = 1;
union
{
int i;
double d;
}val1, val2;
if (n >= 2)
{
for(int i = 0; i < n-1; i++)
{
switch(tip)
{
case 'i':
if(!i) {val1.i = va_arg(va, int);}
val2.i = va_arg(va, int);
if( val1.i > val2.i)
{result = 0; goto function_return;}
val1.i = val2.i;
break;
case 'd':
if(!i) {val1.d = va_arg(va, double);}
val2.d = va_arg(va, double);
if( val1.d > val2.d)
{result = 0; goto function_return;}
val1.d = val2.d;
break;
default:
break;
}
}
}
function_return:
va_end(va);
return result;
}
int main(int argc, char const *argv[])
{
printf("%d\n", asc(4,'d',-1.0,7.0,9.0,0.0));
return 0;
}
推荐阅读
- javascript - React 中的 Widget 是什么,它与普通的 React 组件/类有何不同?
- google-apps-script - 使用 google-app-scripts 扩展 Google Calendar UI
- mysql - mysql - 动态选择行作为列
- c# - C# - 从 ItemClickEventArgs 中提取项目
- python-3.x - 蟒蛇类;哪种方法计算均值,添加新实例,添加实例列表
- apache-kafka - Kafka Consumer - 读取固定数量的消息
- node.js - 如果不是 libtool_re.match(line) 而不是 libtool_re5.match(line): TypeError: cannot use a string pattern on a bytes-like object
- bdd - BDD如果我在给定条件下有多个变量,我该如何编写表格
- r - R - 在用户定义的函数 R 中将字符串作为字符串传递
- amazon-web-services - CloudFormation KMS 加密问题