QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 752|回复: 4

又是!斐波纳契数列!!过来帮帮我!!!

[复制链接]
发表于 2004-11-23 14:26:21 | 显示全部楼层 |阅读模式
又是!斐波纳契数列!!
#include <stdio.h>
int show (int);
int main (void)
{
int n,num;
printf("please:\n");
scanf("%d",&n);  /*读取要取个数*/
num=show (n);  /*返回会值*/
printf("num=%d",num);
return 0;
}

int show (int n)
{
int a[60]={1,1};
int i;
for (i=2;i<n;i++)      /*存入数组(自动更)*/
*(a+i)=*(a+i-2)+*(a+i-1);
return *(a+n-1);     /*在数组中提取数据*/
}
这样可以
在内存分配上还存在不太好的地方!帮帮我!!想用malloc()来但不知何做好?
我想:
读取要取个数
存入数组(自动更)
在数组中提取数据
返回会值
发表于 2004-11-23 15:28:04 | 显示全部楼层
a=malloc(60);
回复

使用道具 举报

发表于 2004-11-23 15:28:55 | 显示全部楼层
不对,应该是
int *a;
a=malloc(60*sizeof(int));
回复

使用道具 举报

发表于 2004-11-23 21:20:48 | 显示全部楼层
你的数组最大只有60个, n要是大于60, 就core dump了

可以开始 #define Max 60 一下
后面判断一下, 大于Max, 返回一个不可能的int, -1, 或者0

剩下可以想mozilla那样啦

如果内存还想经济一点来用,再试试这个(把60 换成变量 n)
(int *)malloc( n * sizeof(int));
回复

使用道具 举报

 楼主| 发表于 2004-11-24 22:23:07 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
  int * ptd;
  int max;
  int i=0;
  printf("you want your ./pormax number:\n");
  while (scanf("%d" ,&max) ==1)
    {
      ptd = (int *)malloc (max*sizeof(int));
  if (ptd ==NULL)
    {
      printf("memory allocation failed .bye.");
      exit (EXIT_FAILURE);
    }
  ptd[0] =1;
  ptd[1] =1;
      for (i=2; i <max; i++)
        *(ptd+i)=*(ptd+i-2)+*(ptd+i-1);
      printf("here are your %d entteries\n",i);
      printf("the %d number enteredis:%d\n",i, *(ptd+i-1));
      printf("please key your now want number or");
      printf("ket 'q' to exit.\n");
      free (ptd);
    }
  printf("you key is not anumber.bye.\n");
  return 0;
}  
  
这样就可以了!我早上就写好了不过学校上不了网!!为有等到现在发上来 !!!多谢楼上各位大哥的帮助!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 01:33 , Processed in 0.039920 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表