Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373051
  • 博文数量: 57
  • 博客积分: 4020
  • 博客等级: 上校
  • 技术积分: 647
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-17 15:57
文章分类

全部博文(57)

文章存档

2009年(22)

2008年(35)

我的朋友

分类: C/C++

2008-06-14 14:31:46

c语言 结构体与共用体学习笔记1

Author:yuexingtian

Date:Thursday, June 12, 2008

 

1结构变量的赋值

/*给结构变量赋值并输出其值*/

 

main()

{

 

  struct stu

 

  {

 

    int num;

 

    char *name;

 

    char sex;

 

    float score;

 

   }boy1,boy2;

 

  boy1.num=15;

 

  boy1.name="yuexingtian";

 

  printf("input sex and score\n");

 

  scanf("%c %f",&boy1.sex,&boy1.score);

 

  boy2=boy1;

 

  printf("Number=%d\nName=%s\n",boy2.num,boy2.name);

 

  printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);

 

  getch();

}
 
 
 

测试结果:

说明:

本程序中用赋值语句给numname两个成员赋值,name是一个字符串指针变量。用scanf函数动态地输入sexscore成员值,

然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2的各个成员值。本例表示了结构变量的赋值、输入和输出的方法。

 

 

2结构变量的初始化

对结构变量的初始化(还拿上例举例)

程序如下:

main()
{
 
  struct stu /*定义结构*/
 
  {
 
    int num;
 
    char *name;
 
    char sex;
 
    float score;
 
   }boy2,boy1={15,"yuexingtian",'m',88.8};
 
   boy2=boy1;
 
   printf("Number=%d\nName=%s\nSex=%c\nScore=%f",
 
           boy2.num,boy2.name,boy2.sex,boy2.score);
 
   getch();
}

测试结果:

说明:

    本例中,boy2,boy1均被定义为外部结构变量,并对boy1作了初始化赋值。在main函数中,把boy1的值整体赋予boy2,

然后用两个printf语句输出boy2各成员的值。

 

3结构数组的定义

例1、计算学生的平时成绩和不及格的人数


struct stu
{
 
 int num;
 
 char *name;
 
 char sex;
 
 float score;
 
}boy[6]={
 
         {101,"yuexingtian",'M',88},
 
         {102,"yuechaotian",'M',98},
 
         {103,"tianyuexing",'M',96.5},
 
         {104,"tianyuechao",'M',99.5},
 
         {105,"tianjingli",'F',59.5},
 
         {106,"tianjingshan",'M',58},
 
        };
 
main()
{
 
  int i,c=0;
 
  float ave,s=0;
 
  for(i=0;i<6;i++)
 
  {
 
    s+=boy[i].score;
 
    if(boy[i].score<60) c+=1;
 
   }
 
   printf("s=%f\n",s);
 
   ave=s/6;
 
   printf("average=%f\ncount=%d\n",ave,c);
 
   getch();
}

测试结果:

说明:

    程序中定义了一个外部结构数组boy,共6个元素,并作了初始化赋值。在main函数中用for语句逐个累加各元素的score 成员值存于s之中,

如score的值小于60(不及格)即计数器C加1,循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数。

4建立同学录


#include"stdio.h"
 
#define NUM 3
 
struct mem
 
{
 
  char name[20];
 
  char phone[11];
 
};
 
main()
{
 
  struct mem man[NUM];
 
  int i;
 
  for(i=0;i
 
    {
 
      printf("input name:\n");
 
      gets(man[i].name);
 
      printf("input phone:\n");
 
      gets(man[i].phone);
 
     }
 
   printf("name\t\t\tphone\n\n");
 
   for(i=0;i
 
    printf("%s\t\t\t%s\n\n",man[i].name,man[i].phone);
 
   getch();
}

测试结果:

说明:

     本程序中定义了一个结构mem,它有两个成员name和phone用来表示姓名和电话号码。在主函数中定义man为具有mem 类型的结构数组。

在for语句中,用gets函数分别输入各个元素中两个成员的值。然后又在for语句中用printf语句输出各元素中两个成员值。

 

 
阅读(2769) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

yuexingtian2008-06-16 14:51:44

更正:例4【建立同学录】中有越界现象,第五句中 char phone[11] 这句导致后面输入11个电话号码数字的时候出现越界的现象,因为 '/0' 还要占一个置,如果将此句改为 char phone[12] 后就不会出现越界现象! 大家可以上机试一下哟! 呵呵……有进步了! :>