C语言实验报告之指针、结构体等综合程序设计
- 格式:doc
- 大小:107.00 KB
- 文档页数:8
C语言实验报告C语言实验报告1一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用的技能!一、心得与感想首先,在实训中的第一步是编写功能较为单一的小程序,虽然是小程序,但所用的知识却都是我们本学期学习的重点知识。
在做题的过程中让我们把这些知识复习了一遍,强化了知识!其次,这次作中所碰到的题目,在实训中已经接触过,所我们都比较深知这些题目的要求和算法,因次在编写小程序时比较快,而且算法也是比较简化,运算准确。
鉴次我明白很多编程题要经过多次编写修改与调试,才会得到最简略的算法。
再次,平时我们学C语言视乎都是为了考试或者做一些比较常规的题目,而这次实训却给我们的将所学知识运用于解决实际问题的机会,让人更有激情,这就是编写软件的在雏形,也让我们感受到了编写软件程序的乐趣。
但是不仅仅是如此,更为重要的是在运用所学知识的过程中,记住这些知识,并能够广泛的运用!虽然我这次是编写一个菜单的程序,但是如果我么留心的话,我们身边有许多电子设备都是内置有程序的,我们也可以在此次专题实训过后,自行确定其他的专题进行编写程序,这样可以让我们的知识更加深化丰富!这次实训似乎是对我巨大的考验,程序在不慌不忙的进行着,按照我自身的进度,提前完成是没有问题的,但是很多客观条件让我不得不在最后的时间里才上交的作业。
每当我把程序写完以后,却由于每一台电脑的识别格式不一样而导致我所写的文件一次次的被损坏,尽管这样,我仍然没有放弃,最后还赶在截止时间到来之前上交了我的作业!这一次编写大作业的程序又让我感受到学程序可以锻炼缜密的思维了。
因为平时练习的都是小程序,所以句段比较少,一些错误都很容易被检查出来,但是这次实训却是上百段的语句,难以检查,似乎也没有经验去怎么检查,那一刹那感觉到很急,但又不知如何是好,可是又不轻易的向老师询问,因为好像蛮简单,相信自己能够检查出来,所以我一般都是独立思考的完成的,只有少部分是在老师和与同学讨论下完成的。
C语⾔程序设计实验实验报告《C语⾔程序设计实验》实验报告实验九⽂件编程(⼀)班级:_07某某专业1班_学号:______姓名:___实验样例_____⽇期:___2008.6.10_____台州学院数信学院计算机系制作⼀、实验⽬的和要求综合使⽤基本结构、基本算法、函数、指针、结构体、链表等知识设计程序。
⼆、实验指导1、注意:本次实验为综合性实验,需要综合本课程以前所学内容,完成编制⼀个⼩型应⽤程序。
需要复习课本以前所学内容,浏览上课讲解的相关内容。
2、实验时间安排:准备实验⽅案,上课时上机编程,课余完成整个设计并完成实验报告。
3、实验具体要求:以⼀张假想的学⽣期中成绩表为实验对象,编制⼀个⼩型应⽤程序,可以考虑实现以下功能:(1)成绩修改;(2)成绩查询;(3)成绩统计;(4)成绩输⼊。
也可以实现其他⾃定义的功能。
界⾯采⽤简易菜单形式,可以分级显⽰。
实验需要进⾏以下步骤:需求分析、程序设计、程序调试、程序运⾏,并对程序运⾏效果进⾏分析,提出改进⽅案。
初步锻炼学⽣的程序设计能⼒、程序调试能⼒、对实验结果进⾏综合分析的能⼒。
4、实验成绩评价标准:参见成绩评定表。
四、实验报告内容(参见样本,请另附页)实验报告必须包含以下内容:1、对你设计的程序功能进⾏的较详细描述。
2、画出程序测试⽤的学⽣期中成绩表(包含:表头、若⼲⾏包含学⽣成绩等信息的数据⾏)。
3、给出程序清单(包含结构体的声明与定义、所有的函数声明、所有的全局变量、所有的函数定义、必要的注释。
注:如果程序过长,可以不⽤给出所有的函数定义,只给出主要的函数定义)。
4、运⾏结果(写出运⾏时的主界⾯、各模块的实现界⾯等,不作具体要求,但要求能清晰地体现出程序的功能)。
5、对你的设计作⼀个评价(可以包含你所花的时间、精⼒,你遇到的困难及如何解决的,你的设计过程所遇到的其他事情;必须包含你对设计的客观评价,以及提出的改进⽅案)。
1、程序功能描述:(略)2、成绩表样表:3、程序清单:(红⾊部分是和上⼀个程序的区别之处)#includestruct student /*期中成绩表的结构声明*/{int num;char name[20];char sex;float YuWen;float ShuXue;float YingYu;float totle;};#define MAX_STU_NUMBER 100 /*宏定义最⼤学⽣数为100⼈*/struct student Stu[MAX_STU_NUMBER]; /*⼀次性定义100个学⽣的存储空间*/int STU_NUMBER; /*存放学⽣数*/char *FileName = "chengji.txt"; /*成绩存放的⽂件*//*所有的函数声明:*/int SelectMainMenu(); /*显⽰并选择主菜单。
C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。
2. 掌握C语言编程的基本技巧和方法。
3. 提高分析问题、解决问题的能力。
4. 学会将理论知识应用于实际编程中。
二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。
控制结构(顺序、分支、循环)的实现。
函数的定义和调用方式练习。
2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。
通过模块间的调用和传递数据来实现整个程序的功能。
3. 文件操作与文件读写文件的打开、关闭、读写操作练习。
文件格式的转换和数据统计处理。
4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。
练习使用常见的预处理指令如include、define、ifdef等。
5. 结构体、链表与指针结构体的定义和使用。
链表的创建、插入、删除、遍历等操作。
指针的概念和指针运算。
深入理解指针与数组、结构体等数据结构的关系。
6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。
嵌入式系统的基本概念和编程方法。
7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。
项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。
三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。
2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。
3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。
4. 团队合作:在小组项目中与他人协作,共同完成任务。
四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。
2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。
3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。
4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
《C语言程序设计》实验报告学院:专业:学号:姓名:成绩:课程代码: 2001301指导教师:实验中心:电气信息专业试验中心日期:目录实验总体要求实验一………………………………………………C语言的运行环境和运行过程实验二………………………………………………数据类型、运算符与表达式实验三………………………………………………程序结构(顺序、选择和循环) 实验四………………………………………………数组实验五………………………………………………函数实验六………………………………………………指针实验七………………………………………………结构体实验八………………………………………………类和对象实验总体要求C语言程序设计课程是一门实践性很强的课程,为了培养学生的计算机应用能力,除了课堂理论教学外,必须加强程序设计课程实验的教学环节。
1、课程实验教学目的通过C语言程序设计的课程实验教学,学生应具有使用计算机解决相关问题的能力,同时为学生今后学习其他计算机应用课程打下良好的程序设计基础。
⑴分析问题和解决问题能力的训练课程实验教学将课本上的理论知识和实际应用有机地结合起来,达到训练学生分析问题解决实际问题的能力,提高学生应用计算机知识开发应用系统的综合能力。
⑵逻辑思维能力的训练通过课程实验教学,使学生正确地掌握C语言的基本知识,较好掌握基本的程序算法,以及描述方法。
培养学生在程序设计解题思路、算法的描述、编程构思等方面的计算机逻辑思维能力。
⑶程序设计技能的训练通过C语言环境下的应用实例,训练学生编写程序的能力,掌握编程的思路和方法,掌握结构化程序设计的基本概念和基本技能。
通过课程实验教学,使学生掌握C程序设计语言的语法规则,数据结构的应用,掌握算法描述及相应代码描述,掌握结构化程序设计的基本方法,能熟练编写一般的应用程序。
2、课程实验教学要求⑴要求通过解题、程序设计和上机实践,加深对所学概念的理解,提倡理论与实践相结合的学习方法。
c语言实习报告3篇c语言实习报告1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的.学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
C语言实验报告之指针结构体等综合程序设计实验目的:1.掌握C语言中指针和结构体的基本概念和用法;2.综合运用指针和结构体,设计和实现一个复杂的程序。
实验内容:设计一个简单的图书管理系统,实现如下功能:1.添加图书:输入图书的名称、作者、出版社和价格,将图书信息保存到图书库中;3.修改图书价格:输入图书的名称,通过遍历图书库,找到要修改的图书,然后输入新的价格;4.删除图书:输入图书的名称,通过遍历图书库,找到要删除的图书并删除;5.显示所有图书:输出图书库中所有图书的信息。
实验步骤:1. 定义一个结构体类型Book,包含图书的名称、作者、出版社和价格;2. 声明一个指向Book结构体的指针bookPtr,用于操作图书库;3. 实现添加图书的函数addBook(,从控制台输入图书信息,将其保存到图书库中;5. 实现修改图书价格的函数changePrice(,从控制台输入要修改的图书的名称和新的价格,通过遍历图书库找到要修改的图书并更新价格;6. 实现删除图书的函数deleteBook(,从控制台输入要删除的图书的名称,通过遍历图书库找到要删除的图书并删除;7. 实现显示所有图书的函数displayBooks(,遍历图书库输出所有图书的信息;8. 定义主函数main(,在主函数中使用以上函数完成图书管理系统的交互操作;9.运行程序,测试图书管理系统的各项功能是否正常;10.编写实验报告,总结实验过程和实验结果。
实验结果:经过测试,图书管理系统的各项功能正常运行,可以成功添加、查找、修改和删除图书,同时可以显示图书库中所有图书的信息。
实验总结:通过本次实验,我进一步学习和掌握了C语言中指针和结构体的基本概念和用法。
通过设计和实现图书管理系统这个复杂的程序,我综合运用了指针和结构体,提高了编程能力,并加深了对C语言的理解。
实验中还遇到了一些问题,比如如何正确遍历图书库、如何确保输入的图书名称不重复等,通过分析和思考,我逐渐找到了解决问题的方法。
实验报告_实验1 复习、指针(1)(学号_姓名)一、实验目的:1、复习C语言的基本概念和基础知识;2、通过查看变量地址,了解不同类型数据在内存存储情况;理解用指针获取内存数据的两个关键点:首地址、数据类型(决定占用的存储单元的个数、数据存储方式);3、掌握指针变量的定义方法、=(赋值)、&(取地址)、*(取内容,间接访问);4、能够用指针变量作函数参数,实现通过函数调用得到n个要改变的值;5、注意避免使用悬空指针及swap函数的不正确写法。
二、实验内容1、(基础题)程序代码:# include <stdio.h># include <string.h>int main(void){char str[50];int k;int a,e,i,o,u;a=e=i=o=u=0;printf("请输入一个长度不超过50的字符串\n");gets(str);for(k=0;str[k];k++){if(str[k] == 'A' || str[k] == 'a')a++;if(str[k] == 'E' || str[k] == 'e')e++;if(str[k] == 'I' || str[k] == 'i')i++;if(str[k] == 'O' || str[k] == 'o')o++;if(str[k] == 'U' || str[k] == 'u')u++;}printf("\n");printf("该字符串中出现:\n");printf("A或a出现的次数:%d\n", a);printf("E或e出现的次数:%d\n", e);printf("I或i出现的次数:%d\n", i);printf("O或o出现的次数:%d\n", o);printf("U或u出现的次数:%d\n", u);return 0;}2、(基础题)#include<stdio.h>//定义结构体Student,学生姓名不超过10个字符//三门课程成绩均为百分制,只取整数struct Student{//代码段1char name[10];int chinese;int english;int math;int total;};int main(){//定义结构体数组stud[3]//对input()、sum()、print()三个函数进行声明//调用input()、sum()、print()三个函数//代码段2struct Student stud[3];void input(struct Student s[], int n);void print(struct Student s[], int n);void sum(struct Student s[], int n);input(stud, 3);sum(stud, 3);print(stud, 3);return 0;}//定义输入n名学生的姓名、三门课程成绩的函数。
c语言实验设计心得与总结经过一个星期的上机实践学习,使我对c语言有了更进一步的认识和了解,要想学好它要重在实践,要透过不断的上机操作才能更好地学习它,透过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,透过学习也有所改善;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,透过实践,使我在这几个方面的认识有所提高。
借由课堂教学的自学,我认到努力学习计算机必须注重课堂教学操作方式,不仅仅仅就是自学c语言,还是其它的语言,以及其它的计算机方面的科学知识都必须轻在课堂教学,所以后在自学过程中,我会更加凝视课堂教学操作方式,并使自己便好地努力学习计算机。
经过一个学期的自学,我对C语言存有了必须的介绍。
C语言就是自学计算机科学的基础,做为一名计算机专业学生,掌控C语言更是毋庸置疑。
在听课之前,就经常听到同学说道,C语言很难学,的确,刚开始听讲时真的老师不知所云。
但是,辨认出对时程资料的复习后,前面的疑团都迎刃而解,这使我对C语言的自学更存有信心。
计算机最重要的就是上机操作,自己编写程序,在VisualC++运行,刚开始经常会出现错误,经过分析改正后,最后能够运行了,就觉得个性激动。
课程设计就是一个把需求分析、程序撰写、程序调试、编写报告融合为一体的过程。
在这个过程中,不仅仅锻炼身体了我们周密的思维和秉持疑惑的毅力,更磨练了一个队伍的团结互助的精神。
只有借由大家一齐不懈努力就可以将课程设计的所有环节都成功的顺利完成。
另外程序设计中我们碰到问题并解决问题的过程,使我们独自积极探索并解决问题的潜力了用了一个提升,这有助于我们以后的自学。
同时这整一个过程,也并使我们对程序撰写的整个过程存有了一个统筹规划全局的思想,因为需求分析、程序撰写、程序调试、编写报告这些过程就是环环相扣的,绝对不可能将单一制展开。
课程设计是学习《C程序设计》后对知识的全面测试,刚拿到题目时不明白怎样去处理,觉得很复杂,经过和小组成员的讨论,上网查资料,逐个问题逐个击破,问题不再那么复杂。
一、实验的目的、要求及内容
1、通过实验掌握指针的概念,学会定义和使用指针变量。
2、能正确使用数组的指针和指向数组的指针变量。
3、能正确使用字符串指针和指向字符串的指针变量。
4、掌握结构体类型变量的定义和使用。
二、算法设计思想及内容
本实验主要完成指针和结构体的应用训练,总共要求完成三个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。
具体要求完成的问题如下:
1、采用指针方式编写程序输入10个整数,将其中最小的数与第一个数对换,把最
大的数与最后一个数对换。
写3个函数:(1)输入10个数;(2)进行处理;(3)
输出处理后的10个数。
2、采用指针方式在主函数中输入字符串,在函数中求出字符串的长度,然后输出求
出的长度。
3、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个
学生的数据,要求输出3门课程的总平均成绩,以及最高分数的学生的数据(包
括学号、姓名、3门课的成绩、平均分)。
三、所使用的软硬件平台
软件平台:Microsoft Windows XP专业版SP3,Microsoft Visual C++ 6.0。
硬件平台:联想系列,Intel(R)Core(TM)i3,CPU 3.20Ghz,2.99GB内存,550GB硬盘。
四、源程序代码
1.#include<stdio.h>
int main()
{int a[10];
void shuru(int a[10]);
void chuli(int a[10]);
void shuchu(int a[10]);
printf("请输入10个数:");
shuru(a);
chuli(a);
printf("输出处理后的10个数为:");
shuchu(a);
printf("\n");
return 0;
}
void shuru(int a[10])
{int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void chuli(int a[10])
{int i,*max,*min,t1,t2;
max=min=a;
for(i=0;i<10;i++)
{if(*max<a[i]) max=&a[i];
if(*min>a[i]) min=&a[i];
}
t1=*max;
*max=a[9];
a[9]=t1;
t2=*min;
*min=a[0];
a[0]=t2;
}
void shuchu(int a[10])
{int i;
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
2.#include <stdio.h>
ch(char *a)
{int count=0;
char *p=a;
while(*p++) count++;
return count;
}
int main()
{char a[32767];
printf("请输入一个字符串:\n");
gets(a);
printf("该字符串的长度为:%d\n",ch(a));
return 0;
}
3.#include<stdio.h>
#define N 5
struct student
{char number[6];
char name[8];
int score[3];
int average;
}student[N];
int main()
{int i,j,sum=0,maxi=0,max=0,average=0;
for(i=0;i<N;i++)
{printf("输入第%d个学生以下相关信息:\n",i+1);
printf("学号:");
scanf("%s",student[i].number);
printf("姓名:");
scanf("%s",student[i].name);
for(j=0;j<3;j++)
{
printf("第%d门课程的成绩:",j+1);
scanf("%d",&student[i].score[j]);
}
}
for(i=0;i<N;i++)
{
for(j=0;j<3;j++)
sum+=student[i].score[j];
student[i].average=sum/3;
average=average+student[i].average;
if(sum>max)
{
max=sum;
maxi=i;
}
sum=1;
}
average/=N;
printf("学号姓名科目1 科目2 科目3 平均成绩\n");
for(i=0;i<N;i++)
{
printf("%2s%5s",student[i].number,student[i].name);
for(j=0;j<3;j++)
printf("%6d",student[i].score[j]);
printf("%8d\n",student[i].average);
}
printf("3门课程的总平均成绩为:%d\n",average);
printf("最高分学生的号数:%s,姓名:%s\n",student[maxi].number,student[maxi].name);
printf("这个学生3门课程的成绩分别为:%d,%d,%d,平均成绩为:d\n",student[maxi].score[0],student[maxi].score[1],student[maxi ].score[2],student[maxi].average);
return 0;
}
五、运行结果及分析
1.
2.
3.
六、结论与体会(在上机程序调试中遇到的问题、采用的解决办法、得到的收获)
通过对指针和结构体的学习,我体会到了指针是C程序中广泛使用的一种数据类型。
运用指针进行编程是C语言最主要的风格之一。
利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能编写出高校的程序。
指针极大地丰富了C语言的功能,学习指针是C语言学习中重要的一个环节,
能否正确理解和掌握指针的使用时我们是否真正掌握C语言精华的一个标志。
同时,指针也是C语言中很困难的一部分,在学习中除了要真正理解基本概念,还需要多多编程上机实践。
当一个C程序中变量过多,各个数据之间难以联系,没有整体概念的时候,结构体的作用大大凸显,定义一个结构体类型,可以在一个结构中声明不同的数据类型,相同结构的结构体变量是可以相互赋值的。
使用结构体不仅节省了内存空间,而且使得编程效率大大提高。
仅供学习交流参考。