C语言党组织决定大小问题题

安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&1733人阅读
狂奔のC/C++(27)
例:3n&#43;1问题
对于任意大于1的自然数n,若n为奇数,则将n变为3n&#43;1,否则变为n的一半。经过若干次变换,一定会使n变为1。例如3-》10-》5-》16-》8-》4-》2-》1。
输入n,输出变换的次数。n不大于10的九次幂。
样例输入:3
样例输出:7
解:直接模拟过程即可,下面是代码:
#include&stdio.h&
int main()
int n, count = 0;
scanf(&%d&, &n);
while(n & 1)
if(n%2 == 1) n = n * 3 + 1;
else n /= 2;
printf(&%d\n&, count);
验证上面样例,发现正确:
那如果输入的是呢?结果:
居然是1!原来是因为定义的n为int型整数,它的最大&#20540;为,也就是说,在程序刚刚执行了一次“n = 3*n&#43;1”时,就已经溢出了,所以直接输出了1~所以只好用64位长整型了,程序如下:
#include&stdio.h&
int main()
int count = 0;
//定义64位长整型数
scanf(&%lld&, &n);//此处&%lld&也可写成&%I64d&
while(n & 1)
if(n%2 == 1) n = n * 3 + 1;
else n /= 2;
printf(&%d\n&, count);
下面看运行结果:
程序正常运行~
总结:在编写程序时,要注意定义的变量溢出的问题,否则很可能纠结于程序的逻辑正确与否上却发现怎么也找不出Bug,纠结啊...
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:153728次
积分:3086
积分:3086
排名:第11778名
原创:79篇
转载:51篇
评论:35条
文章:23篇
阅读:28584
文章:22篇
阅读:34555
文章:19篇
阅读:25295
(1)(20)(71)(37)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 178 人关注过本帖
标题:求助,小程序到底出了什么问题
等 级:新手上路
&&问题点数:20&&回复次数:6&&&
求助,小程序到底出了什么问题
#include&stdio.h&
int main()
&&& int a ,b ,c ,
&&& scanf(&%d %d %d %d&,&a,&b,&c,&d);
&&& Sum=a+b+c+d;
&&& double A
&&& Average=Sum/4.0;
&&& printf(&Sum=%d;&,Sum);
&&& printf(& Average=%.1lf\n&,Average);
&&& return 0;
********************************************************************************************************************************************
********************************************************************************************************************************************
&&可以用但是提交说这个问题,看不懂 是什么意思 求解释,大一菜鸟勿喷。
*****************************************************************************************************************************************
7-2 求整数均值(10 分)
本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。
输入在一行中给出4个整数,其间以空格分隔。
在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
Sum = 10; Average = 2.5
附件: 您没有浏览附件的权限,请
来 自:桃花岛
等 级:贵宾
威 望:18
帖 子:999
专家分:3385
scanf(&%d %d %d %d&,&a,&b,&c,&d);&&&-----&&&scanf(&%d%d%d%d&, &a, &b, &c, &d);
一万年太久,只争朝夕
等 级:新手上路
回复 2楼 炎天
还是不对。
等 级:版主
威 望:208
帖 子:5034
专家分:27558
如果眼睛不好,你可以用比对软件呀
第一步,运行你的程序,并输入样例“1 2 3 4”,得到输出“Sum=10; Average=2.5”,将输出粘贴到比较软件的左边
第二步,将题目中的样例输出,即“Sum = 10; Average = 2.5”,粘贴到比较软件的右边
第三步,比较
等 级:新手上路
c语言中要求所有定义变量在最上方定义。不能想用到什么变量才定义。
#include&stdio.h&
int main()
&&& int a ,b ,c ,
&&& double A
&&& scanf(&%d%d%d%d&,&a,&b,&c,&d);
&&& Sum=a+b+c+d;
&&& Average=Sum/4.0;
&&& printf(&Sum=%d;&,Sum);
&&& printf(& Average=%.1lf\n&,Average);
&&& return 0;
等 级:新手上路
回复 5楼 ka1223
等 级:版主
威 望:208
帖 子:5034
专家分:27558
以下是引用ka1223在 13:15:11的发言:
c语言中要求所有定义变量在最上方定义。不能想用到什么变量才定义。
得两个条件条件同时存在
a. 你必须是在上个世纪学的C语言
b. 在这个新世纪中你没接触过外界
否则,你应知道,早在上个世纪末,C语言就……
版权所有,并保留所有权利。
Powered by , Processed in 0.064119 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved求C语言大神指教小儿科问题!_百度宝宝知道

我要回帖

更多关于 小问题 的文章

 

随机推荐