问题描述
写一个升序函数(int n,char type,...),接收n个值,严格升序返回1,否则返回0。type字符表示值的类型并且可以是 'd' - 你,'in' - 双倍。 这是我的尝试,但我有点卡住了。
class Tasks {
constructor() {
try {
this.initPromise = db.schema.createTable('tasks',table => {
table.increments('id');
table.string('task',128)
.notNullable();
table.boolean('completed');
table.timestamp('created_at').defaultTo(knex.fn.Now());
}).then();
} catch(err) {
console.error(err);
}
}
}
解决方法
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;
}