华中科技大学标准c语言程序设计上机试题,答案及报告格式,[华中科技大学标准C语言程序设计上机试题、答案及报告格式.doc...

[华中科技大学标准C语言程序设计上机试题、答案及报告格式

《C语言程序设计》

实验七 指针及函数结构体初步程序设计

专业:班级:学号:

姓名:1

实验目的

进一步理解指针的概念,掌握指针变量间接地址访问的本质;

掌握利用指向数组的指针变量表示一维数组元素及元素地址的方法;

掌握利用指向二维数组的行指针变量表示二维数组元素及其地址的方法;

掌握字符串的指针和指向字符串的指针变量;

掌握指针数组和二级指针;

熟悉通过动态内存分配实现动态数组,并体会指针在其中的作用。

理解函数定义、原型和调用,掌握函数参数的传递(传值、传指针和传引用)

实验内容及要求(鼓励一题多解)

深入理解《上机实践训练教程》2.6实验六案例示范和有关概念 文字描述中的知识点,给出你的理解。#include

#include

#include

#define N 3

struct student

{

int rank;

char name[20];

double score[3];

double aver;

};

void input(struct student *p,int n);

void sort(struct student *p,int n);

double average (struct student *p,int n);

void output(struct student *p,int n,double aver);

void main()

{

struct student stu[N];

double aver;

input(stu,N);

sort(stu,N);

aver=average(stu,N);

output(stu,N,aver);

}

void input(struct student *p,int n)

{

int i,j;

double a;

char str[20];

for(i=0;i

{

printf("请输入考生姓名:\n");

gets(p->name);

printf("请依次输入学生线性代数、通信原理、c语言分数:\n");

for(a=0,j=0;j<3;j++)

{

gets(str);

p->score[j]=atof(str);

a+=p->score[j];

}

p->aver=a/3;

}

return;

}

void sort(struct student *p,int n)

{

struct student temp;

int i,j;

for(i=0;i

{

for(j=0;j

{

if(p[j].aver

{

temp=p[j];

p[j]=p[j+1];

p[j+1]=temp;

}

}

}

}

double average(struct student *p,int n)

{

int i;

double temp;

for(i=0,temp=0;i

temp=temp+p[i].aver;

return temp/n;

}

void output(struct student *p,int n,double aver)

{

int i;

printf("姓名 线性代数 通信原理 c语言 平均分\n");

printf("-----------------------------------------\n");

for(i=0;i

{

printf("%-10s%8.2lf%8.2lf%8.2lf%8.2lf\n",p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].aver);

}

}

运行结果:

利用指向指针的指针方法对N个整数排序并输出。(N个整数保存在数组num中,定义指针数组pnum分别指向num数组的N个元素,定义二级指针pp指向pnum入口元素,排序代码只运行使用pp指针)

………指向指针的指针就是二级指针int **pp;

#include

#define N 5

void main()

{

int num[N],*pnum[N],**pp,i,j,temp;

printf("请输入数组中的元素:\n");

for(i=0;i

{

scanf("%d",&num[i]);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值