佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 977|回复: 6

萧繁的C语言问题

[复制链接]
发表于 18-3-2006 04:05 PM | 显示全部楼层 |阅读模式
我是个新手,想与大家讨论与请教我在学习中所面对的问题。
请大家多多指教。
回复

使用道具 举报


ADVERTISEMENT

发表于 18-3-2006 04:09 PM | 显示全部楼层
好~ 讨论什么?
回复

使用道具 举报

 楼主| 发表于 18-3-2006 04:11 PM | 显示全部楼层
#include<stdio.h>
#include<string.h>
#include<malloc.h>

typedef struct biography {

char name[10];
int telephone;
char sex;
int age;
int clas;

}BIOGRAPHY;

BIOGRAPHY *memory_space(int total_member);
void input_data(BIOGRAPHY *b,int total_member);
void determine_clas(BIOGRAPHY *b,int total_member);
void output_clas(BIOGRAPHY *b,int total_member);

main(){

int bil;
BIOGRAPHY *member;

printf("Please input total members :");
scanf("%d",&bil);

member=memory_space(bil);

input_data(member,bil);

determine_clas(member,bil);

output_clas(member,bil);

return 0;
}

BIOGRAPHY *memory_space(int total_member){

BIOGRAPHY *b;
  
    b=(BIOGRAPHY *)malloc(total_member *sizeof(int));

return b;

}

void input_data(BIOGRAPHY *b,int total_member){

int i;

for(i=0;i<total_member;i++){

printf("Member %d\n\n",i+1);

printf("Name: ");
scanf("%s",&(b[i].name));

printf("Telephone :");
scanf("%d",&(b[i].telephone));

printf("Age: ");
scanf("%d",&(b[i].age));

printf("Sex (pls input either 'M' or 'F') :");
scanf("%s",&(b[i].sex));


}
}

void determine_clas(BIOGRAPHY *b,int total_member){

int i;

for(i=0;i<total_member;i++){

if(b[i].age > 13){

if ((b[i].sex)=='m'||(b[i].sex)=='M')
     (b[i].clas)=3;
else
     (b[i].clas)=4;
}
else{

if((b[i].sex)=='m'||(b[i].sex)=='M')
    (b[i].clas)=1;
else
    (b[i].clas)=2;
}

}

}

void output_clas(BIOGRAPHY *b,int total_member){

int i;

for(i=0;i<total_member;i++){

printf("\n\nMember %d",i+1);
printf("\n----------\n");
printf("Name     : %s\n",(b[i].name));
printf("Telephone: %d\n",(b[i].telephone));
printf("Age      : %d\n",(b[i].age));
printf("Sex      : %c\n",(b[i].sex));
printf("Class    : %d\n",(b[i].clas));

}

}

这是我朋友所做的。当中的

b=(BIOGRAPHY *)malloc(total_member *sizeof(int));

不明白。有谁可以解释吗?
回复

使用道具 举报

 楼主| 发表于 27-3-2006 04:08 PM | 显示全部楼层
string.h 和 malloc.h 是拥有什么用途的?
回复

使用道具 举报

发表于 28-3-2006 09:30 PM | 显示全部楼层
b=(BIOGRAPHY *)malloc(total_member *sizeof(int));
malloc 是用来预留 memory
total_member 是struct 内的member 数量
sizeof(int) 是int 的大小
所以total_member *sizeof(int)就是一个struct 的大小
malloc(total_member *sizeof(int))预设并告诉compiler所预留的address
BIOGRAPHY *)就把address的format 转成BIOGRAPHY type

string.h 和 malloc.h是library
里面有很多function...
好像stringh => strcmp,strstr,strcpy....
回复

使用道具 举报

 楼主| 发表于 30-3-2006 11:23 PM | 显示全部楼层
在做着Final Project,做了Flow Chart可是觉得有问题。大家可以帮我看看吗?
题目是做一个飞机场的系统,用queue做。题目说,同一时间只能有一架飞机起飞或者降落。而飞机只能在所有等待降落的飞机降落完后才能起飞。



[ 本帖最后由 萧繁 于 30-3-2006 11:25 PM 编辑 ]
回复

使用道具 举报

Follow Us
 楼主| 发表于 30-3-2006 11:28 PM | 显示全部楼层
原帖由 ngjingtao 于 28-3-2006 09:30 PM 发表
b=(BIOGRAPHY *)malloc(total_member *sizeof(int));
malloc 是用来预留 memory
total_member 是struct 内的member 数量
sizeof(int) 是int 的大小
所以total_member *sizeof(int)就是一个struct 的大小
mal ...


谢谢你。。。通常,BIOGRAPHY是用在怎样的data上?比如说int都是用在数字上。。。
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 5-3-2025 09:22 AM , Processed in 0.116159 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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