中南大学C语言实验(指针、结构体)
C语言实验报告之指针结构体等综合程序设计
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语言的理解。
实验中还遇到了一些问题,比如如何正确遍历图书库、如何确保输入的图书名称不重复等,通过分析和思考,我逐渐找到了解决问题的方法。
中南大学c语言课程实践报告
中南大学c语言课程实践报告Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】中南大学??C语言程序设计实践报告??????题目学生信息管理系统学生姓名张眼指导教师刘伟荣学院信息科学与工程学院专业班级电气信息1113班完成时间 2012年6月28日星期四?printf("\t\t\t|学生信息管理系统欢迎您|\n");printf("\t\t\t+---------------------------+\n");printf("\t\t\t+设计者:张眼\n");printf("\t\t\t+指导老师:刘伟荣\n");printf("重要提示:为保证您的操作得到保存,请按正常顺序退出系统!谢谢合作\n");do{printf("\n\t\t\t+++++++++++++++++++++++++++++\n");printf("\t\t\t|**菜单**|\n");printf("\t\t\t+++++++++++++++++++++++++++++++++\n");printf("\t\t\t*[1]----录入/插入学生信息*\n");printf("\t\t\t*[2]----浏览学生信息*\n");printf("\t\t\t*[3]----查询学生信息*\n");printf("\t\t\t*[4]----删除学生信息*\n");printf("\t\t\t*[5]----修改学生信息*\n");printf("\t\t\t*[6]----不及格学生列表*\n");printf("\t\t\t*[7]----成绩信息查询*\n");printf("\t\t\t*[8]----平均成绩*\n");printf("\t\t\t*[0]----退出系统*\n");printf("\t\t\t********************************\n");printf("请输入您的选择:");scanf("%d",&z);switch(z){case0:tc();break;case1:lr();break;case2:ll();break;case3:cx();break;case4:sc();break;case5:xg();break;case6:bj();break;case7:kc();break;case8:pj();break;default:printf("\n无效选项!");}}while(z!=0);}②输入模块:输入部分包括学生的姓名,学号等基本信息以及学生的大学物理,英语,微积和信号的成绩,可以通过函数void lr() 实现此功能。
C计算机实践报告.doc
C计算机实践报告中南大学本科生课程设计实践任务书、设计报告(C 课程设计)题目职工工资管理系统学生学号学生姓名指导教师学院物理学院专业班级指导老师计算机基础教学实验中心2010年07 月08 日职工工资管理系统摘要经过近两周24学时的C计算机实践,我基本上完成了对所要求的熟悉使用MFC类库编程和使用C编写一个关于企业职工工资管理系统的程序。
对于使用C面向对象的编程思想也有了更深的体会。
关键词职工工资、系统、指针、链表、增加删除信息、结构体、类成员函数使用、全局变量1、职工工资管理系统的开发设计思想1、职工工资管理系统可以通过输入输出某一职工的一些信息,如月份、编号、基本工资、补贴等进行对职工信息的处理。
2、为了更方便地表示一个职工的基本信息,可以先定义一个结构体(Emp_info),在这个结构体中包含了一个职工的所有基本信息。
3、定义一个类(Employee),在类中定义必要的成员函数,用这些函数可以对结构体中的职工信息进行需要的处理,如添加职工信息函数(AddItem)、删除职工信息函数(RemoveItem)、查找职工信息函数(Search)等。
然后通过调用成员函数来实现系统的功能。
4、用类Employee定义一个全局变量employee,设计主函数及其所调用的函数,通过employee来使用类中的成员函数达到处理数据的目的。
2、职工工资管理系统功能及系统设计介绍1、系统的功能职工工资管理系统能根据已输入的数据信息进行必要的数据处理,然后可以根据提示添加或删除职工信息,还可以对有误信息进行修改。
出于发工资时的需要可以对某些或全部的职工信息进行输出。
系统的总的功能如图所示职工工资管理系统输出主菜单输入选项添加职工工资信息删除职工工资信息修改职工工资信息输出指定职工工资信息输出全体职工工资信息退出结束是否为完成这些功能首先需要一个可以存储数据的数据单元,即一个结构体Emp_info,在这个结构体中定义必要的变量pay[5]、gpay、tax、ded、apay。
中南大学C++课程设计实践报告!
中南大学本科生课程设计(实践)任务书、设计报告(C++程序设计)题目学生成绩管理系统学生姓名指导教师学院专业班级学生学号计算机基础教学实验中心年月日学生成绩管理系统关键字:学生成绩 MFC 编写系统内容:定义一个结构体,存放下列信息:学号、姓名、性别、系名、班级名、成绩等1.学生成绩管理系统开发设计思想要求:一:数据输入:输入学生的相关信息,若用户输入数据或信息不正确,给出“错误”信息显示,重复刚才的操作;至少要输入10个学生的数据;可以随时插入学生信息记录;二:每个学生数据能够进行修改并进行保存;三:可以根据学号或者姓名删除某学生数据;四:查询模块要求能按学号,按姓名,按班级等条件进行查询;五:界面要求美观,提示信息准确,所有功能可以反复使用。
学生成绩管理程序从总体设计方面来看,基本的功能包括主控模块,数据输入模块,数据修改模块,数据查询模块等。
设计模块图:2.系统功能及系统设计介绍详细设计:对于总体设计说明的软件模块,进一步细化,要说明各个模块的逻辑实现方法。
下面逐个说明。
主控模块:主要完成初始化工作,包括屏幕的初始化,显示初始操作界面。
初始界面中主要包括功能的菜单选择项。
输入处理:利用链表技术输入多名学生的数据,直到输入学生的学号以“@”开头,则结束数据的输入。
程序运行流程图如下:删除处理:利用链表技术删除某学号的学生成绩信息,如果找到该学号则进行删除,否则输出“未找到”的信息。
程序运行流程图略。
查找处理:利用链表技术根据学生学号或姓名等方式查找某学号的学生成绩信息,其程序流程图略。
排序处理:利用链表技术根据学生学号对学生数据进行排序,其部分源代码如下:/***********xuesheng.c***********//******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h" /*内存操作函数*/#include "ctype.h" /*字符操作函数*/#include "alloc.h" /*动态地址分配函数*/#define N 3 /*定义常数*/typedef struct z1 /*定义数据结构*/{char no[11];char name[15];char sex[5];char major[15];char class[15];char tele[15];char address[15];int order;struct z1 *next;}STUDENT;/*以下是函数原型*/STUDENT *init(); /*初始化函数*/STUDENT *create(); /*创建链表*/STUDENT *dele(STUDENT *h); /*删除记录*/void print(STUDENT *h); /* 显示所有记录*/void search(STUDENT *h); /*查找*/STUDENT *sort(STUDENT *h); /*排序*/int menu_select(); /*菜单函数*/STUDENT *insert(STUDENT *h); /*插入记录*/void save(STUDENT *h); /*保存*/STUDENT *load(); /*读入记录*/void inputs(char *prompt, char *s, int count);/******主函数开始*******/main(){int i;STUDENT *head; /*链表定义头指针*/head=init(); /*初始化链表*/clrscr(); /*清屏*/for(;;) /*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ { /*值不同,执行的函数不同,break 不能省略*/case 0:head=init();break; /*执行初始化*/case 1:head=create();break; /*创建链表*/case 2:head=dele(head);break; /*删除记录*/case 3:print(head);break; /*显示全部记录*/case 4:search(head);break; /*查找记录*/case 5:head=insert(head); break; /*插入记录*/case 6:head=sort(head);break; /*排序*/case 7:save(head);break; /*保存文件*/case 8:head=load(); break; /*读文件*/case 9:exit(0); /*如菜单返回值为14程序结束*/}}}/*菜单函数,返回值为整数*/int menu_select(){char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/" 0. init list", /*初始化*/" 1. Input", /*输入记录*/" 2. Delete", /*删除记录*/" 3. List", /*显示记录*/" 4. Seek(name)", /*查找*/" 5. insert record to list ", /*插入记录到表中*/" 6. Sort", /*排序*/" 7. Save", /*保存*/" 8. Load", /*从文件中读入记录*/" 9. Quit",/*退出*/3.系统开发的体会本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。
中南大学信息科学与工程学院C语言程序设计实验
char sex;
/* 性别 */
int age;
/* 年龄 */
float score;
/* 平均成绩 */
}
2. 完成下列任务:
(1) 输入实际学生人数 n (2<n<4);
(2) 输入每个学生的信息,组成结构数组,并输出;
(3) 统计男、女生人数并输出;
(4) 计算全班平均成绩并输出;
(5) 将低于全班平均成绩的学生信息按行输出
#include <stdio.h> void main() {
int a, b, sum; a = 123; b = 456; sum = a + b; printf( “ sum is %\nd” , sum); } 调试通过后,自己修改程序,使程序出错,并读懂错误提示,进行修改。
1/9
实验二 数据输入输出格式的程序设计
三、 输入随机数的要求
#include <stdlib.h>
#define RMAX 5
#define cMAX 5
#define nMAX 100
main()
{.
/* 变量初始化说明 */
.
clrscr(); /*调清屏函数清屏 */
randomize(); /*在初始化后调用产生随机数函数 */
一.目的要求 1.进一步熟悉调试程序的方法; 2.熟练掌握格式输入与格式输出函数的使用。 3.掌握字符与 ASCⅡ值之间的转换方法。 4.上机前预习编写好程序;
二.实验内容与步骤 1.按右图设计屏幕输出 2.光标停在 Enter Number: 之后,等待输入任一字符; 3.输入字符 1,则显示:
Ch=1-- 49
C语言实验7 指针实验报告
实验内容3::有一个班4个学生,5门课。①求第一门课的平均分;②找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。
return 0;
}
void sub_ave(float (*a)[5],int n)
{
int i;
float sum=0;
for(i=0;i<4;i++)
sum=sum+*(*(a+i));
printf("第一门科目的平均分为%.2f\n",sum/4);
}
void search1(float (*a)[5],int n)
*(*(a+i)+j)=*(*(a+j)+i);
*(*(a+j)+i)=t;
}
}
实验三
#include<stdio.h>
int main()
{
float a[4][5];
void sub_ave(float (*a)[5],int ),search1(float (*a)[5],int ),search2(float (*a)[5],int );
return 0;
}
实验二
#include<stdio.h>
int main()
{
int a[3][3];void f(int (*a)[3]);
int i,j;
for(i=0;i<3;i++)
中南大学C语言实验答案(完整版)
i=big+middle+small;
if (n==100 && i==100)
{
printf("Big=%d,Middle=%d,Small=%d,n=%d,i=%d\n",big,middle,small,n,i);
ncount++;
}
}
big++;
printf("* Menu *\n");
printf("* 1.Input *\n");
printf("* 2.Output *\n");
printf("* 3.End *\n");
printf("* * * * * * * * * * * * *\n");
printf(" Enter Number=> \n");
三:选做实验
实验指导书56页第二章选择结构的任意实验
解答:
一、
#include<conio.h>
#include<stdio.h>
main()
{
int n;
float x,y;
clrscr();
printf("Please Enter The Number:");
gotoxy(25,1);
scanf("%d",&n);
printf(" Ch=----------> ");
gotoxy(20,8);
c1=getch();
c语言 结构体指针操作
在C语言中,结构体指针是一种指向结构体的指针。
通过结构体指针,我们可以对结构体进行操作,例如访问结构体的成员、修改结构体的内容等。
下面是一些关于结构体指针的基本操作:
定义结构体指针:
c
struct MyStruct {
int x;
float y;
};
struct MyStruct *ptr;
初始化结构体指针:
c
ptr = malloc(sizeof(struct MyStruct)); // 为结构体分配内存通过结构体指针访问结构体的成员:
c
ptr->x = 10; // 访问结构体的成员x,并赋值为10
ptr->y = 20.5; // 访问结构体的成员y,并赋值为20.5
释放内存:
c
free(ptr); // 释放结构体所占用的内存空间
指向另一个结构体:
c
struct MyStruct anotherStruct;
ptr = &anotherStruct; // 将结构体指针指向另一个结构体
创建指向数组的结构体指针:
c
struct MyStruct arr[10];
struct MyStruct *arrPtr = arr; // 创建一个指向数组的指针
需要注意的是,在使用结构体指针时,我们需要确保指针指向的内存空间是有效的,并且在使用完毕后及时释放内存,避免内存泄漏。
同时,还需要注意指针的类型和所指向的结构体的类型是否匹配,避免出现类型不匹配的错误。
C语言实验六实验报告—指针
C语言实验六实验报告—指针实验六:指针实验报告一、实验目的1.了解指针的概念和作用;2.掌握指针与数组、函数的关系;3.熟悉指针的运算和指针的应用。
二、实验内容1.指针的定义和初始化;2.指针与数组的关系;3.指针与函数的关系。
三、实验原理1.指针的定义和初始化指针是一个变量,其值为另一个变量的地址。
可以使用指针来访问和修改内存中的数据。
指针的定义格式为:数据类型*指针名;可以使用&运算符来获取变量的地址,并将其赋值给指针。
2.指针与数组的关系数组是一组相同类型的数据的集合,而指针可以指向数组的首地址。
通过指针可以访问数组中的元素。
数组名本身就是一个指针常量,存储了数组的首地址。
定义指针指向数组时,可以使用数组名作为初始化值。
3.指针与函数的关系函数可以接受指针作为参数,通过指针可以修改传递给函数的变量的值。
函数也可以返回指针,指向在函数内部创建的局部变量。
需要注意的是,在使用指向局部变量的指针时要小心,因为函数执行完毕后,局部变量会被释放,指针将指向无效的内存地址。
四、实验步骤1.指针的定义和初始化定义一个整型变量a,并使用指针p指向a的地址。
使用*p来访问a 的值,使用&运算符获取a的地址并给指针p赋值。
2.指针与数组的关系定义一个整型数组arr,并使用指针p指向数组的首地址。
使用p[i]来访问数组的元素,使用*(p+i)也可以实现相同的效果。
3.指针与函数的关系定义一个函数,接受一个指针作为参数,并使用指针修改传递给函数的变量的值。
定义一个函数,返回一个指针,指向在函数内部创建的局部变量。
在主函数中调用这两个函数,并打印出相应的结果。
五、实验结果1.指针的定义和初始化定义一个整型变量a,并初始化为10。
指针p指向a的地址,使用*p 来访问a的值。
2.指针与数组的关系定义一个整型数组arr,并初始化为{1, 2, 3, 4, 5}。
指针p指向数组的首地址,使用p[i]来访问数组的元素。
C语言实验报告——指针
{*(p[i]+i)=1;
*(p[i]+5-(i+1))=1;
}
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
printf("%2d", p[i][j]);
;
}
}
9.6编程(选作)
运行结果(请帖图):
97.运行程序(选作):
4、实验心得:
实验6指针
姓名:刘磊学号:1100530124实验日期:20120601
1.实验目的和要求
(1)掌握指针的概念、指针变量定义格式和引用。
(2)掌握指针的运算方法。
(3)掌握数组的指针和指向数组的指针变量。
(4)掌握指针与函数的关系。
(5)能正确使用字符串的指针和指向字符串的指针变量。
(6)了解指向函Байду номын сангаас的指针。
(7)了解指向指针变量的指针。
2.实验内容:实验指导书中的实验九。
3.实验步骤
9.1调试程序,找出程序的错误。
9.2运行程序:
9.3修改程序错误,并运行。
9.4.程序填空:
9.5.程序填空:
#include <stdio.h>
main()
{
int a[5][5]={0},*p[5],i,j;
for(i=0; i<5; i++) p[i]=&a[i][0];
指针是很好的工具,是的程序更加灵活。但是在使用的时候,要注意指针使用的规则,一定要初始化指针,掌握指针的单向传递规律,辨析实参与形参之间变量传递的方向性。而且指针不能滥用
C语言结构体实验报告
《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体int i;for(i = 0; i<= number; i++){Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0}}③求平均分最高的学生int averagescore(student stu[], int number){int k = 0;//查找最高平均分并记录在数组中的下标值for( int i = 0; i<= number; i++){………}return k; //返回最高平均分数组元素的下标}【测试数据】自己设计一组测试数据。
运行结果截图:【思考与扩展】如果这样定义结构体typedef struct Student{int num;//学号char name[20];//姓名注意字节长度char classname[20];//班级float score[3];//三门课程成绩float aver_score; //平均分} STU,* pSTU;说明如下三条语句的含义:student stu1;STU stu2;pSTU pstu;2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。
运行结果截图3.定义一个结构体变量(包括年、月、日)。
计算某年某月某日是本年中第几天?注意闰年问题。
运行结果截图:四、分析与讨论对上机实践结果进行分析,上机的心得体会。
成绩五、教师评语签名:日期:附源程序清单:1. #include<stdio.h>struct student{int num;char name[20];char classname[20];float score[3];float aver_score;}stu[5];void input(){int i;for(i=1;i<6;i++){ printf("第%d个同学",i);printf("请输入学号名字班级三门课程成绩:\n");scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]);}};void averagescore(){for(i=1;i<=5;i++)stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3);printf("平均成绩:");for(i=1;i<6;i++)printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score);printf("\n");};void max(){int i,k=0;float temp=stu[1].aver_score;for(i=2;i<=5;i++)if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;};printf("成绩最好的同学:\n");printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n",stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score);};void main(){input();averagescore();max();}2.#include <stdio.h>struct worker{char name[20];int workyear;float salary;}work[5];void input(){int i;for(i=1;i<=5;i++){printf("第%d个工人:",i);printf("请输入名字工作年限工资总额:\n");scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);};void main( ){int i;input();printf("初始化5名职工的信息:\n");for(i=1;i<=5;i++)printf("%s %d %f \n",work[i].name,work[i].workyear,work[i].salary);for(i=1;i<=5;i++)if(work[i].workyear>30) work[i].salary+=100;printf("最后5名职工的信息工:\n");for(i=1;i<=5;i++)printf("%s %d %f \n",work[i].name,work[i].workyear,work[i].salary);}3.#include <stdio.h>struct years{int year;int month;int date;}ye;int data[12]={31,28,31,30,31,30,31,31,30,31,30,31};void main( ){ int i,sum=0;int leap=0;printf("请输入改天的年月日:\n");scanf("%d %d %d",&ye.year,&ye.month,&ye.date);if(((ye.year%4)==0)&&((ye.year%100)!=0)) leap=1;if(((ye.year%4)==0)&&((ye.year%400)==0)) leap=1;if(leap=1) data[1]=29;for(i=0;i<(ye.month-1);i++){sum+=data[i];}sum+=ye.date;printf("\nit is the %d day.\n",sum); }。
C语言实验报告之指针结构体等综合程序设计
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.#includeint 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(\ return 0; }void shuru(int a[10]) {int i;for(i=0;i<10;i++) scanf(\}void chuli(int a[10]) {int i,*max,*min,t1,t2; max=min=a; for(i=0;i<10;i++) {if(*maxa[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(\}2. #includech(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\return 0; }3. #include #define N 5 struct student {char number[6]; char name[8]; int score[3]; int average; }student[N]; int main()感谢您的阅读,祝您生活愉快。
中南大学c课程设计实践报告
中南大学c 课程设计实践报告一、教学目标本课程的教学目标是使学生掌握中南大学C课程的核心知识,包括基本概念、原理和应用。
具体目标如下:1.知识目标:学生能够准确理解并掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
2.技能目标:学生能够熟练运用C语言进行程序设计,包括编写、调试和运行C程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生的问题解决能力和创新意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.C语言的基本语法和数据类型,包括变量、常量、数据类型、运算符等。
2.控制结构,包括条件语句、循环语句等。
3.函数,包括函数的定义、声明、调用和返回值等。
4.指针和数组,包括指针的概念、指针的运算、数组的基本操作等。
5.结构体和文件操作等高级内容。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括:1.讲授法:通过教师的讲解和演示,使学生掌握C语言的基本知识和技能。
2.讨论法:通过小组讨论和课堂讨论,激发学生的思考和问题解决能力。
3.案例分析法:通过分析实际案例,使学生了解C语言在实际应用中的作用和意义。
4.实验法:通过编写和调试C程序,培养学生的实际编程能力和问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将使用以下教学资源:1.教材:选择一本适合学生水平的C语言教材,作为学生学习的主要参考资料。
2.参考书:提供一些相关的参考书籍,供学生进一步深入学习和参考。
3.多媒体资料:制作一些教学PPT、视频等多媒体资料,帮助学生更好地理解和掌握知识。
4.实验设备:提供计算机实验室,让学生能够进行实际编程和实验操作。
五、教学评估本课程的评估方式包括平时表现、作业和考试等。
具体评估方式如下:1.平时表现:通过学生的课堂参与、提问、回答问题等方式评估学生的学习态度和理解程度。
2.作业:布置适量的作业,包括编程练习和理论题目,以巩固学生对知识的理解和应用能力。
C语言结构体与指针实验
实验一 C语言结构体与指针一、实验内容1) 学生信息的显示,具体要求如下:定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址);设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构体类型;设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数进行显示(学生人数不少于5人)。
2) 输入若干个整数作为数组元素值,然后按输入时顺序的就地逆置排序,最后打印出逆置后的元素值。
要求用指针和动态内存分配方法实现。
例如输入:10 2 30 4 5,逆置后显示为:5 4 30 2 10。
二、代码1) #include<stdio.h>struct Student{int studentID;char name[20];char sex[2]; //m=male f=femaleint age;char address[50];};void showTheDetail(struct Student s){printf("%d\n",s.studentID);printf("%s\n",);printf("%s\n",s.sex);printf("%d\n",s.age);printf("%s\n\n",s.address);}void main(){int i;struct Student student[5];for(i=0;i<5;i++) {printf("student%d\n",i);scanf("%d",&student[i].studentID);scanf("%s",&student[i].name);scanf("%s",&student[i].sex);scanf("%d",&student[i].age);scanf("%s",&student[i].address);}for(i=0;i<5;i++) {showTheDetail(student[i]);}}2)#include<stdio.h>void change(int x[],int n){int temp,i,j,m=(n-1)/2;for(i=0;i<=m;i++){j=n-1-i;temp=x[i];x[i]=x[j];x[j]=temp;}return;}int main(){int n,i;printf("please insert the amount of the numbers:\n");scanf("%d",&n);int array[n];printf("please insert the numbers:\n");for(i=0;i<n;i++){scanf("%d",&array[i]);}change(array,n);for(i=0;i<n;i++){printf("%d",array[i]);}}三、心得体会复习了c语言中的数组,结构体的知识,编程中没有出现问题。
中南大学c语言课程设计
中南大学c语言课程设计一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生具备基本的程序设计能力,能够运用C语言解决实际问题。
1.掌握C语言的基本语法和数据类型。
2.熟悉控制结构和函数的定义与调用。
3.理解指针的概念和应用。
4.掌握数组、字符串和动态内存管理。
5.了解常用库函数和预处理指令。
6.能够使用C语言编写简单的程序,解决实际问题。
7.具备基本的调试和排错能力。
8.能够阅读和理解C语言的程序代码。
9.掌握基本的编程规范和技巧。
情感态度价值观目标:1.培养学生的编程兴趣,提高学习积极性。
2.培养学生勇于探索、解决问题的精神。
3.增强学生的团队协作能力和交流沟通能力。
二、教学内容教学内容主要包括C语言的基本语法、数据结构、算法和编程思想。
具体安排如下:1.C语言概述:介绍C语言的发展历史、特点和应用领域。
2.基本语法:数据类型、变量、运算符、表达式、语句等。
3.控制结构:顺序结构、分支结构、循环结构。
4.函数:函数的定义与声明、调用、参数传递、返回值等。
5.数组和字符串:一维、多维数组、字符串的基本操作。
6.指针:指针的概念、声明、运算、指针与数组、指针与函数等。
7.动态内存管理:内存分配与释放、动态数组、链表等。
8.预处理指令:宏定义、文件包含、条件编译等。
9.常用库函数:数学函数、输入输出函数、字符串处理函数等。
10.编程实践:综合实例分析与编程,解决实际问题。
三、教学方法本课程采用多种教学方法相结合,包括讲授法、案例分析法、实验法等。
1.讲授法:通过讲解C语言的基本概念、语法和编程技巧,使学生掌握知识要点。
2.案例分析法:分析典型程序案例,让学生了解实际应用,提高编程能力。
3.实验法:上机实验,让学生动手编写代码,培养实际操作能力。
4.讨论法:学生进行小组讨论,分享学习心得,提高团队协作能力。
四、教学资源1.教材:《C程序设计语言》(K&R)、《C Primer Plus》等。
C语言实验六实验报告——指针
一、实验项目名称指针二、实验目的1.掌握指针的基本概念和基本用法。
包括:变量的地址和变量的值,指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计。
三、实验内容有关指针的程序设计1.编程实现:任意输入的10个数,求其平均值。
要求:(1)10个数采用scanf语句读入。
(2)利用指针实现对这10个数的访问。
(3)要求平均值的精度为小数后面2位。
2.编程实现:将一个任意整数插入到一个已排序的整数数组中,插入后数组中的数仍然保持有序。
要求:(1)整数数组由初始化方式输入。
任意整数由scanf函数输入;(2)实现过程采用指针处理;(3)输出原始数组数据以及插入数据后的数组数据并加以相应说明。
3.编写函数newcopy(char *new,char *old),它的功能是删除old所指向的字符串中的小写字母,并将所得到的新串存入new中。
要求:(1)在主函数中以初始化方式输入一个字符串;(2)调用newcopy()函数;(3)在主函数中输出处理后的结果。
4.编程实现:输入三个整数,按由大到小的顺序输出。
要求:(1)通过scanf函数输入三个数据并存入三个变量中;(2)利用指针实现从大到小输出;(3)修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出;(4)修改程序,将三个字符型数据改为字符串数据,输入三个字符串,按从小到大顺序输出;(5)体会指针对不同数据处理的特点。
四、实验步骤及结果一、#include <>void main(){int a[10],n,sum=0;float aver;/* 定义平均数为浮点型*/int *p=a;/*初始化*/printf("Please input 10 numbers:\n");for (n=0;n<10;++n)scanf("%d",&a[n]);/*输入十个数*/for (n=0;n<10;++n)sum=sum+*(p+n);/*使用指针访问数据*/aver=(float)sum/n;printf("Average is %.2f",aver);/*精确到小数点后两位*/}二、#include <>void arr(int *a,int n);/*定义排序函数*/void insert(int *a,int num);/*插入并排序函数*/int n=10;/*定义数据个数,可修改*/void main(){int *a,num,j,k,b[10];printf("请输入个数据:\n");for (j=0;j<n;++j)scanf("%d",&b[j]);/*输入原始数据*/a=&b[0];/*初始化*/arr(a,n);/*调用排序函数*/printf("排序好的数据为:\n");for (j=0;j<n;++j)printf("%d ",*(a+j));/*输出排序好的原始数据*/ printf("\n请输入要插入的数:");scanf("%d",&num);printf("插入%d后的数据为:\n",num);insert(a,num);/*调用插入并排序函数*/}void arr(int *a,int n)/*排序函数*/{int k,j,h;for (k=0;k<10;++k)for (j=0;j<n-k-1;++j)if (*(a+1+j)<*(a+j)){h=*(a+1+j);*(a+1+j)=*(a+j);*(a+j)=h;}}void insert(int *a,int num){void arr(int *a,int n);int j,k;*(a+n)=num;/*将插入的数排在数组最后一位*/arr(a,n+1);/*将新数组重新排序*/for (j=0;j<(n+1);++j)if (*(a+j)==num){k=j;break;}/*找到插入的数在数组中的位置*/for (j=0;j<(n+1);++j)printf("%d ",*(a+j));printf("\n插入的数据排在数组的第%d位",k+1);}三、#include <>void newcopy(char *new1,char *old);void main(){char *new1,*old,a[10];/*new是不能当做变量,所以用new1*/old=a;new1=a;/*字符串的初始化*/printf("请输入字符串:\n");scanf("%s",a);newcopy(new1,old);/*调用函数*/printf("新的字符串为:\n");printf("%s",new1);}void newcopy(char *new1,char *old){int n,j=0;for (;* old!='\0';++old)if ((* old)>'z' || (* old)<'a'){* (new1+j)=* old;++j;}/*排除原字符串中的小写字母,将其他字符存入新字符串*/ *(new1+j)='\0';/*结束新字符串,否则新字符串的输出会故障*/}四、#include <>void main(){void exchange(int *q1,int *q2,int*q3);int a,b,c,*q1,*q2,*q3;printf("请输入个数:\n");scanf("%d,%d,%d",&a,&b,&c);q1=&a;q2=&b;q3=&c;/*将三个数的地址存入q1q2q3中*/ exchange(q1,q2,q3);/*调用排序函数*/printf("3个数从大到小排列为:\n%d,%d,%d",a,b,c); }void exchange(int *q1,int *q2,int *q3){void swap(int *q1,int *q2);/*调用交换函数*/if (*q1<*q2)swap(q1,q2);/*若*q1小于*q2,交换地址位置*/if (*q1<*q3)swap(q1,q3);if (*q2<*q3)swap(q2,q3);}void swap(int *q1,int *q2)/*交换函数*/{int n;n=*q1;*q1=*q2;*q2=n;}修改程序,将三个整型数据改为字符型数据,输入三个字符,按从大到小数顺序输出:只需将程序中的所有int改为char,将%d改为%c即可。
C语言程序设计C语言程序设计02-指针与结构体_6_6
printf("Input student:number name score1 score2 score3\n");
for(p=s; p<s+N; p++)
input(p);
printf("number name score1 score2 score3 average\n");
for(p=s; p<s+N; p++)
struct student stu1; struct student *p=&stu1; stu1.num=101; (*p).num=101
(*结构体指针名).成员名
结构体变量名.成员名 结构体指针名->成员名
指向运算符 结合方向:从左向右
例 指向结构体的指针变量
void main() { struct student
printf(FMT,p->nu,p->na,p->sc[0],p->sc[1],p->sc[2],p->av);
}
void input(struct student *s)
{
scanf("%d%s%d%d%d",&s->nu,s->na,&s->sc[0],&s->sc[1],&s->sc[2]);
(*p).num,p->name,stu_1.sex,p->score);}
指向结构体数组元素的指针
指针变量可以指向结构体数组中的元素 改变指针变量的值就可以通过它来访问结构体数组中的各元素
struct example { int n, m; }; struct example a[10], *p=a; a[0].m=0; a[0].n=0; p++; p->n=1; p->m=1; p=p+2; p->n=a[0].n+1; p->m= a[0].m+1;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七指针一、目的要求1.掌握指针的定义和使用指针变量;2.学会使用字符串的指针和指向数组的指针变量;3.学会使用指向函数的指针变量;4.按实验内容要求完成全程程序设计后才允许上机。
二、实验内容与步骤设计一个函数,它有三个形参(1)被查找的字符串str;(2)待查找的字符xCh;(3)在字符串str中xCh出现的位置i=0,1,…它的返回值是在str中xCh 出现的次数(若str中无xCh,则返回值=0)三、上机要求1、键入待查的字符xCh;2、键入被查的字符串str;3、调用该函数;4、打印它的返回值和出现的位置;5、允许重复执行,每次以清屏开始(用循环语句控制重复执行)。
四、提示xCh在str出现位置应设计为一整型指针,以便记下0~N个位置(整数)。
#include<stdio.h>void main(){char temp;int run(),j;int (*prun)();temp='Y';while(temp!='N'||temp!='n'){if(temp=='Y'||temp=='y'){prun=run;j=(*prun)();if (j==0){printf("Can Not Find The xCh! j=%d",j);}else{printf("\nj=%d",j);}printf("\nParden>Y/N:");fflush(stdin);temp=getch();}if(temp=='N'||temp=='n')break;if(temp!='Y'&&temp!='y'){printf("Wrong!Y ou can only put Y(N) or y(n)\nPlease put again(Y/N):");fflush(stdin);temp=getch();}}}int run (char xCh,char str[100],int i){int j;char *p;clrscr();printf("xCh=");xCh=getch();printf("%c\nstr=",xCh);gets(str);p=&str[0];i=0;j=0;while(*p){if (*p==xCh){j++;printf("xCh :%d\t",i);}p=p+1;i++;}return j;}Mian()版:#include<stdio.h>void main(){int i,j;char xCh,str[100],*p,temp;temp='Y';/*给temp赋初值Y,防止第一个while循环无法运行*/while(temp!='N'||temp!='n')/*如果temp不等于n或N时,进行循环*/{if(temp=='Y'||temp=='y')/*当temp为y或Y时,进行下列循环,用于进行题目要求的操作*/{clrscr();/*清屏*/printf("xCh=");/*在屏幕输出提示xCh=*/xCh=getch();/*从屏幕读取一个字符赋给xCh(getch()和getchar()的区别:前者只要输入一个字符就结束输入过程,后者需要按回车或空格后才结束输入过程)*/printf("%c\nstr=",xCh);/*在屏幕xCh=后面输出刚才输入的xCh的值,并提示用户输入str(因为我们用getch(),输入完字符后会自动结束xCh的输入进入下一指令的执行(在本题中,下一指令是:printf("%c\nstr=",xCh);),而不在屏幕输出刚才输入的字符)【不理解的话把该句改成{printf("\nstr=");}看看输出结果就知道了】*/gets(str);/*输入str*/p=&str[0];/*将指针地址指向str这个字符串的首字符位置*/i=0;j=0;while(*p)/*当p所指向的字符不为空字符时,进行判断循环*/{if (*p==xCh)/*当p所指向的字符为所需寻找的xCh时,进行以下操作*/{i++;/*i自加1,用于累计str中xCh的数目*/printf("xCh :%d\t",j);/*输出xCh在str中出现的位置*/}p=p+1;/*指针地址移向str的下个字符*/j++;/*j用于记录此时p的位置,在str中第一个字符时=0,第二个时=1,以此类推*/}if (i==0)/*当str中没有xCh这个字符时,i=0*/{printf("Can Not Find The xCh! i=%d",i);/*在屏幕中提示无法找到str中的xCh,并输出i=0*/}else{printf("\ni=%d",i);/*\n为换行*/}printf("\nParden>Y/N:");fflush(stdin);/*清空计算机缓存*/temp=getch();/*从屏幕中读取一个字符赋给temp*/}if(temp=='N'||temp=='n')/*当temp为N或n时*/break;/*跳出循环*/if(temp!='Y'&&temp!='y')/*当输入的temp不为Y、y、N、n时*/{printf("Wrong!Y ou can only put Y(N) or y(n)\nPlease put again(Y/N):"); fflush(stdin);temp=getch();}}}/*fflush(stdin)*/实验八结构体与共用体一、目的要求1、掌握结构体类型变量与数组的定义和使用;2、学会使用指针变量和结构体指针数组;3、按实验内容要求完成全程程序设计后才允许上机。
二、实验内容与步骤1.设计一个结构struct student {long no; /*学号*/char name[10]; /*姓名*/char sex; /*性别*/int age; /*年龄*/float score; /*平均成绩*/}2.完成下列任务:(1)输入实际学生人数n (2<n<4);(2)输入每个学生的信息,组成结构数组,并输出;(3)统计男、女生人数并输出;(4)计算全班平均成绩并输出;(5)将低于全班平均成绩的学生信息按行输出三、上机要求1.可划分为若干个函数,或写成一个main( );2.要求输出格式有提示及相应数据。
#include<stdio.h>struct student{long no; /*学号*/char name[10]; /*姓名*/char sex; /*性别(gender)*/int age; /*年龄*/float score; /*平均成绩*/}s[3];void main(){int i,n,t,m,na;float av,sum;float temp;clrscr();m=0;sum=0;printf("The number of the studens:");scanf("%d",&n);printf("\n");for(i=0;i<n;i++){printf("\nNo.");scanf("%ld",&s[i].no);printf("\nName:");na=0;while(na==0){scanf("%s",&s[i].name);if(strlen(s[i].name)>10)printf("Wrong!Y ou can only put 10 characters!\nName:");elsena=1;}printf("\nGender:(W/M)");t=0;while(t==0){scanf("%s",&s[i].sex);if(s[i].sex!='W'&&s[i].sex!='w'&&s[i].sex!='m'&&s[i].sex!='M')printf("Wrong!\nGender:");elset=1;}if(s[i].sex=='m'||s[i].sex=='M')m++;printf("\nAge:");scanf("%d",&s[i].age);printf("\nScore:");scanf("%f",&temp);s[i].score=temp;}for(i=0;i<n;i++){sum=sum+s[i].score;printf("\nNo.%ld\nName:%s\nGender:%c\nAge:%d\nScore:%.2f",s[i].no,s[i].name,s[i].sex,s[ i].age,s[i].score);}av=sum/n;printf("\nThe number of girl(s):%d\nThe number of boy(s):%d\n",n-m,m);printf("\nThe average of the score is:%.2f",av);for(i=0;i<n;i++){if (s[i].score<=av)printf("\nNo.%ld; Name:%s; Gender:%c; Age:%d; Score:%.2f",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].score);}}。