xsomonx 发表于 2013-12-12 20:24:57

c程序求教


l      除数函数是怎么存储数据?在这里为什么使用这个方法?
l       标识符divisor和Divisor是相同的吗?为什么?
//Program 6.1.b#include "stdafx.h"#include "stdio.h"struct Divisor{    int intDivisor;    Divisor * next;};struct Divisor * divisor(int);void display(Divisor *);int main(){    int n;    printf("Enteran integer: ");    scanf("%d",&n);    display(divisor(n));    return 0;}struct Divisor * divisor(int n){    int i = 1;    Divisor * p, * h;    p = new Divisor;    h = p;    p->intDivisor =1;    p->next = 0;    while (++i <= n)      if (n % i == 0)      {            p->next =new Divisor;            p =p->next;            p->intDivisor= i;            p->next =0;      }    return h;}void display(Divisor * p){    do    {      printf("%d",p->intDivisor);      p = p->next;    }   while (p != 0);}

思无邪 发表于 2013-12-12 20:24:58

标识符divisor和Divisor是相同的吗?为什么?
struct Divisor
{

    int intDivisor;

    Divisor * next;

};
Divisor,这个是结构体,一个链表的节点。其中的 intDivisor用来保存数据,next用来指向下一个节点。

struct Divisor * divisor(int);
divisor,这个是函数。返回值为struct Divisor 参数为 int型整数。

还有你这个应该是C++的程序吧。C中没有new的。
而且这个程序写的是有问题的,只有new 没有对应的 delete 会造成内存泄露的。

maomingkun 发表于 2013-12-12 22:05:51

本帖最后由 maomingkun 于 2013-12-12 22:14 编辑

这个貌似是链表吧?不是太懂
看代码是传进一个指针,然后修改指针指向的内容,你说的除数是在这被修改保存的
给你个例子看一下
#include<stdio.h>

void display(int *a)
{
      *a=6;
}
int main()
{
      intInt=5;
      int *p;
      p=&Int;
      printf("%d\n", Int);
      display(p);
      printf("%d\n", Int);
      return 0;
}
是不是这个样子的呢?


c语言中区分大小写的,int是关键字,Int是变量。你说的那个大写的那个是结构体的名字,小写的是结构体变量的名字,所以我觉得它们是不一样的!
页: [1]
查看完整版本: c程序求教