jiangguo2 发表于 2013-2-13 10:57:59

C语言作业楼。。欢迎吐槽。。

本帖最后由 jiangguo2 于 2013-5-4 10:24 编辑

这是一只刚出生的猴子,这样
很久都没想起这个贴了(擦汗(贴一点之前写的吧(继续擦汗
2013。3。10
忘了是干什么的了(擦汗
#include <stdio.h>
#include<math.h>
int main(void)
{
int p=1,d=9;
while(d>=1){
p=2*(p+1);
d--;
}
printf("%d",p);
return 0;
}

output=1534


2013。2.27
某一天早晨,有一个猴子摘下了若干个桃子,当即就吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃了一半多一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天的时候再想吃的时,发现只剩下一个桃子了。这个贪吃的猴子第一天究竟摘了多少个桃子呢?
#include <stdio.h>
#include<math.h>
int main(void)
{
int p=1,d;
for(d=9;d>=1;d--)p=2*(p+1);
printf("%d",p);
return 0;
}
output:1534(right)

2013.2.25
输出100-200间的孪生质数
#include <stdio.h>
#include<math.h>
int P(int N)
{
int i,j;
j=(int)sqrt(N+1);
for(i=3;i<=j;i+=2)
{if(N%i==0)return 0;}
return 1;
}

int main(void)
{
int N,m,count=0;
for(N=101;N<=200;N+=2)
{
if (P(N)==1)
{
m=N;
N+=2;
if(P(N)==1)
{
printf("%d   ",m);
printf("%d\n",N);
count++;
}
N=N-2;
}
}
printf("%d\n",count);
return 0;
}
output:
101   103
107   109
137   139
149   151
179   181
191   193
197   199
7(right)

2013。2。13
斐波那契数列前100个数中是第(5*n+1)个数又是3的倍数的数的个数
#include<stdio.h>
int main(void)
{int a=1,b=0,i,count=0;/*溢出,换成long long后out put是4。。*/
for(i=2;i<=100;i++)
{if(i%5==1)
{if(a>=b){if(a%3==0)count++;}
else if(b%3==0)count++;}
if(a<b)a+=b;
else b+=a;
}
printf("%d\n",count);
return 0;
}
output 2
正确答案 5
没找到原因中。。

jingyixx 发表于 2013-2-13 11:12:33

用int型的话会负溢出的噢#26x

刘巧弟 发表于 2013-2-13 12:04:09

x满自溢了:90:

jiangguo2 发表于 2013-2-13 13:39:21

jingyixx 发表于 2013-2-13 11:12 static/image/common/back.gif
用int型的话会负溢出的噢

卧槽,我讨厌int。。

jiangguo2 发表于 2013-2-13 13:39:31

刘巧弟 发表于 2013-2-13 12:04 static/image/common/back.gif
x满自溢了

太坑爹。。

RangerCD 发表于 2013-2-13 19:47:24

楼主果断换long吧╮(╯_╰)╭
不行就long long。。。

jiangguo2 发表于 2013-2-13 20:03:06

RangerCD 发表于 2013-2-13 19:47 static/image/common/back.gif
楼主果断换long吧╮(╯_╰)╭
不行就long long。。。

换了啊还是错的TAT

RangerCD 发表于 2013-2-13 20:31:21

jiangguo2 发表于 2013-2-13 20:03 static/image/common/back.gif
换了啊还是错的TAT

楼主你给那个貌似溢出的数据加个条件语句,溢出了的就给个输出提示一下,看看是不是这个问题=。=

jiangguo2 发表于 2013-2-13 21:06:27

RangerCD 发表于 2013-2-13 20:31 static/image/common/back.gif
楼主你给那个貌似溢出的数据加个条件语句,溢出了的就给个输出提示一下,看看是不是这个问题=。= ...

。。诶多。。不会。。

RangerCD 发表于 2013-2-13 23:32:42

jiangguo2 发表于 2013-2-13 21:06 static/image/common/back.gif
。。诶多。。不会。。

就是每次a、b加完后判断下是不是小于0,如果是就说明还是溢出了

HellSing_Q 发表于 2013-2-14 00:23:23

jiangguo2 发表于 2013-2-13 21:06 static/image/common/back.gif
。。诶多。。不会。。

自己写个数据类型,用链表,然后实现下加减。模运算自己重载下。推荐更相损减术

刘巧弟 发表于 2013-2-14 03:32:48

ls正解 如果会溢出的话就自己设计一个类似endless counter的数据结构 用linkedlist很容易实现 设一个local uplimit 满了就开一个新的linked list node 这样就不会正能量爆表啦:31:

a2659633 发表于 2013-2-14 11:03:13

long long 的范围大概只有19位数,然后从第93个数就超出了long long,所以你可以用大数运算,简单来说就是用字符串存储,模拟手算过程,网上很多模板
61305790721611591--82
99194853094755497--83
160500643816367088--84
259695496911122585--85
420196140727489673--86
679891637638612258--87
1100087778366101931--88
1779979416004714189--89
2880067194370816120--90
4660046610375530309--91
7540113804746346429--92
12200160415121876738--93
19740274219868223167--94
31940434634990099905--95
51680708854858323072--96
83621143489848422977--97
135301852344706746049--98
218922995834555169026--99
354224848179261915075--100

jiangguo2 发表于 2013-2-14 17:02:01

a2659633 发表于 2013-2-14 11:03 static/image/common/back.gif
long long 的范围大概只有19位数,然后从第93个数就超出了long long,所以你可以用大数运算,简单来说就是 ...

。。数列什么的果然还是交给纸笔比较好!!!

jingyixx 发表于 2013-2-16 23:46:32

fib =
for i in range(2,100):
    fib.append(fib+fib)

count = 0

for i in range(0,100):
        if (i+1)%5 == 1:
                if fib%3 == 0:
                        count += 1

lz同学要是搞不定数据结构可以先来玩玩py,看多简单就好了#26x
为了容易明白一点没用py一些高级特性
页: [1] 2 3
查看完整版本: C语言作业楼。。欢迎吐槽。。