荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: [合集]请教一个关于C的问题
发信站: 荔园晨风BBS站 (2005年05月30日16:36:25 星期一), 站内信件
☆ 1 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: 请教一个关于C的问题
时 间: Wed Apr 13 22:49:45 2005
我想实现1!+2!。。。。。+10!
我的代码如下:
#include<stdio.h>
main()
{
int i,j;
}
请问为什以实现不了?问题出在哪里?
☆ 2 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Wed Apr 13 22:58:56 2005
把类型改为float或double型
☆ 3 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月13日23:12:22 星期三
你在进行第三次循环的时候,term的值已经不是1了,应该把term的初始化放在
第一个for下面
☆ 4 ──────────── 我是分割线 ─────────────────☆
发信人: sunbyb (sunbyb), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月13日23:13:20 星期三
你的第二个for循环完成后term要让他返回1,
☆ 5 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Wed Apr 13 23:16:51 2005
对,按4097那样
☆ 6 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Wed Apr 13 23:17:31 2005
不好意思,是4079
☆ 7 ──────────── 我是分割线 ─────────────────☆
发信人: sunbyb (sunbyb), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月13日23:23:24 星期三
不过这种程序不好,只是针对一个特殊的题目,要设计就设计可以解决一类问题的程序
#include <iostream>
int get_data(int n);
void main()
{
using namespace std;
int n,sum = 0 ;
cout<<"please input the number: ";
cin>>n;
for(int i = 0; i < n; i++)
sum += get_data(i+1);
cout<<sum<<endl;
}
int get_data(int n)
{
using namespace std;
if( n <= 1)
return 1;
else
return n*get_data(n-1);
}
☆ 8 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Wed Apr 13 23:29:28 2005
可是你用的是C++的输入输出流,除了输入输出C与C++还有什么不同?
☆ 9 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Wed Apr 13 23:29:28 2005
可是你用的是C++的输入输出流,除了输入输出C与C++还有什么不同?
☆ 10 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Wed Apr 13 23:29:52 2005
using namespace std;
这个做什么用的?
☆ 11 ──────────── 我是分割线 ─────────────────☆
发信人: kevinh (如果爱·搁浅), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日10:09:41 星期四
除了term应该赋值为1的错误外,这个程序思路不是很好,因为后一项为前项乘上一个数,
不需要每次从头计算。
☆ 12 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日10:42:09 星期四
#include <iostream.h>
void main()
{
int n;
cin>>n;
int sum=0,temp=1;
for(int i=1;i<=n;i++)
{
temp=temp*i;
sum=sum+temp;
}
cout<<sum<<endl;
}
这样会减少很多计算
☆ 13 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 17:27:31 2005
那也是哦
☆ 14 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 17:30:40 2005
这可以学到很多东西
☆ 15 ──────────── 我是分割线 ─────────────────☆
发信人: pizzz (pizza mj), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日19:31:58 星期四
有什么不好。本来就是拿来解决实际问题。
☆ 16 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日20:49:09 星期四
不过这个不适合大整数,要是用数组保存数据,就可以真正做到通用了
☆ 17 ──────────── 我是分割线 ─────────────────☆
发信人: sunbyb (sunbyb), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日21:06:07 星期四
只能说你的编程思想还差的太远
☆ 18 ──────────── 我是分割线 ─────────────────☆
发信人: pizzz (pizza mj), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日21:08:08 星期四
ft。
☆ 19 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 21:19:53 2005
我正在做长整数的阶乘,不过现在主要在处理长整数时用二维数组时有问题,可能要用一维才
行,不过一维的对应关系就比较难处理,有谁知道怎样处理一维数组的对应关系吗?
☆ 20 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日21:42:59 星期四
可以规定一个数组元素可以存几位的数,然后多的数就往下个数组元素添
☆ 21 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日21:50:15 星期四
二维也可以啊,很方便的~~
☆ 22 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:11:34 2005
二维处理不了~~~~~~~~~~~~~~~~~内存会溢出~~~~~~~~~~~~
☆ 23 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:13:40 星期四
一位处理很方便的,我做了一个1000的阶乘
☆ 24 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:14:12 2005
这样好像解决不了长整数的问题啊~~~~~~~~~~~~因为是阶乘,需要有对应的关系处理下去,那
样就不能随便放了
☆ 25 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:14:43 2005
哦?有多少位?
☆ 26 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:15:53 星期四
光是后面的0就有249位了,估计有几千位吧
☆ 27 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:19:32 2005
我想要算到3000!这个的结果大约接近10000位了~~~~~~~~~~所以这就是个问题了~~~~~~~~~~
~~
☆ 28 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:25:50 星期四
3000的话一位数组如果按每个元素存六位的话,可能要一千八百个元素啊
☆ 29 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:27:24 2005
你是用什么类型的数组存的?
☆ 30 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:29:07 星期四
unsigned int
不过如果算三千的话,为了安全起见,每个元素最好存五位,这样数组元素
个数又得增加
☆ 31 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:32:05 2005
不是啊,如果由用户输入任一个数的话,假如输入的是一个很大的数,那累加起来会很大的
,不知道用什么类型的数据来存啊
☆ 32 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:32:56 星期四
用数组咯
☆ 33 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:37:34 2005
数组的一个元素存取的位数也是有限的啊,还不是一样吗?
☆ 34 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:37:40 2005
我觉得用char 型可以了,int 太占空间了
☆ 35 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:38:26 星期四
看你要算多大咯~~
二维处理不了~~~~~~~~~~~~~~~~~内存会溢出~~~~~~~~~~~~
☆ 36 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:38:28 2005
是要把一个数拆散成为一个个的放入数组中
☆ 37 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:39:11 2005
尽量大~~~~~~~~~~~~~~~~~~~~哈哈哈~~~~~~~~~~~~~~~最好把内存用光~~~~~~~~~~~~哈哈哈
☆ 38 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:40:01 星期四
我做的试一个500!的.反正你要省的话就压位存储,原理是一样的
☆ 39 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:40:57 星期四
但是char型能存的位数很少啊,unsigned int型能存多几位,总的算了占空间
差不多吧
☆ 40 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:41:00 2005
是了,结构体跟类有什么不同啊?我们学的是C,可是C++中还有CLASS类,有什么不同啊?
☆ 41 ──────────── 我是分割线 ─────────────────☆
发信人: bakey (深海的鱼爱上会潜水的猫), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:42:28 星期四
基本差不多,不过结构默认的数据时public的,类是private的
☆ 42 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:42:50 2005
我用char 型算两个数的就可以算很长的,但要算阶乘的话,本来想过可能会用递归,但觉得不
大可能~~~~~~~~~~因为对于两个长整数的积的后处理要一一对应,所以想到用二维数组,但二
维数组不能定义太大~~~~~~~~~~~~~~~~看来还是只能用一维数组了~~~~~~~~~~
☆ 43 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:43:59 2005
也就是说它们的功能相差不会太远,只是它们的作用域不同而已罗
☆ 44 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:45:30 2005
char类型不是只限在0-255之间吗?怎样算,举个例子来看下
☆ 45 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:47:38 2005
用文件作为辅助应该可以算很长的了~~~~~~~~~~~~~~~~~~~~~~~~~这样就可以利用两个长整
数的积的做法了~~~~~~~~不过我现在还没试过那个~~~~~~~~先要解决这个吧~~~~~~~~~~~~上
次看到那个程序就是可以算到3000!~~~~~真强~~~~~~而且代码很简洁~~~~~~~只是没有注译~
~~~~~~本人智慧太低了看不懂~~~~~~~~~~~5555555555555555555555555
☆ 46 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:48:20 2005
是在-128到127之间
☆ 47 ──────────── 我是分割线 ─────────────────☆
发信人: kingting (迪赡罗刹), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 22:49:53 2005
说没有用,你要做得出来才算你懂,算你有本事
☆ 48 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日22:53:55 星期四
这个是我做的1000的阶乘
#include <iostream.h>
void main()
{
int m;
cin>>m;
unsigned int a[482];
a[0]=1;
int temp;
short int count=0;
for(int i=2;i<=m;i++)
{
int carry=0;
for(int j=0;j<=count;j++)
{
temp=a[j]*i+carry;
carry=temp/1000000;
a[j]=temp%1000000;
}
if(carry>0)
{
count++;
a[count]=carry;
}
}
for(int j=count;j>=0;j--)
{
int k=6,n=100000;
int temp1=a[j];
if(j<count)
{
for(;k>0;k--)
{
cout<<temp1/n;
temp1=temp1%n;
n=n/10;
}
}
else
cout<<temp1;
}
cout<<endl;
}
☆ 49 ──────────── 我是分割线 ─────────────────☆
发信人: bso (meteor), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: Thu Apr 14 23:04:19 2005
好难懂啊~~~~~~~~~~能不能加点注译啊?
☆ 50 ──────────── 我是分割线 ─────────────────☆
发信人: jiffies (jiffies), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日23:04:30 星期四
str
☆ 51 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日23:05:35 星期四
sorry,我现在加
☆ 52 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月14日23:17:58 星期四
#include <iostream.h>
void main()
{
int m;
cin>>m; //输入阶乘的数
unsigned int a[482]; //定义所需数组的大小
a[0]=1; //令第一个元素的初始值为1
int temp; //存放中间结果
short int count=0; //计算数组元素的位数,从0开始
for(int i=2;i<=m;i++) //循环求阶乘
{
int carry=0; //存放进位,每次乘法开始都为0
for(int j=0;j<=count;j++)
{
temp=a[j]*i+carry;
carry=temp/1000000; // 求进位
a[j]=temp%1000000; //取六位放在一个数组元素中
}
if(carry>0) //如果所得数超过6位,则有进位,将进位放入下个数组元
素
{
count++;
a[count]=carry;
}
}
for(int j=count;j>=0;j--) //由于是顺序存数的,要得到真正的数,必须逆向打出
{
int k=6,n=100000;
int temp1=a[j];
if(j<count) //如果最后一个数组元素不满六位则直接打出,不然会有0
在前面
{
for(;k>0;k--)
{
cout<<temp1/n;
temp1=temp1%n;
n=n/10;
}
}
else
cout<<temp1;
}
cout<<endl;
☆ 53 ──────────── 我是分割线 ─────────────────☆
发信人: crazyle (紫狐狸), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月15日13:57:25 星期五
注释要详细...嗯....
最好当论文写,然后给我一份...哈哈哈哈哈哈哈
sorry,我现在加
☆ 54 ──────────── 我是分割线 ─────────────────☆
发信人: Bambooflute (男儿当自强), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月15日15:22:35 星期五
ft~~~~
☆ 55 ──────────── 我是分割线 ─────────────────☆
发信人: crazyle (紫狐狸), 信区: Program
标 题: Re: 请教一个关于C的问题
时 间: 2005年04月15日15:29:51 星期五
^_^....
少于3000字重写....
ft~~~~
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店