龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C语言程序开发经典实例之八

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
【程序71】 题目:编写input()和output()函数输入,输出5个学生的数据记录。 1.程序分析: 2.程序源代码: #define N 5 strUCt student { char num[6]; char name[8]; int score[4]; } stu[N]; input(stu) struct stude

【程序71】

  

  题目:编写input()和output()函数输入,输出5个学生的数据记录。

  

  1.程序分析:

  

  

  

  2.程序源代码:

  

  

#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("

please input %d of %d

",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("

");

   }

  }

  print(stu)

  struct student stu[];

  {  

   int i,j;

   printf("

No. Name Sco1 Sco2 Sco3

");

   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("

");

   }

  }

  main()

  {

   input();

   print();

  }

  【程序72】

  

  题目:创建一个链表。

  

  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==>

");

   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

",ptr->data);

  tr=ptr->next;

   }

  }

  【程序73】

  

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

  

  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("

please input 5 data==>

");

   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

",ptr->data);

  ptr=ptr->next;

   }

  }

【程序74】

  

  题目:连接两个链表。

  

  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

",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);

  }

  【程序75】

  

  题目:放松一下,算一道简单的题目。

  

  1.程序分析:

  

  2.程序源代码:

  

  

  

main()

  {

  int i,n;

  for(i=1;i<5;i++)

  { n=0;

   if(i!=1)

   n=n+1;

   if(i==3)

   n=n+1;

   if(i==4)

   n=n+1;

   if(i!=4)

   n=n+1;

   if(n==3)

  printf("zhu hao shi de shi:%c",64+i);

   }

  }

  【程序76】

  

  题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数

   1/1+1/3+...+1/n(利用指针函数)

  

  1.程序分析:

  

  2.程序源代码:

  

  

main()

  #include "stdio.h"

  main()

  {

  float peven(),podd(),dcall();

  float sum;

  int n;

  while (1)

  {

   scanf("%d",&n);

   if(n>1)

  break;

  }

  if(n%2==0)

  {

   printf("Even=");

   sum=dcall(peven,n);

  }

  else

  {

   printf("Odd=");

   sum=dcall(podd,n);

  }

  printf("%f",sum);

  }

  float peven(int n)

  {

  float s;

  int i;

  s=1;

  for(i=2;i<=n;i+=2)

   s+=1/(float)i;

  return(s);

  }

  float podd(n)

  int n;

  {

  float s;

  int i;

  s=0;

  for(i=1;i<=n;i+=2)

   s+=1/(float)i;

  return(s);

  }

  float dcall(fp,n)

  float (*fp)();

  int n;

  {

  float s;

  s=(*fp)(n);

  return(s);

  }

【程序77】

  

  题目:填空练习(指向指针的指针)

  

  1.程序分析:   

  

  2.程序源代码:

  

  

main()

  { char *s[]={"man","woman","girl","boy","sister"};

  char **q;

  int k;

  for(k=0;k<5;k++)

  {   ;/*这里填写什么语句*/

   printf("%s

",*q);

  }

  }

  【程序78】

  

  题目:找到年龄最大的人,并输出。请找出程序中有什么问题。

  

  1.程序分析:

  

  2.程序源代码:

  

  

#define N 4

  #include "stdio.h"

  static struct man

  {

   char name[20];

   int age;

  } person[N]={"li",18,"wang",19,"zhang",20,"sun",22};

  main()

  {

   struct man *q,*p;

   int i,m=0;

   p=person;

   for (i=0;i

   {

  if(mage)

  q=p++;

  m=q->age;

   }

   printf("%s,%d",(*q).name,(*q).age);

  }

  【程序79】

  

  题目:字符串排序。

  

  1.程序分析:

  

  2.程序源代码:

  

  

main()

  {

   char *str1[20],*str2[20],*str3[20];

   char swap();

   printf("please input three strings

");

   scanf("%s",str1);

   scanf("%s",str2);

   scanf("%s",str3);

   if(strcmp(str1,str2)>0) swap(str1,str2);

   if(strcmp(str1,str3)>0) swap(str1,str3);

   if(strcmp(str2,str3)>0) swap(str2,str3);

   printf("after being sorted

");

   printf("%s

%s

%s

",str1,str2,str3);

  }

  char swap(p1,p2)

  char *p1,*p2;

  {

   char *p[20];

   strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);

  }

  【程序80】

  

  题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只

  猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了

  一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,

  问海滩上原来最少有多少个桃子?

  

  1.程序分析:

  

  2.程序源代码:

  

  

main()

  {int i,m,j,k,count;

  for(i=4;i<10000;i+=4)

  {

   count=0;

   m=i;

   for(k=0;k<5;k++)

   {

  j=i/4*5+1;

  i=j;

  if(j%4==0)

   count++;

  else

   break;

   } 

   i=m;

   if(count==4)

   {

  printf("%d

",count);

  break;}

   }

  }

  

  

精彩图集

赞助商链接