【程序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");
}
}
}
}