用c语言求1到100的和要求不用循环 不用if不用switch不用三目
答案:6 悬赏:20 手机版
解决时间 2021-01-19 04:27
- 提问者网友:藍了天白赴美
- 2021-01-18 19:16
用c语言求1到100的和要求不用循环 不用if不用switch不用三目
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-01-18 20:44
提供办法之一。
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#define SUM(x) (x+(x+1)+(x+2)+(x+3)+(x+4)+(x+5)+(x+6)+(x+7)+(x+8)+(x+9))
int main(void){
int y=100;
y+=SUM(0)+SUM(10)+SUM(20)+SUM(30)+SUM(40)+SUM(50)+SUM(60)+SUM(70)+SUM(80)+SUM(90);
printf("1+2+3+...+100 = %d
",y);
return 0;
}
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#define SUM(x) (x+(x+1)+(x+2)+(x+3)+(x+4)+(x+5)+(x+6)+(x+7)+(x+8)+(x+9))
int main(void){
int y=100;
y+=SUM(0)+SUM(10)+SUM(20)+SUM(30)+SUM(40)+SUM(50)+SUM(60)+SUM(70)+SUM(80)+SUM(90);
printf("1+2+3+...+100 = %d
",y);
return 0;
}
全部回答
- 1楼网友:躲不过心动
- 2021-01-19 00:46
1到100是一个等差数列,因此直接使用等差数列求和公式就行了,参考代码如下:#include
int main()
{
printf("%d ", 100*(100+1)/2);
return 0;
}
- 2楼网友:话散在刀尖上
- 2021-01-19 00:39
应该是递归函数,递归函数有时候很有用,但是自身不断调用自身,很占用内存
int add(int a,int sum)
{
if(a == 100)
return sum + 100;
else
return add(++a,sum);
}
int main(0
{
printf("result is %d", add(1,0);
}追问不能用if 啦 这个我也会用的提前说是用调用函数提示
int add(int a,int sum)
{
if(a == 100)
return sum + 100;
else
return add(++a,sum);
}
int main(0
{
printf("result is %d", add(1,0);
}追问不能用if 啦 这个我也会用的提前说是用调用函数提示
- 3楼网友:有你哪都是故乡
- 2021-01-18 23:12
什么都不让用,直接计算就好了!
#include
void main()
{
printf("%d ", (1+100)*100/2 ) ;
}追问不可以这样用公式的提示是要用调用函数 一个个加想了好久追答即使是递归函数也会用到if啊,用来判断递归出口追问我也知道啊 不然我不会说他变态的追答
你试试这个#include
int add( int n )
{
int res=1;
(n<=1) || (res=n+add(n-1)); //利用||的短路特性控制递归出口
return res;
}
void main()
{
printf("%d ", add(100) ) ;
}追问他是怎么退出去的?怎么短路是不是当n等于1时就不进行||后面的了?和0&&一样追答查询一下|| 和&&的特点吧
||在左边为真时,不执行右边,左边为假时,才执行右边!追问懂了
#include
void main()
{
printf("%d ", (1+100)*100/2 ) ;
}追问不可以这样用公式的提示是要用调用函数 一个个加想了好久追答即使是递归函数也会用到if啊,用来判断递归出口追问我也知道啊 不然我不会说他变态的追答
你试试这个#include
int add( int n )
{
int res=1;
(n<=1) || (res=n+add(n-1)); //利用||的短路特性控制递归出口
return res;
}
void main()
{
printf("%d ", add(100) ) ;
}追问他是怎么退出去的?怎么短路是不是当n等于1时就不进行||后面的了?和0&&一样追答查询一下|| 和&&的特点吧
||在左边为真时,不执行右边,左边为假时,才执行右边!追问懂了
- 4楼网友:渊鱼
- 2021-01-18 22:56
#include
int f(int begin,int end)
{
return begin }
int main()
{
printf("%d",f(1,100));
return 0;
}
完全符合你条件追问?:是什么运算啊追答?:这是一个运算符,条件运算符。。也是唯一的三目运算符追问可是上面不让三目呢
int f(int begin,int end)
{
return begin
int main()
{
printf("%d",f(1,100));
return 0;
}
完全符合你条件追问?:是什么运算啊追答?:这是一个运算符,条件运算符。。也是唯一的三目运算符追问可是上面不让三目呢
- 5楼网友:十年萤火照君眠
- 2021-01-18 21:40
#include
int f(int n)
{
if( 1 == n )
{
return 1;
}
else
{
n = f( n -1 ) + n;
}
}
int main(void)
{
printf("%d \n", f( 100 ) );
return 0;
}
int f(int n)
{
if( 1 == n )
{
return 1;
}
else
{
n = f( n -1 ) + n;
}
}
int main(void)
{
printf("%d \n", f( 100 ) );
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯