C程序设计 第四版(谭浩强)-学习笔记-第十二天

/*  创建时间:20180101
    创建人:fangweijun(773714759@qq.com)
    功能:通过指向结构体变量的指针变量输出结构体变量中成员的信息 
    位置:C程序设计(第四版)2010年6月第四版 303页例9.5
*/
#include<stdio.h>
#include<string.h>
int main()
{
    struct Student
    {
        long num;
        char name[20];
        char sex;
        float score;    
    };
    struct Student stu_1;
    struct Student * p;
    p=&stu_1;
    stu_1.num=10101;
    strcpy(stu_1.name,"Li Lin");//字符串复制 
    stu_1.sex='M';
    stu_1.score=89.5;
    printf("NO.:%ld\nname:%s\nsex:%c\nscore:%5.1f\n",stu_1.num,stu_1.name,stu_1.sex,stu_1.score);
    printf("\nNo.:%ld\nname:%s\nsex:%c\nscore:%5.1f\n",(* p).num,(* p).name,(* p).sex,(* p).score);
    return 0;
}
/*Dev-c++输出结果: 
    NO.:10101
    name:Li Lin
    sex:M
    score: 89.5

    No.:10101
    name:Li Lin
    sex:M
    score: 89.5
*/


/*  创建时间:20180101
    创建人:fangweijun(773714759@qq.com)
    功能:有3个学生的信息,放在结构数组中,要求输出全部学生的信息 
    位置:C程序设计(第四版)2010年6月第四版 304页例9.6
*/
#include<stdio.h>
struct Student
{
    int num;
    char name[20];
    char sex;
    int age;
};
struct Student stu[3]={
    {
  10101,"Li Lin",'M',18},
    {
  10102,"Zhang Fang",'M',19},
    {
  10104,"Wang Min",'F',20}
};
int main()
{
    struct Student * p;
    printf("No.Name                    sex age\n");
    for(p=stu;p<stu+3;p++)
        printf("%5d %-20s %2c %4d\n",p->num,p->name,p->sex,p->age);
    return 0;
}
/*Dev-c++输出结果: 
    No.Name                    sex age
    10101 Li Lin                M   18
    10102 Zhang Fang            M   19
    10104 Wang Min              F   20
*/


/*  创建时间:20180101
    创建人:fangweijun(773714759@qq.com)
    功能:有n个结构体变量,内含徐盛学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩) 
          分别用三个函数来实现不同的功能:
          1.用input函数来输入数据和求各学生平均成绩
          2.用max函数来找平均成绩最高的学生
          3.用print函数来输出成绩最高学生的信息 
    位置:C程序设计(第四版)2010年6月第四版 306页例9.7
*/
#include<stdio.h>
#define N 3 
struct Student
{
    int num;
    char name[20];
    float score[3];
    float aver;
};
int main()
{
    void input(struct Student stu[]);
    struct Student max(struct Student stu[]);
    void print(struct Student stu);
    struct Student stu[N],* p=stu;
    input(p);
    print(max(p));
    return 0;
}
void input(struct Student stu[])//数组可以接收指针变量的地址,不过要类型一致 
{
    int i;
    printf("请输入各学生的信息:学号、姓名、三门课成绩:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
        stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;//求平均成绩并放入结构体中 
    }
}
struct Student max(struct Student stu[])
{
    int i,m=0;
    for(i=0;i<N;i++)
        if(stu[i].aver>stu[m].aver)
            m=i;
    return stu[m];//结构体数组的元素 
}
void print(struct Student stud)
{
    printf("\n成绩最高的学生是:\n");
    printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
}
/*Dev-c++输出结果: 
    请输入各学生的信息:学号、姓名、三门课成绩:
    10101 Li 78 89 98
    10103 Wang 98.5 87 69
    10106 Sun 88 76 89

    成绩最高的学生是:
    学号:10101
    姓名:Li
    三门课成绩: 78.0, 89.0, 98.0
    平均成绩: 88.33
*/


/*  创建时间:20180101
    创建人:fangweijun(773714759@qq.com)
    功能:建立一个简单链表如图9.9所示,它由3个学生数据的结点组成,要求输出各结点中的数据(静态链表) 
    位置:C程序设计(第四版)2010年6月第四版 310页例9.8
*/
#include<stdio.h>
struct Student
{
    int num;
    float score;
    struct Student * next; 
};
int main()
{
    //静态链表 
    struct Student a,b,c,* head,* p;//定义struct Student类型 
    a.num=10101;
    a.score=89.5;
    b.num=10103;
    b.score=90;
    c.num=10107;
    c.score=85;
    head=&a;
    a.next=&b;
    b.next=&c;
    c.next=NULL;
    p=head;
    do
    {
        printf("%ld %5.1f\n",p->num,p->score);
        p=p->next;
    }while(p!=NULL);
    return 0;
}
/*Dev-c++输出结果: 
    10101  89.5
    10103  90.0
    10107  85.0
*/


/*  创建时间:20180101
    创建人:fangweijun(773714759@qq.com)
    功能:写一个函数建立一个有3名学生数据的单向动态链表(动态链表) 
    位置:C程序设计(第四版)2010年6月第四版 311页例9.9
*/
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student) 
struct Student
{
    int num;
    float score;
    struct Student * next; 
};
int n;
//动态链表 
struct Student * creat(void)
{
    struct Student * head;
    struct Student * p1,* p2;
    n=0;//结点数 
    p1=p2=(struct Student *)malloc(LEN);//malloc()返回的是void *类型,可以显式强制转换,系统也可以隐式转换 
    scanf("%ld,%f",&p1->num,&p1->score);
    head=NULL;//无链表 
    while(p1->num!=0)//规定num不能为0,只能用来结束链表创建 
    {
        n=n+1; 
        
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++程序设计,谭浩强编著,清华大学出社。 课件制作:南京理工大学 陈清华 朱红 C语言的主要特点是: 1、C语言是一种结构化的程序设计语言,语言本身简洁、使用灵活方便。既适用于设计和编写大的系统程序,又适用于编写小的控制程序,也适用科学计算。 2、它既有高级语言的特点,又具有汇编语言的特点。运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。并且也提供了灵活的数据结构。用C语言编写的程序表述灵活方便,功能强大。用C语言开发的程序,其结构性好,目标程序质量高,程序执行效率高。 3、程序的可移植性好。用C语言在某一种型号的计算机上开发的程序,基本上可以不作修改,而直接移植到其它型号和不同档次的计算机上运行。 4、程序的语法结构不够严密,程序设计的自由度大。这对于比较精通C语言的程序设计者来说,可以设计出高质量的非常通用的程序。但对于初学者来说,要能比较熟练运用C语言来编写程序,并不是一件容易的事情。与其它高级语言相比而言,调试程序比较困难。往往是编好程序输入计算机后,编译时容易通过,而在执行时还会出错。但只要对C语言的语法规则真正领会,编写程序及调试程序还是比较容易掌握的。 为了克服C语言本身存在的缺点,并保持C语言简洁、高效,与汇编语言接近的特点,1980年,贝尔实验室的Bjarne Stroustrup博士及其同事对C语言进行了改进和扩充,并把Simula 67中类的概念引入到C中。并在1983年由Rick Maseitti提议正式命名为C++(C Plus Plus)。后来,又把运算符的重载、引用、虚函数等功能加入到C++中,使C++的功能日趋完善。 当前用得较为广泛的C++有:VC++ (Visual C Plus Plus)、 BC++(Borland C Plus Plus)、AT&T C++等

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值