|
我是个新手,想与大家讨论与请教我在学习中所面对的问题。
请大家多多指教。 |
|
|
|
|
|
|
|
发表于 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 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 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都是用在数字上。。。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|