【程序87】
题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
#include
#define N 5
struct student
{ char num[6];
char name[8];
int score[4];
} stu[N];
input(stu)
struct student stu[];
{ int i,j;
for(i=0;i{ printf("/n please 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");
}
}
print(stu)
struct student stu[];
{ int i,j;
printf("/nNo. Name Sco1 Sco2 Sco3/n");
for(i=0;i{ printf("%-6s%-10s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("/n");
}
}
main()
{
input();
print();
}
-----------------------------------------------------------------------------
【程序88】
题目:创建一个链表。
1.程序分析:
2.程序源代码:
/*creat 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;
int num,i;
ptr=(link)malloc(sizeof(node));
ptr=head;
printf("please input 5 numbers==>/n");
for(i=0;i<=4;i++)
{
scanf("%d",&num);
ptr->data=num;
ptr->next=(link)malloc(sizeof(node));
if(i==4) ptr->next=NULL;
else ptr=ptr->next;
}
ptr=head;
while(ptr!=NULL)
{ printf("The value is ==>%d/n",ptr->data);
ptr=ptr->next;
}
}
-----------------------------------------------------------------------------
【程序89】
题目:反向输出一个链表。
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;
tail=(link)malloc(sizeof(node));
tail->next=NULL;
ptr=tail;
printf("/nplease input 5 data==>/n");
for(i=0;i<=4;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;
}}
-----------------------------------------------------------------------------
【程序90】
题目:连接两个链表。
1.程序分析:
2.程序源代码:
#include "stdlib.h"
#include "stdio.h"
struct list
{ int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
link delete_node(link pointer,link tmp)
{if (tmp==NULL) /*delete first node*/
return pointer->next;
else
{ if(tmp->next->next==NULL)/*delete last node*/
tmp->next=NULL;
else /*delete the other node*/
tmp->next=tmp->next->next;
return pointer;
}
}
void selection_sort(link pointer,int num)
{ link tmp,btmp;
int i,min;
for(i=0;i{
tmp=pointer;
min=tmp->data;
btmp=NULL;
while(tmp->next)
{ if(min>tmp->next->data)
{min=tmp->next->data;
btmp=tmp;
}
tmp=tmp->next;
}
printf("/40: %d/n",min);
pointer=delete_node(pointer,btmp);
}
}
link create_list(int array[],int num)
{ link tmp1,tmp2,pointer;
int i;
pointer=(link)malloc(sizeof(node));
pointer->data=array[0];
tmp1=pointer;
for(i=1;i{ tmp2=(link)malloc(sizeof(node));
tmp2->next=NULL;
tmp2->data=array[i];
tmp1->next=tmp2;
tmp1=tmp1->next;
}
return pointer;
}
link concatenate(link pointer1,link pointer2)
{ link tmp;
tmp=pointer1;
while(tmp->next)
tmp=tmp->next;
tmp->next=pointer2;
return pointer1;
}
void main(void)
{ int arr1[]={3,12,8,9,11};
link ptr;
ptr=create_list(arr1,5);
selection_sort(ptr,5);
}
-----------------------------------------------------------------------------
【程序91】
题目:设有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、学号、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务,可以看出。学生和教师所包含的数据是不同的。现要求把它们放在同一个表格中,如果job项为S,则第五项为班级,如果job项为T,则第五项为职务
1.程序分析:
2.程序源代码:
#include
struct
{
int num;
char name[10];
char sex;
char job;
union
{
int classnum;
char position[10];
}category;
}person[2];
void main()
{
int i;
for(i=0;i<2;i++)
{
scanf("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
if(person[i].job=='s')scanf("%d",&person[i].category.classnum);
else if(person[i].job=='t')scanf("%s",&person[i].category.position);
else printf("input error");
}
printf("/n");
printf("No. Name sex job class/position/n");
for(i=0;i<2;i++)
if(person[i].job=='s')
printf("%-6d%-10d%-3c%-3c%-6d/n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.classnum);
else if(person[i].job=='t')
printf("%-6d%-10d%-3c%-3c%-6d/n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
}
-----------------------------------------------------------------------------
【程序92】
题目:口袋中有红、黄、蓝、白、黑5种颜色的球若干。每次从口袋取出3个球,问得到3种不同颜色的球的可能,打印每次组合的3种颜色。
1.程序分析:
2.程序源代码:
#include
void main()
{enum color{red,yellow,blue,white,black};
enum color ;
int i,j,k,pri;
int n,loop;
n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
{
if(i!=j)
{
for(k=red;k<=black;k++)
if((k!=i)&&(k!=j))
{
n=n+1;
printf("%-4d",n);
for(loop=1;loop<=3;loop++)
{
switch(loop)
{
case 1:pri=i;break;
case 2:pri=j;break;
case 3:pri=k;break;
default:break;
}
switch(pri)
{
case red:printf(" %s ","red");
case yellow:printf(" %s ","yellow");
case blue:printf(" %s ","blue");
case white:printf(" %s ","white");
case black:printf(" %s ","black");
default:break;
}
}
printf("/n");
}
}
}
}