C程序设计上机实验报告12

更新时间:2023-12-01 21:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C程序设计实验报告

实验名称:结构程序设计 学时安排:2课时

实验类别:上机操作型 实验要求:1人1组

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的

1. 2. 3. 4.

掌握结构变量的基本使用方法; 掌握结构数组的基本使用方法; 掌握结构的简单嵌套应用;

掌握结构指针的概念,以及结构指针作为函数参数的编程方法。

二、实验设备介绍

软件需求: Visual C++ 6.0或CFree3.5以上版本

硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 三、实验内容

1. 定义一个关于年、月、日的结构,并编写函数计算某日是该年中的第几天?要求用结构指针作为函数参数,注意闰年问题。以下部分程序供参考,可自行改动: struct date{ /*日期结构体:包含年月日*/ int year; int month; int day; };

void dayofyear(struct date *pday); int main(void) { struct date temp,*pday; pday=&temp; /*请添加*/ }

运行结果示例如下:

Input year、month and day: 2006 3 5 64

2. 改正程序error09_2.cpp中的错误。建立一个有n(3到10之间)个学生成绩的结构记录,包括学号、姓名和3门成绩,输出总分最高的学生姓名和总分。输入输出结果如下所示: n=3 1 zhang 78 83 75 2 wang 76 80 77 第 1 页 共 4 页

3 shen 92 88 78 总分最高的学生是:shen,258分

要求把正确的代码(按规范缩进)写入报告,并以注释的方式说明错误原因。 注释示例如下: int i; /*循环控制变量不能定义为double类型*/

3. 编写一程序,计算两个时刻之间的时间差,并将其值返回。时间以时、分、秒表示,假设两个时刻的差小于24 小时。(此题选做)

提示:先输入两个时间,然后比较两个时间的大小,用大的减去小的。时间相减从秒开始,如果负数则需位,再减分,最后减小时。

四、程序清单 第一题

#include int main() {

int result;

struct riqi{ int year; int month; int day; }date;

printf(\、month and day:\

scanf(\ int day_of_year(int year,int month,int day);

result=day_of_year(date.year,date.month,date.day); printf(\ return 0; }

int day_of_year(int year,int month,int day) {

int k,leap,yearday; int

tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30},{0,31,29,31,30,31,30,31,31,30,31,30}};

leap=(year%4==0&&year0!=0)||year@0==0; yearday=0;

for(k=1;k

yearday=yearday+tab[leap][k]; yearday=yearday+day; return yearday; } 第二题

第 2 页 共 4 页

#include int main (void) {

struct student{ int number; char name[20]; int score[3]; int sum; };

struct student student[20];/*定义记录20个学生信息的结构数组*/

int i, j, k, n, max=0; printf(\输入n:\ scanf(\

for (i = 0; i < n; i++){

printf(\输入第%d个学生的学号、姓名和3门成绩:\输入第i+1个学生*/

student[i].sum=0;/*将成绩和初始化*/

scanf(\ for(j = 0; j < 3; j++){

scanf(\

student[i].sum += student[i].score[j]; } }

max = student[0].sum; for(i = 0; i < n; i++)

if(max < student[i].sum) {

max = student[i].sum; k = i; }

printf(\总分最高的学生是: %s,%d分\\n\student[k].name, student[k].sum); return 0; } 第三题

#include struct time {

int hour; int minute; int second; };

void main()

第 3 页 共 4 页

{ }

struct time time1,time2;

int timestart,timeend,hours,minutes,seconds; printf(\输入起始时刻:\

scanf(\printf(\输入结束时刻:\

scanf(\timestart=time1.hour*3600+time1.minute*60+time1.second; timeend=time2.hour*3600+time2.minute*60+time2.second; hours=(timeend-timestart)/3600;

minutes=(timeend-timestart-3600*hours)/60;

seconds=timeend-timestart-3600*hours-60*minutes;

printf(\两时刻相差:%d小时%d分%d秒\\n\return 0;

五、运行结果 第一题

第二题

第三题

六、实验心得

写结构的程序题时,注意结构定义以及结构名。注意程序要条理清晰。

第 4 页 共 4 页

本文来源:https://www.bwwdw.com/article/062t.html

Top