每日5题之8.10

2016/04/20 15:42
阅读数 19

结构体




/********************************************************************************************************************
题目:编写input()和output()函数输入,输出5个学生的数据记录。(用结构体设计,学生记录中包括学号、姓名、四门课程成绩)
程序源代码:
**********************************************************************************************************************/
#include <stdio.h>
#define N 5


struct student

char num[6];
char name[8];
int score[4];
} stu[N];//定义一个结构体类型student和结构体变量stu。


/*********************************************************************/
void input(struct student stu[]);
void print(struct student stu[]);//声明输入和输出函数
/************************************************************************/


void main()
{


input(stu);
print(stu);
}/********主函数执行输入和输出函数****************************************/




void input(struct student stu[])/*结构体变量为形参*/

int i,j;
for(i=0;i<N;i++)

printf("\nplease input %d of %d\n",i+1,N);
printf("num: ");
scanf("%s",stu[i].num);
printf("name: ");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)

printf("score %d__",j+1);
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
}/**********定义输入函数input()***************************************************/






void print(struct student stu[])

int i,j;
printf("\nNo. Name    Score1 Score2 Score3\n");
for(i=0;i<N;i++)

printf("%-3s%-9s",stu[i].num,stu[i].name);//%3s是为了和上面的标题对齐所采用的格式控制办法。
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("\n");
}
}/******************定义输出函数********************************************************/




/*建立100名学生的信息表,每个学生的数据包括学号、姓名、及一门课的成绩,要求从键盘输入这100名学生的信息,
并按照每一行显示一名学生信息的格式将他们的信息显示出来。*/


#include <stdio.h>
#define N 3
/*************************定义结构体类型,不包含结构体变量***************************************************/ 
struct  student
 {    
int num;
char name[20];
int score;
 };
 
 /****************************************************************************/
 void main()
 {
int  i;
struct student s[N];  /*定义结构体类型数组,长度100,这里为了测试方便设为3,相当于结构体变量*/
 
for(i=0;i<N;i++)
{    
printf("input number:");
scanf("%d",&s[i].num);
printf("input  name:");
scanf("%s",s[i].name);//输入字符串时,字符串变量前边不用添加&符号。使用%s
printf("input score:");
scanf("%d",&s[i].score);
}//结构体赋值采用for循环结构对成员逐个赋值。




printf("Number:  Name:    score:\n");//打印标题
 
for(i=0;i<N;i++)
printf("%-9d%-9s%d\n",s[i].num,s[i].name,s[i].score);//循环打印,注意控制对齐方式
 }


【程序3

题目:创建一个链表。

程序源代码:

/*creat a list*/

#include "stdlib.h"

#include <stdio.h>

 

#define N  3

struct list

int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

void main()

link ptr,head;

int num,i;

int j;

printf("please input numbers==>");

scanf("%d",&j);

ptr=(link)malloc(sizeof(node));

head=ptr;

printf("please enter numbers:");

for(i=0;i<=j-1;i++)

{

scanf("%d",&num);

ptr->data=num;

ptr->next=(link) malloc(sizeof(node));

if(i==j-1) 

ptr->next=NULL;

else

ptr=ptr->next;

}

ptr=head;

while(ptr!=NULL)

printf("The value is ==>%d\n",ptr->data);

ptr=ptr->next;

}

}

==============================================================

【程序4

题目:反向输出一个链表。   

1.程序分析:

2.程序源代码:

/*reverse output a list*/

#include "stdlib.h"

#include <stdio.h>

 

struct list

int data;

struct list *next;

};

typedef struct list node;

typedef node *link;

 

void main()

{

link ptr,head,tail;

int num,i;

int j;

printf("please input numbers==>");

scanf("%d",&j);

tail=(link)malloc(sizeof(node));

tail->next=NULL;

ptr=tail;

printf("\nplease input data==>");

for(i=0;i<=j-1;i++)

{

scanf("%d",&num);

ptr->data=num;

head=(link)malloc(sizeof(node));

head->next=ptr;

ptr=head;

}

ptr=ptr->next;

while(ptr!=NULL)

printf("The value is ==>%d\n",ptr->data);

ptr=ptr->next;

}

}


展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部