【非原创】C语言金典实例程序71-80(个人收集)

【程序71】
题目:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.h"
#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<N;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<N;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();
  getch();
}
==============================================================
【程序72】
题目:创建一个链表。
1.程序分析:           
2.程序源代码:
/*creat a list*/
#include "stdlib.h"
#include "stdio.h"
#include "conio.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;
  }
  getch();
}
==============================================================
【程序73】
题目:反向输出一个链表。   
1.程序分析:
2.程序源代码:
/*reverse output a list*/
#include "stdlib.h"
#include "stdio.h"
#include "conio.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;
  }
  getch();
}
==============================================================
【程序74】
题目:连接两个链表。
1.程序分析:
2.程序源代码:
#include "stdlib.h"
#include "stdio.h"
#include "conio.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<num;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<num;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);
  getch();
}
==============================================================
【程序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);
  }
  getch();
}
==============================================================
【程序76】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
   1/1+1/3+...+1/n(利用指针函数)
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.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);
  getch();
}
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.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
  char *s[]={"man","woman","girl","boy","sister"};
  char **q;
  int k;
  for(k=0;k<5;k++)
  {          ;/*这里填写什么语句*/
    printf("%s\n",*q);
  }
  getch();
}
==============================================================
【程序78】
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
1.程序分析:
2.程序源代码:
#define N 4
#include "stdio.h"
#include "conio.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<N;i++)
  {
    if(m<p->age)
    q=p++;
    m=q->age;
  }
  printf("%s,%d",(*q).name,(*q).age);
  getch();
}
==============================================================
【程序79】
题目:字符串排序。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
  char *str1[20],*str2[20],*str3[20];
  char swap();
  printf("please input three strings\n");
  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\n");
  printf("%s\n%s\n%s\n",str1,str2,str3);
  getch();
}
char swap(p1,p2)
char *p1,*p2;
{
  char *p[20];
  strcpy(p,p1);
  strcpy(p1,p2);
  strcpy(p2,p);
}
==============================================================
【程序80】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
   猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
   一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
   问海滩上原来最少有多少个桃子?
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "conio.h"
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\n",count);
      break;
    }
  }
  getch();
}

你可能感兴趣的:(C++,c,C#,D语言,FP)