第九章实验报告

C语言实验报告

第九章 构造数据类型实验

姓名:王煜    学号:113120180156     班级:18物联  
时间:2019.6.28      地点:514教室

9.3.1 结构体变量的应用

问题描述:试利用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第几天。

 实验代码

main()
{
    struct date
    {
        int year;
        int month;
        int day;
    }a;
    int i,days;
    printf("输入年月日: ");
    scanf("%d%d%d",&a.year,&a.month,&a.day);
    for(i=1;i<a.month;i++)
    {
        if(i==1||i==3||i==5||i==7||i==8||i==10)
            days=days+31;
        else if(i==4||i==6||i==9||i==11)
            days=days+30;
        else if((a.year%100!=0)&&(a.year%4==0))
            days=days+29;
            else days=days+28;
    }
    days=days+a.day-1;
    printf("%d年%d月%d日是该年的第%d天",a.year,a.month,a.day,days);
}

实验结果

9.3.2

结构体数组的应用

实验代码

#include"stdio.h"
#include<string.h>
struct person
{ char name[20];
  int count;
}a[6]={"zhang",0,"li",0,"wang",0,"zhao",0,"liu",0,"zhu",0};
 main()
{ int i,j;char abc[20];
    for(i=1;i<=10;i++)
    {
        printf("输入候选人名字:");
        scanf("%s",&abc[i]);
       for(j=0;j<6;j++)
       if(strcmp(a[j].name,&abc[i])==0)
        a[j].count+=1; 
    }
    for(j=0;j<6;j++)
    printf("%s:%d\n",a[j].name,a[j].count); 
}

实验结果

9.3.3公用体的应用

实验代码

#include"stdio.h"
#include"stdlib.h"
struct
{
    int number;
    char name[10];
    char job;
    union
    { int classes;
        char position[10];
    }category;
}person[2];
    main()
    { int i;
    for(i=0;i<2;i++)
    {   
        scanf("%s%d%s",&person[i].name,&person[i].number,&person[i].job);
        if(person[i].job=='s')
        scanf("%d",&person[i].category.classes);
        else if(person[i].job=='t')
        scanf("%s",&person[i].category.position);
        else
        { printf("input error!");
        abort();
        }
     } 
     printf("\n");
     printf("编号  姓名  职业  班级/职务\n");
     for(i=0;i<2;i++)
     if(person[i].job=='s')
     printf("%d\t%s\t%c\t%d\n",person[i].number,person[i].name,person[i].job,person[i].category.classes);
     else
     printf("%d\t%s\t%c\t%s\n",person[i].number,person[i].name,person[i].job,person[i].category.position)

实验结果

 9.3.4结构体指针的应用

实验代码

#include<stdio.h>
#define N 10
struct child
{
    int no;
    int next;    
 };
 struct child link[N];
 main()
 {
     int i,n,m,s,count,h;
     printf("输入围圈人数,出圈报数,开始报数位置:");
    scanf("%d%d%d",&n,&m,&s);
    for(i=1;i<=n;i++)
    {
        if(i==n)
        link[i].next=1;
        else
        link[i].next=i+1;
        link[i].no=i;
      }  
      count=0;
      if(s==1)h=n;else h=s-1;
      printf("出圈顺序为:");
      while(m<n-1)
      {
          i=0;
          while(i!=m)
          {
              h=link[h].next;
              if(link[h].no)
                  i++;
          }
          printf("%d,",link[h].no);
          link[h].no=0;
          count++;
       } 
       for(i=1;i<=n;i++)
       if(link[i].no!=0)
       printf("%d",n);
  }

实验结果

 

转载于:https://www.cnblogs.com/17370137371WY/p/11110642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值