各位大神这个goto语句怎么改成其他的语法?学校oj说时间超限了
本帖最后由 北笙哟 于 2021-10-27 23:33 编辑#include <stdio.h>
int main()
{
long long int n,M;
_Bool flag = 1;
while(flag != 0)
{
scanf("%lld",&n);
if(1 <= n && n < 1000000000)
{
RETURN: if(n>100)
{
M = n - 10;
}
else if(n <= 100)
{
if(flag = 1)
{
n = n + 11;
goto RETURN;
flag = 0;
}
else
{
goto RETURN;
}
}
}
else
{
flag = 0;
}
printf("%lld\n",M);
}
return 0;
} 本帖最后由 jackz007 于 2021-10-28 00:06 编辑
#include <stdio.h>
unsigned long long foo(unsigned long long d)
{
return (d > 100) ? d - 10 : foo(d + 11) ;
}
int main(void)
{
char s ;
unsigned long long d , i ,n ;
for(n = 0 ;;) {
gets(s) ;
if(s) sscanf(s , "%llu" , & d) ;
else break ;// 按下空回车键结束输入
}
for(i = 0 ; i < n ; i ++) printf("%llu\n" , foo(d)) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o xx.c
D:\00.Excise\C>x
90
200
91
190
D:\00.Excise\C> jackz007 发表于 2021-10-28 00:04
编译、运行实况:
大神我将您的代码自己运行了,没有错误,可是复制到学校的oj里面又说时间超限欸,您看看? 北笙哟 发表于 2021-10-28 00:24
大神我将您的代码自己运行了,没有错误,可是复制到学校的oj里面又说时间超限欸,您看看?
难道是递归浪费了时间?
再试试这个呢?
#include <stdio.h>
unsigned long long foo(unsigned long long d)
{
return (d > 100) ? d - 10 : foo(d + 11) ;
}
unsigned long long foo2(unsigned long long d)
{
while(d <= 100) d += 11 ;
return d - 10 ;
}
int main(void)
{
char s ;
unsigned long long d , i ,n ;
for(n = 0 ;;) {
gets(s) ;
if(s) sscanf(s , "%llu" , & d) ;
else break ;// 按下空回车键结束输入
}
for(i = 0 ; i < n ; i ++) printf("%llu\n" , foo2(d)) ;
}
页:
[1]