C语言课程设计
学生信息管理系统
目录
第一章设计要求………………………………………………第二章算法分析
1.理论依据…………………………………………………
2.主要实现方法……………………………………………
2.1整体流程图………………………………………
2.2函数功能和函数之间的调用关系………………第三章代码(源代码)………………………………………第四章分析说明………………………………………………第五章总结……………………………………………………
第一章、设计要求
1、利用所学的知识、理论和实际结合,利用资源,采用模块化的结构,使用模仿修改自主设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力;
2、通过C语言各个函数功能来实现对学生信息的管理,学生信息包括学生姓名,学号,各科成绩;管理方式包括对学生信息的录入,保存,排序,查找、修改、删除等功能。
第二章、算法分析
1、程序理论依据
通过C语言的程序设计基础的掌握,对学生成绩管理系统进行编写程序。首先,通过链表这一数据结构来对学生的信息进行录入以及操作,在其过程中,通过各个功能语句以及选择结构,循环结构等方式的结合来达到所要实现的程序功能。最后通过对C语言中对文件的操作,对已有学生成绩的读取和新建学生成绩的录入保存。
2、主要实现方法
2.1整体流程图
2.2、函数功能和函数之间的调用关系
2.2.1、函数功能:
void Menu_1(); //主菜单
void Menu_2(); //二级菜单
void swap(struct student * phead,struct student * pback); // 链表节点互换
void Save(struct student * head); // 写入磁盘
void Search(struct student * head); // 查找学生信息
void Read(struct student * head); // 显示学生信息
void Sort(struct student * head); // 链表节点排序
struct student * Create(); // 学生信息手动录入
struct student * Readpoint(); // 磁盘文件写入内存
struct student * Modify(struct student * head); // 链表结构体成员修改
struct student * Add(struct student * head); // 链表节点插入
struct student * Delete(struct student * head); // 链表节点删除
2.2.2、函数之间的调用关系:
通过switch语句进行指令选择:
case 1:学生信息录入
调用函数Create( )、Save( )、Menu_1( )、Menu_2( )
case 2: 学生信息浏览
调用函数Readpoint( )、Sort( )、Read( )、Save( )、Menu_1( )、Menu_2( )
case 3: 学生信息查找
调用函数Search( )、Readpoint( )、Menu_1( )、Menu_2( )
case 4: 学生信息修改
调用函数Modify( )、Readpoint( )、Save( )、Menu_1( )、Menu_2( )
case 5: 学生信息增加
调用函数Add( )、 Readpoint( )、Save( )、Menu_1( )、Menu_2( )
case 6: 学生信息删除
调用函数Delete( ) 、Readpoint( )Save( )、Menu_1( )、Menu_2( )
case 0: 返回主菜单
调用函数Menu_1( )
第三章、代码(源代码)
/*
学生信息管理系统
*/
#include
#include
#include
struct student //定义结构体
{
int num;
char name[24];
char sex[5];
int Chinese;
int Math;
int English;
struct student * next;
};
void Menu_1(); //主菜单
void Menu_2(); //二级菜单
void swap(struct student * phead,struct student * pback); // 链表节点互换
void Save(struct student * head); // 写入磁盘
void Search(struct student * head); // 查找学生信息
void Read(struct student * head); // 显示学生信息
void Sort(struct student * head); // 链表节点排序
struct student * Readpoint(); // 磁盘文件写入内存
struct student * Create(); //学生信息手动录入struct student * Modify(struct student * head); // 链表结构体成员修改
struct student * Add(struct student * head); // 链表节点插入
struct student * Delete(struct student * head); // 链表节点删除
int main(void)
{
Menu_1();
return 0;
}
void Menu_1()
{
int num;
printf("\t\t\t\t 学生信息管理系统\t\t\t\t\n");
printf("\t\t\t 1: 进入学生信息管理\n"); //主菜单
printf("\t\t\t 0: 退出学生信息管理\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{ case 1:Menu_2();
break;
default:printf("-----------------------------------------您已退出
学生信息管理系统-----------------------------------------------\n");
break;
}
}
/*------------------------------------------------------------------
------------------------------------------------------------------*/
void Menu_2()
{
struct student * head;
int num;
printf("\t\t\t 欢迎进入\n");
printf("------------------------------------------------------------
-----------------------------------------------------------\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 0: 返回主菜单\n");
printf("------------------------------------------------------------
------------------------------------------------------------\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:{
head = Create();
Save(head);
printf("\n");
printf("\t\t\t 1: 返回主菜单\n"); //手动录入学生数据
printf("\t\t\t 2: 返回二级菜单\n");
printf("\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:Menu_1();
break;
case 2:Menu_2();
break;
default :
{
printf("输入无效,返回二级菜单!\n");
Menu_2();
}
break;
}
}
break;
case 2:{
head = Readpoint(); //写入链表,返回头指针
Sort(head);
printf("\t\t\t 以学号升序排列\n");
Read(head); // 链表数据写入文件
Save(head);
printf("\n");
printf("\t\t\t 1: 返回主菜单\n");
printf("\t\t\t 2: 返回二级菜单\n");
printf("\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:Menu_1();
break;
case 2:Menu_2();
break;
default :
{
printf("输入无效,返回二级菜单!\n");
Menu_2();
}
break;
}
}
break;
case 3:{
head = Readpoint();
Search(head);
//查找学生信息
printf("\n");
printf("\t\t\t 1:返回主菜单\n");
printf("\t\t\t 2:返回二级菜单\n");
printf("\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:Menu_1();
break;
case 2:Menu_2();
break;
default :
{
printf("输入无效,返回二级菜单!\n");
Menu_2();
}
break;
}
}
break;
case 4:{
head = Readpoint();
Modify(head); //修改结构体成员并保存到文件
Save(head);
printf("\n");
printf("\t\t\t 1: 返回主菜单\n");
printf("\t\t\t 2: 返回二级菜单\n");
printf("\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:Menu_1();
break;
case 2:Menu_2();
break;
default :
{
printf("输入无效,返回二级菜单!\n");
Menu_2();
}
break;
}
}
break;
case 5:{
head = Readpoint();
Add(head); //增加学生信息并保存到文件
Save(head);
printf("\n");
printf("\t\t\t 1:返回主菜单\n");
printf("\t\t\t 2:返回二级菜单\n");
printf("\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:Menu_1();
break;
case 2:Menu_2();
break;
default :
{
printf("输入无效,返回二级菜单!\n");
Menu_2();
}
break;
}
}
break;
case 6:{
head = Readpoint();
head = Delete(head);
//删除学生信息并保存到文件
Save(head);
printf("\n");
printf("\t\t\t 1:返回主菜单\n");
printf("\t\t\t 2:返回二级菜单\n");
printf("\n");
printf("请您输入指令:");
scanf("%d",&num);
switch(num)
{
case 1:Menu_1();
break;
case 2:Menu_2();
break;
default :
{
printf("输入无效,返回二级菜单!\n");
Menu_2();
}
break;
}
}
break;
case 0: Menu_1();
break;
default :{
printf("请重新输入\n");
Menu_2();
}
break;
}
}
/*------------------------------------------------------------------
--------------------------------------------------------------------
-*/
struct student * Create() //学生信息手动录入
{
struct student *head,* p,* q;
int n;
p = q = (struct student *)malloc(sizeof(struct student));
printf("请输入学生的姓名、学号、性别、语文成绩、高等数学成绩、英语
成绩:\n");
scanf("%s",q->name);
scanf("%d %s %d %d %d",&q->num,&q->sex,&q->Chinese,&q->Math,&q->E nglish);
n = 0;
head =NULL;
while (q->num != 0)
{
n = n+1;
if (n == 1)
head = q;
else
p->next = q;
p = q;
q = (struct student *)malloc(sizeof(struct student));
scanf("%s",q->name);
scanf("%d %s %d %d %d",&q->num,q->sex,&q->Chinese,&q->Math,&q->En
glish);
}
p->next = NULL;
printf("学生信息录入成功!\n");
return head;
}
/*------------------------------------------------------------------
--------------------------------------------------------------------
--*/
struct student * Readpoint() //学生信息写入内存,便于操作
{
FILE * fp1;
struct student *head,* p,* q;
int n;
if((fp1 = fopen("E:test.txt","rb")) == NULL) {
printf("open file error!\n");
exit(0);
}
p = q = (struct student *)malloc(sizeof(struct student));
fscanf(fp1,"%s %d %s %d %d %d",q->name,&q->num,q->sex,&q->Chinese
,&q->Math,&q->English);
n = 0;
head =NULL;
while( !feof(fp1))
{
n = n+1;
if (n == 1)
head = q;
else
p->next = q;
p = q;
q = (struct student *)malloc(sizeof(struct student));
fscanf(fp1,"%s %d %s %d %d %d",&q->name,&q->num,&q->sex,&q->Chine
se,&q->Math,&q->English);
}
p->next = NULL;
fclose(fp1);
return head;
}
/*------------------------------------------------------------------
--------------------------------------------------------------------
--*/
void Swap(struct student * phead, struct student * pback) //链表元素数据交换
{
struct student * temp = (struct student *)malloc(sizeof(struct
student));
strcpy(temp->name,phead->name);
temp->num = phead->num;
strcpy(temp->sex,phead->sex);
temp->Chinese = phead->Chinese;
temp->Math = phead->Math;
temp->English = phead->English;
strcpy(phead->name,pback->name);
phead->num= pback->num;
strcpy(phead->sex,pback->sex);
phead->Chinese = pback->Chinese;
phead->Math = pback->Math;
phead->English = pback->English;
strcpy(pback->name,temp->name);
pback->num = temp->num;
strcpy(pback->sex,temp->sex);
pback->Chinese = temp->Chinese;
pback->Math = temp->Math;
pback->English = temp->English;
free(temp);
}
/*----------------------------------------------------------------------------------------------------------------------------------------*/
void Sort(struct student * head) // 学号排序{
struct student * phead = (struct student *)malloc(sizeof(struct student));
struct student * pback = (struct student *)malloc(sizeof(struct student));
phead = head;
while (phead)
{
int Num = phead->num;
pback = phead->next;
while(pback)
{
if( Num > pback->num)
{
Swap(phead,pback);
Num = phead->num;
}
pback = pback->next;
}
phead = phead->next;
}
}
/*---------------------------------------------------------------------------------------------------------------------------------------*/
void Read(struct student * head) //学生信息读取
{
struct student * p;
p = head;
printf("------------------------------------------------------------------------------------------------------------------------\n");
printf("学生的姓名、学号、性别、语文成绩、高等数学成绩、英语成绩:\n");
while(p != NULL)
{
printf(" %s \t%d\t%s \t %d \t %d
\t\t %d\n",p->name,p->num,p->sex,p->Chinese,p->Math,p->English);
p = p->next;
}
printf("---------------------------------------------------------
---------------------------------------------------------------\n");
}
/*------------------------------------------------------------------
--------------------------------------------------------------------
--*/
void Save(struct student * head) //学
生信息保存到文件
{
struct student * p;
FILE * fp;
if((fp = fopen("E:test.txt","wb")) == NULL) {
printf("open file error!\n");
exit(0);
}
p = head;
while(p !=NULL)
{
fprintf(fp,"%s %d %s %d %d %d",p->name,p->num,p->sex,p->Chinese,p
->Math,p->English);
fprintf(fp,"%s","\r\n");
p = p->next;
}
fclose(fp);
}
/*------------------------------------------------------------------
--------------------------------------------------------------------
--*/
void Search(struct student * head) //
学生信息查找
{
int n;
struct student * p;
char name[24];
int num;
char sex[5];
int Chinese;
int Math;
int English;
printf("您想以何种方式进行查找:\n");
printf("1;姓名\n");
printf("2:学号\n");
printf("3:性别\n");
printf("4:语文成绩\n");
printf("5:数学成绩\n");
printf("6:英语成绩\n");
printf("0:返回二级菜单\n");
scanf("%d",&n);
switch(n)
{
case 1:{
printf("请输入姓名:"); //按姓名查找
scanf("%s",name);
p = head;
while(strcmp(name,p->name)!=0 && p->next != NULL)
p = p->next;
if(strcmp(name,p->name)==0)
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
else
printf("查无此人!\n");
}
break;
case 2:{
printf("请输入学号:"); //按学号查找
scanf("%d",&num);
p = head;
while(num != p->num && p->next != NULL)
p = p->next;
if(num == p->num)
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
else
printf("查无此人!\n");
}
break;
case 3:{
printf("请输入性别:"); //按性别查找
scanf("%s",sex);
p = head;
while(p!= NULL)
{
if(strcmp(sex,p->sex)==0)
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
p = p->next;
}
}
break;
case 4:{
printf("请输入语文成绩:"); //按语文成绩查找
scanf("%d",&Chinese);
p = head;
while(p!= NULL)
{
if(Chinese == p->Chinese)
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
p = p->next;
}
}
break;
case 5:{
printf("请输入高等数学成绩:"); //按高等数学成绩查找
scanf("%d",&Math);
p = head;
while(p!= NULL)
{
if(Math == p->Math)
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
p = p->next;
}
}
break;
case 6:{
printf("请输入英语成绩:"); //按英语成绩查找
scanf("%d",&English);
p = head;
while(p!= NULL)
{
if(English == p->English)
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
p = p->next;
}
}
break;
default:{
printf("指令错误返回二级菜单!\n");
Menu_2();
}
break;
}
}
/*----------------------------------------------------------------------------------------------------------------------------------------*/
struct student * Modify(struct student * head)
{ int n;
struct student * p;
char name[24];
int num;
printf(" 您想以何种方式进行修改:\n");
printf("1;姓名\n");
printf("2:学号\n");
printf("0:返回二级菜单\n");
scanf("%d",&n);
switch(n)
{
case 1:{
printf("请输入姓名:"); //按姓名查找后修改信息
scanf("%s",name);
p = head;
while(strcmp(name,p->name)!=0 && p->next != NULL)
p = p->next;
if(strcmp(name,p->name)==0)
{scanf("%s %d %s %d %d %d",p->name,&p->num,p->sex,&p->Chines e,&p->Math,&p->English);
printf("修改后:\n");
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
}
else
printf("查无此人!\n");
}
break;
case 2:{
printf("请输入学号:"); //按学号查找后修改信息
scanf("%d",&num);
p = head;
while(num != p->num && p->next != NULL)
p = p->next;
if(num == p->num)
{scanf("%s %d %s %d %d %d",p->name,&p->num,p->sex,&p->Chines e,&p->Math,&p->English);
printf("修改后:\n");
printf("%s %d %s %d %d %d\n",p->name,p->num,p->sex,p->Chines e,p->Math,p->English);
}
else
printf("查无此人!\n");
}
break;
default:{
printf("指令错误,返回二级菜单!\n");
Menu_2();
}
break;
}
return head;
}
struct student * Add(struct student * head)
//增加学生信息
{
struct student * p,* q; //为增加的学生分配内存
struct student * add = (struct student *)malloc(sizeof(struct student ));
scanf("%s %d %s %d %d %d",add->name,&add->num,add->sex,&add->Chin ese,&add->Math,&add->English);
q = head;
if(head == NULL)
{
head = add; //空表插入
add->next = NULL;
}
else
{ while((add->num > q->num) && (q->next != NULL)) //指向下个节
点
{
p = q;
q = q->next;
}
if(add->num <= q->num) //插到首节点
{
if (head == q)
head =add;
else
p->next = add; //插到中间节点add->next = q;
}
else
{
q->next = add; //插到尾节点
add->next = NULL;
}
}
return head;
}
struct student * Delete(struct student * head) //删除学生信
息
{ int n;
struct student * p,* q;
char name[24];
int num;
printf(" 您想以何种方式进行删除:\n");
printf("1;姓名\n");
printf("2:学号\n");
printf("0:返回二级菜单\n");
scanf("%d",&n);
switch(n)
{
case 1:{
printf("请输入姓名:"); //按姓名查找并删除scanf("%s",name);
p = head;
while(strcmp(name,p->name)!=0 && p->next != NULL)
{
q = p;
p = p->next;
}
if ( p == head) //删除首节点
{ head = p->next;
p->next = NULL;
}
else
if(strcmp(name,p->name)==0)
{
q->next = p->next; //删除中间节点
p->next = NULL;
}
else
printf("查无此人!\n");
}
break;
case 2:{
printf("请输入学号:"); //按学号查找并删除
scanf("%d",&num);
p = head;
while(num != p->num && p->next != NULL)
{
q = p;
p = p->next;
}
if(p == head)
{head = p->next;
p->next = NULL;
}
成都工业学院·计算机工程学院 《程序设计基础》实验报告 1.实验目的 (1)熟悉C语言运行环境,了解和使用Visual6.0++集成开发环境(2)熟悉Visual6.0++环境的功能键和常用的功能菜单命令 (3)掌握C语言程序的书写格式和C语言程序的结构 (4)掌握C语言上机步骤,以及编辑、编译和运行一个C语言程序的方法 (5)熟悉Visual6.0++环境下的程序调试方法 2.实验内容 (1)按照实验步骤编辑、编译、运行第一个”Hello World”程序(2)利用实验指导中的第二个程序熟悉调试工具,在已知x,y值的情况下,计算出x和y的和、差、积、商,并显示出来(3)编写一个程序,输入a、b、c三个值,输出它们的和与平均值c 3.源程序 (1)#include
(3)#include
C语言实验报告《指针》 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验五指针 一、实验目的 1、掌握指针的概念、会定义和使用指针变量 2、掌握指向数组的指针变量 3、掌握字符串指针的使用 二、实验内容2、写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。(习题10.6)#include #include long fun(char *p) { 填写程序 } void main() { char s[6]; long n; printf( enter a string:n gets(s); n=fun(s); printf( %ldn ,n); }
一、三、实验步骤与过程 四、程序调试记录 C语言实验报告《综合实验》 学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验六综合实验 一、实验目的 1、掌握C语言中的变量、数组、函数、指针、结构体等主要知识点。 2、掌握C程序的结构化程序设计方法,能使用C语言开发简单的应用程序。 3、掌握C程序的运行、调试方法等。 二、实验内容 编写一个学生信息排序程序。要求:
1、程序运行时可输入n个学生的信息和成绩(n预先定义)。 2、学生信息包括:学号、英文姓名、年龄;学生成绩包括:语文、数学、计算机。 3、给出一个排序选择列表,能够按照上述所列信息(学号、姓名、年龄、语文、数学、计算机)中的至少一个字段进行排序,并显示其结果。 1、使用函数方法定义各个模块。 三、实验步骤与过程 物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板 四、程序调试记录
篇一:《C语言上机实验心得》 C语言上机实验心得 在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好C语言,这对我们以后的发展是十分重要的。 说到这,上机实验当然就是一个必不可少的环节了,C语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。 通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了C语言那就大错特错了。 我主要存在以下的这些缺点 1、学习耐心与细心不足,如scanf(“%d”,&n);中的“&”有时候会忘了。而在最后
输出时又错写成printf(“%d”,&n);从而错误得输出了地址而不是我原来想要的答案。 2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解 题了。 3、 4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够 深刻。 5、 6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在
一点问题。 为了能更好地学好C语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。 实验中我深刻意识到完成程序的编写,决不意味着万事大吉。认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。因为开发环境所提供的编译系统无法发现程序逻辑错误,或者是你原来所设计时的理论错误,这就只能靠自己的上机经验来分析判断错误的所在了。所以程序的调试是一个技巧性很强的工作,它可能比编一个程序耗时更 多。由此可看出上机实践的重要性。 通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。编程的时候有因为顺利编出程序而开心过、有因为做得比人家慢而郁闷过、有因为不知从何入手而无奈过、有因为不知错出在哪而彷徨过但随着练习的增多,我对C语言比以前熟了很多,不再只是纸上谈兵,我都有能力独立做出一些程序,可能对于一些“高手来说这不算什么,或者他们早就会了,但我依然觉得很开心,因为我跟我自己比是进步了。
C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include
int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include
d=170; x=(a+b)/(b-c)*(c-d); printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b 时,将0赋给c。(提示:用条件运算符) 答案: #include
实验6 指针1.实验目的和要求 (1)掌握指针的概念、指针变量定义格式和引用。 (2)掌握指针的运算方法。 (3)掌握数组的指针和指向数组的指针变量。 (4)掌握指针与函数的关系。 (5)能正确使用字符串的指针和指向字符串的指针变量。(6)了解指向函数的指针。 (7)了解指向指针变量的指针。 2.实验内容:实验指导书中的实验九。 3.实验步骤 9.1 调试程序,找出程序的错误。 改正后的程序代码(贴图): 运行结果(帖图): 9.2 运行程序:
运行结果:; 9.3 修改程序错误,并运行。 改正后程序代码: 运行结果(帖图): 9.4. 程序填空:
运行结果(请帖图):9.5. 程序填空:
程序填空: #include
9.6 编程(选作) #include 长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include <> main() { printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include<> main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 3、编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3 a/b的余数=10 a/c的余数=15 4. 编译、连接无错,运行后屏幕上显示以下结果: c =-10 实验二顺序结构程序设计 四、程序清单 1.键盘输入与屏幕输出练习 问题1 D 。 问题2 改printf("%c,%c,%d\n",a,b,c);这条语句 C语言程序设计实验报告 1实验目的 (1)掌握指针的概念,会定义和使用指针变量; (2)能正确使用变量的指针和指向变量的指针变量; (3)能正确使用数组的指针和指向数组的指针变量; (4)能正确使用字符串的指针和指向字符串的指针变量; 2实验内容 将一个任意整数插入到已排序的整形数组中,插入后,数组中的数仍然保持有序;要求: (1)整形数组直接由赋值的方式初始化,要插入的整数有scanf()函数数入;(2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后的数据,并加以说明; 3算法描述流程图 4源程序 #include for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m和a[i+1]=m中i++和i+1不同,a[i++]=m是先将的值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要的麻烦; 8实验心得 通过这次指针实验掌握了指针的概念,会定义和使用指针变量,并且能利用指针来简单化一些问题,给以后的编程带来了很大的便利; 学生实验报告册 (理工类) 课程名称:C语言程序设计实验专业班级: 16数字媒体技术学生学号: 1613031008 学生姓名:李翔 所属院部:计算机工程学院指导教师:吕艳林 20 16 ——20 17 学年第一学期 金陵科技学院教务处制 实验报告书写要求 实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。 实验报告书写说明 实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。 实验项目名称:初级程序设计实验学时: 6 实验地点: A107 实验日期: 2016年10月13,20,27 实验成绩: 批改教师:批改时间: 实验1 初级程序设计 一、实验目的和要求 (1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试; (2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用; (4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用; (6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。 二、实验仪器和设备 奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。 三、实验内容与过程 1、程序调试 (1)#include 通知 各位老师: 本学期非计算机专业《计算机程序设计基础(C语言)》课实验报告要求: 1.统一用《武汉科技大学实验报告》本写。本学期交三次实验报告。 ①循环结构程序设计。 ②数组。 ③函数。 要求学生在完成以下实验报告,参考《C语言程序设计课程实验与题解》中的要求认真完成。 实验1 循环结构程序设计 一、实验目的 1.熟悉用while语句,do-while语句和for语句实现循环的方法。 2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。 3.熟悉break语句和continue语句用法的不同之处。 二、实验内容 【例】以下程序,输出下三角形状的乘法九九表。 #include 2010C语言实验报告参考答案 长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include f r 《C 语言程序设计》实验报告 专业: 班级: 学号: 学生姓名: 实验日期: 成绩: 指导老师: 实验单元一 程序基本结构设计 一、实验题目 实验一 熟悉VC++环境 二、实验目的 1. 熟悉C 程序编辑环境,掌握主要菜单项的作用。 2. 熟悉编写一个C 程序的上机过程(编辑、编译、链接和运行)。 3. 熟悉C 程序的基本输入输出语句 三、实验内容 1. 书本第一章的例一程序。 2. 由键盘输入两个整数,求得它们的和并输出至屏幕。 四、实验环境 1.硬件环境:当前所有电脑硬件环境均支持。 2.软件环境:Visual C++ 6.0 五、实验代码及结果(程序运行结果请以截屏图给出) 1.源程序代码: #include "stdio.h"int main(){int a,b,sum;a=2;b=3; sum=a+b; printf("007zhang\nsum=%d\n",sum);return 0;} 运行结果为: 2.源程序代码: 运行结果为: 六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进行简单总结) f r 《C 语言程序设计》实验报告 专业: 班级: 学号: 学生姓名: 实验日期: 成绩: 指导老师: 实验单元一 程序基本结构设计 一、实验题目 实验二 顺序结构程序设计 二、实验目的 (1)掌握C 语言数据类型以及变量的声明。 (2)掌握C 语言的赋值运算符、赋值表达式、赋值语句。(3)掌握C 语言的整型和字符型的混合运算。(4)掌握C 语言的输入、输出函数的使用格式。 三、实验内容 1.有人用温度计测量出华氏温度,现输入华氏温度f ,请编写程序把它转换为摄氏温度c 。已知华氏温度和摄氏温度有如下关系:c=5/9(f-32)。 2.输入长方形的长和宽,编程求该长方形的周长和面积。(要求周长和面积保留两位小数) 3. 将字符串“China ”译成密码,译码规则是:用字母表顺序中原来字母后面的第5个字母替代原来的字母。请编写程序实现译码并输出。 四、实验环境 1.硬件环境:当前所有电脑硬件环境均支持。 2. 软件环境:Visual C++ 6.0 五、实验代码及结果(程序运行结果请以截屏图给出) 1.源程序代码: 运行结果为: 2.源程序代码: 运行结果为: 3.源程序代码:运行结果为: 六、实验心得(请对每个实验题目编程及调试运行中遇到的问题及解决方案进 嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇 目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................ 实验1简单判定性问题求解 一、实验学时 完成本实验需4学时。 二、实验目的 1、阅读程序题 (1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法; (2)掌握不同的类型数据之间赋值的规律; (3)掌握数据在内存中的存储方式; (4)学会输入、输出函数的基本格式和使用方法; (5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。 2、编程题 (1)如何运用if-else判定性结构进行程序设计; (2)如何运用switch判定性结构进行程序设计。 3、调试题 (1)熟悉C程序的编辑、编译、连接和运行的过程。 三、实验指导 为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。 1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。 2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。要注意简单判定性问题的结构选择。 3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。 四、实验内容 1、阅读程序题 (1)main( ) { /*定义字符型变量*/ char c1,c2; /*向字符变量赋以整数*/ c1=97; c2=98; printf("%c %c\n",c1,c2); /*以字符形式输出*/ printf("%d %d\n",c1,c2); /*以整数形式输出*/ } 思考:可否改成int c1,c2;输出结果是?相同 (2)main() { int a=7,b=5; printf("%d\n",b=b/a); } 思考:若将printf语句中%d变为%f,可否输出分式的值?可以(3)main() { int a=9; a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/ printf("%d\n",a); } 思考:赋值表达式a+=a-=a+a的求解步骤? 第一步:a=a-(a+a)=-9 第二步a=a+a=18 (4)main() { int k=-1; printf("%d,%u\n",k,k); C语言程序设计实验报告 1实验目得 (1)掌握指针得概念,会定义与使用指针变量; (2)能正确使用变量得指针与指向变量得指针变量; (3)能正确使用数组得指针与指向数组得指针变量; (4)能正确使用字符串得指针与指向字符串得指针变量; 2实验内容 将一个任意整数插入到已排序得整形数组中,插入后,数组中得数仍然保持有序; 要求: (1)整形数组直接由赋值得方式初始化,要插入得整数有scanf()函数数入; (2)算法实现过程采用指针进行处理; (3)输入原始数据以及插入整数后得数据,并加以说明; 3算法描述流程图 4源程序 #include for(i=n-1;a[i]>=w;i--) { a[i+1]=a[i]; } a[i+1]=m; 这一步没有注意a[i++]=m与a[i+1]=m中i++与i+1不同,a[i++]=m就是先将得值赋给a[i],然后在执行自增;而在实验过程中忽略了这一点,造成了不必要得麻烦; 8实验心得 通过这次指针实验掌握了指针得概念,会定义与使用指针变量,并且能利用指针来简单化一些问题,给以后得编程带来了很大得便利; 《C语言程序设计》 实 验 手 册 《C语言程序设计》实验课程简介 课程名称:C语言程序设计实验 课程性质:专业必修课 课程属性:专业必修课 学时学分:学时32 学分1 开课实验室:软件实验室 面向专业:网络工程、软件工程、计算机科学与技术 一、课程的任务和基本要求 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C 语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验项目 【实验一】最简单的C程序---顺序程序设计 【实验二】逻辑运算和判断选取控制 【实验三】循环结构程序设计(一) 【实验四】循环结构程序设计(二) 【实验五】函数 【实验六】数组(一) 【实验七】数组(二) 【实验八】指针 【实验九】结构体、共用体和文件 【实验十】C程序综合性实验 三、有关说明 1、与其它课程和教学环节的联系: 先修课程:计算机文化 后续课程:面向对象程序设计、Java程序设计、数据结构、软件工程 2、教材和主要参考书目: (1)教材: 《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目: 《C语言程序设计》谭浩强主编,清华大学出版社,2003年。 三、实验内容 实验一最简单的C程序---顺序程序设计 (验证性实验 2学时) (一)、实验目的 1.熟悉win-tc程序运行环境 2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3.掌握C语言中使用最多的一种语句——赋值语句 4.掌握数据的输入输出方法,能正确使用各种格式控制符 (二)、实验内容 1.写出下列程序的运行结果 (1)#include C语言程序设计实验报告优秀范文 实验名称计算出1000以内10个最大素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内最大的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图 main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数*/ { int t,i; t=sqrt(n); for(i=2;i if(n%i==0)/* 如果不是素数,返回0 */ return 0; return n;/* 如果是素数,返回该数*/ } void main { int i,j=0,n,m=0,a[1000],x; /*clrscr;*/ printf("please input a number form 1 to 1000:"); scanf("%d",&x); if(x==2)/* x=2时的处理*/ printf("%dn",x); else if(x printf("error!n"); 实验5三种基本结构的综合应用 4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。试求[100,999]之内的所有逆向超级素数的个数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=100;i<=999;i++) {for(j=2;j=i) /*三位数是素数时*/ {k=i%100; /*去掉百位数字*/ if(k>=10) /*十位数字不是0时*/ {for(m=2;m =p)n++;}}}} printf("%d\n",n);} Key:57 5.求[2,400]中相差为10的相邻素数对的对数。 #include "stdio.h" main() {int i,j,k,m,p,q,n=0; for(i=2;i<=400;i++) {for(j=2;j=i) /*i是素数时*/ {for(k=i+1;k=k)break;} /*k是素数时终止if语句的外层循环*/ if(k>=i+10) /*[i+1,i+9]不是素数时*/ {for(q=2;q 广州商学院 实验报告册(软件) 信息技术与工程学院院/系商业软件工程专业一年级 2 班 课程名称:C语言程序设计 姓名:蔡东燕 学号:201506110190 广州商学院 实验报告(第 1 次) 实验名称:选择控制语句的练习实验时间: 一.实验目的 熟悉if语句、if-else语句、switch-case语句、关系运算符和逻辑运算符,以及不同类型数据的输入输出方法。 二.实验内容 身高预测实验题 每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素包括遗传、饮食习惯与锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。 设faHeight为其父身高,moHeight为其母身高,身高预测公式为:男性成人时身高=(faHeight + moHeight)×0.54cm 女性成人时身高=(faHeight×0.923 + moHeight)/2cm 此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。 编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight 为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。 三.源程序及主要算法说明 三. 主要问题和解决方案 问题:关系运算符时常弄乱,等于和赋值总是分不清;输入回车时程序会出错或停止运行 解决方案:多记记关系运算符,弄清getchar()函数功能,利用getchar()函数去接收回车可防止错误 四.测试数据及结果 五.心得体会与自我评价 刚开始接触觉得好难,写个编程要好长时间而且还出错,一开始觉得快要疯了。后面多去写多看书多请教别人,慢慢会了,觉得挺有趣的。 现在的我是个初学者,很多都不懂,水平低下,但我觉得认真学,通过努力一定可以学好的。 郑州轻工业学院 实践报告 实现内容: OJ1123最佳校友(数组)、OJ1158又是升序(指针)、OJ1180成绩统计(结构)、OJ1203做幻方(文件) 学号:541507020140 学生姓名:王红旭 专业班级:电子信息科学与技术15-01 所在院系:计算机与通信工程学院 指导教师:王秉政 成绩: 实践名称:上机实验课 来源课程:[0404230]C程序设计进阶 实践时间:2016.03-05 实践地点:科学校区实验楼301 报告撰写时间:2016.05.10 1123最佳校友(数组) 1实践目的 为了方便数组的管理和使用,提高程序设计的效率。 2 实践要求 熟练使用数组解决问题。 3 使用的技术、知识点、工具等 C语言程序设计书本教材,数组等。 4 需求分析和功能描述 要求;北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。 5 系统总体设计 #include 实验名称:指针及其应用日期:得分:指导老师: 专业:班次:姓名:学号: 实验目的 (1)掌握变量的指针及其基本用法。 (2)掌握一维数组的指针及其基本用法。 (3)掌握指针变量作为函数的参数时,参数的传递过程及其用法。一.实验内容( 1)运行以下程序,并从中了解变量的指针和指针变量的概念。 (2)运行以下程序,观察 &a[0] 、&a[i] 和 p 的变化,然后回答以下问题: 1.程序的功能是什么? 2.在开始进入循环体之前, p 指向谁? 3.循环每增加一次, p 的值(地址)增加多少?它指向谁? 4.退出循环后, p 指向谁? 5.你是否初步掌握了通过指针变量引用数组元素的方法?( 3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。 ( 4)编写函数,将 n 个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成: ①输入 10 个数; ②调用此函数进行重排; ③输出重排后的结果。 二.分析与讨论 ( 1)指针的定义方法,指针和变量的关系。 定义方法: 数据类型 * 指针变量名 ; 如定义一个指向 int 型变量的指针—— int *p; 则我们可以继续写如下代码—— int a = 4; p = &a; printf("%d", *p); 在这里,我们定义了一个变量a,我们把它理解为内存空间连续的 4个字节(int 型占用 4字节),则这 4个字节的空间保存着一个数 4。&是取地址符号,即把变量a的地址(即这4个字节的首地址)赋给指针p (记住指针p的类型和变量a的类型要保持一致,否则的话,要进行类型转换)。这样子,指针p就保 存着变量a的地址。我们如果把指针p当做内存空间里面另外一个连续的 4个字节,那么这4个字节保存的数就是变量a的地址。printf("%d",*p)和 printf("%d",a)的结果是一样的。这里的*是取变量符号(与&刚好作用相反,通过变量的地址找到变量),与定义时 int *p 的*号作用不同(定义时的 *表示该变量是个指针变量,而非是取它指向的变量)。 ( 2)数组和指针的关系。 指针与数组是 C 语言中很重要的两个概念,它们之间有着密切的关系,利用这种C语言实验报告参考答案
C语言指针实验报告
:C语言实验报告册-2016.3资料
2016年C语言实验报告
2010C语言实验报告参考答案
C语言实验报告合集
游戏C语言实验报告
哈工大(威海)c语言实验报告册答案
C语言指针实验报告
C语言实验报告参考答案
C语言程序设计实验报告优秀范文
C语言实验报告参考源代码
C语言软件实验报告册
C语言实验报告
C语言实验报告范文