华中科技大学标准C语言程序设计上机试题、答案及报告格式.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
12.9
积分
还剩页未读,继续阅读
关 键 词:华中科技大学标准C语言程序设计上机试题
答案及报告格式
华中科技大学c语言
课程设计上机
c语言程序设计报告格式
华中科技大学C语言课程设计
C语言程序设计
华中科技大学
华中科技大学C语言程序设计
资源描述:
《标准C语言程序设计》上机报告
实验七 指针及函数结构体初步程序设计
专业:
班级:
学号:
姓名:
完成日期:
1
一、 实验目的
1. 进一步理解指针的概念,掌握指针变量间接地址访问的本质;
2. 掌握利用指向数组的指针变量表示一维数组元素及元素地址的方法;
3. 掌握利用指向二维数组的行指针变量表示二维数组元素及其地址的方法;
4. 掌握字符串的指针和指向字符串的指针变量;
5. 掌握指针数组和二级指针;
6. 熟悉通过动态内存分配实现动态数组,并体会指针在其中的作用。
7. 理解函数定义、原型和调用,掌握函数参数的传递(传值、传指针和传引用)
二、 实验内容及要求(鼓励一题多解)
1. 深入理解《上机实践训练教程》2.6实验六案例示范和有关概念 文字描述中的知识点,给出你的理解。
定义指针时一定要给指针分配好应有的类型和内存空间,防止出现野指针,造成程序不能运行甚至系统崩溃。
数组名不能作为左值,它实际上是一个常量指针,不能通过str=“comrade”给字符数组str赋值。
2. 输入每个学生的姓名和线性代数、通信原理和C语言课程成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。(注:平均值相同者按姓名的字母表顺序排列)(要求用结构体数据类型实现)
#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;iname);
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#define N 5
void main()
{
int num[N],*pnum[N],**pp,i,j,temp;
printf("请输入数组中的元素:\n");
for(i=0;i**(pp+j+1))
{
temp=**(pp+j);
**(pp+j)=**(pp+j+1);
**(pp+j+1)=temp;
}
}
}
printf("按照从小到大的顺序排列为:\n");
for(i=0;ichar *GetString(void)
{
char p[ ] = "hello world";
return p; // p指针指向哪一类内存空间?
}
void main(void)
{
char *str = NULL;
str = GetString();
cout<< str << endl;
}
错误原因及你的理解:
修正方案1:
修正方案2:
5. 编程求一个3×3矩阵转置(即行列互换)并输出矩阵中最大值及位置。(要求用二维数组double num[3][3]存储矩阵,用行指针变量dopuble (*p)[3]访问二维数组)
#include void main()
{
double num[3][3],(*p)[3];
int i,j,a,b;
printf("请输入矩阵元素:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%lf",&num[i][j]);
}
p=num;
for(i=0,a=0,b=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(p[i][j]>p[a][b])
{
a=i;
b=j;
}
}
}
printf("最大值为%lf\n所在的位置为第%d行第%d列",p[a][b],a+1,b+1);
printf("转置矩阵为:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%lf\t",p[j][i]);
printf("\n");
}
}
运行结果
6. 输入2整数a和b,设计一个函数void calculate(int *psum,int *psub)计算a和b的平方和与平方差,main函数调用calculate函数并输出2个计算结果。(拔高:设计函数void calculate2(int &refsum,int &refsub)计算a和b的平方和与平方差)
#include void calculate(int *psum,int *psub);
void main()
{
int a,b,*p1,*p2;
printf("请输入两个数:\n");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
calculate(p1,p2);
printf("两数的平方和为%d\n两数的平方差为%d\n",*p1,*p2);
}
void calculate(int *psum,int *psub)
{
int m,n;
m=*psum;
n=*psub;
*psum=m*m+n*n;
*psub=m*m-n*n;
}
运行结果:
三、 上机中的感受、困惑及教学建议
对malloc free的用法还是不是很熟练,对多级指针的掌握有待加强。
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:华中科技大学标准C语言程序设计上机试题、答案及报告格式.doc
链接地址:https://www.renrendoc.com/p-16463492.html