C语言实训上机任务指导书.docx

上传人:b****8 文档编号:8985517 上传时间:2023-02-02 格式:DOCX 页数:59 大小:248.36KB
下载 相关 举报
C语言实训上机任务指导书.docx_第1页
第1页 / 共59页
C语言实训上机任务指导书.docx_第2页
第2页 / 共59页
C语言实训上机任务指导书.docx_第3页
第3页 / 共59页
C语言实训上机任务指导书.docx_第4页
第4页 / 共59页
C语言实训上机任务指导书.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

C语言实训上机任务指导书.docx

《C语言实训上机任务指导书.docx》由会员分享,可在线阅读,更多相关《C语言实训上机任务指导书.docx(59页珍藏版)》请在冰豆网上搜索。

C语言实训上机任务指导书.docx

C语言实训上机任务指导书

《C语言程序设计》实训指导书

 

实训项目一:

儿童100以内的加减乘除法游戏训练1

一、目的和要求1

二、试验性质1

三、实验内容1

四、实验步骤1

五、分析与讨论2

实训项目二:

数制转换系统7

一、目的和要求7

二、试验性质7

三、实验内容7

四、实验步骤7

五、分析与讨论8

实训项目三:

倒计时10

一、目的和要求10

二、试验性质10

三、实验内容11

四、实验步骤11

五、分析与讨论11

六、程序清单12

实训项目四:

学生成绩管理系统13

一、目的和要求13

二、试验性质14

三、实验内容14

四、试验步骤14

五、分析讨论14

实训项目五:

通讯录18

一、目的和要求18

二、试验性质18

三、实验内容18

四、试验步骤18

五、分析与讨论19

实训项目六:

后缀表达式求值,表达式求值25

一、目的和要求25

二、试验性质25

三、实验内容25

四、实验步骤26

五、分析与讨论26

实训项目七:

迷宫33

一、目的和要求33

二、试验性质33

三、实验内容33

四、实验步骤34

五、分析与讨论

实训项目一:

儿童100以内的加减乘除法游戏训练

一、目的和要求

1、通过实训掌握本学期所学C语言知识。

2、编辑一个具有加减乘除基本功能的计算器程序。

3、对系统进行功能模块分析、控制模块分析,结论正确。

4、更加深入掌握C语言;

5、熟练的掌握函数的定义,调用,说明的方法;

二、试验性质

自主设计实验

三、实验内容

1)通过菜单选择加减乘除。

2)100(或10)以上的两个整数通过rand函数随即产生。

3)计算减法时,不能出现结果为负数。

4)答对提示恭喜,答错续答,答错三次给出正确答案等等。

四、实验步骤

1、划分程序功能模块;

2、写程序实现算法;

3、画出程序流程图;

4、定义结构体,预处理定义,加法函数,减法函数,乘法函数,除法函数。

5、编译,连接和运行程序。

五、分析与讨论

1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

2、总结C程序的结构和书写规则。

程序源代码:

#include"stdio.h"

#include"conio.h"

#include"string.h"

#include"stdlib.h"

#include"math.h"

voidaddition();

voidsubtraction();

voidmultiplication();

voiddivision();

voidmain()

{

intchoice;

for(;;)

{

system("cls");

printf("\n-------------------------------------------------\n");

puts("儿童加减乘除算术游戏");

puts("1加法运算2减法运算");

puts("3乘法运算4除法运算");

puts("0退出");

printf("-------------------------------------------------");

printf("\n请选择(0-4):

");

scanf("%d",&choice);

puts("-------------------------------------------------");

switch(choice)

{case0:

exit

(1);

case1:

addition();

printf("\n按任一键继续!

");

getch();break;

case2:

subtraction();

printf("\n按任一键继续!

");

getch();break;

case3:

multiplication();

printf("\n按任一键继续!

");

getch();break;

case4:

division();

printf("\n按任一键继续!

");

getch();break;

default:

printf("输入错误!

按任一键请重新输入!

");getch();continue;

}

}

putchar('\n');

}

voidaddition()

{

intx,y,z,w,i,j=0,k=0;

intchoice;

charc;

system("cls");

printf("\n----------------------------------------------------------------\n");

puts("儿童加法算术游戏");

puts("110以内整数加法运算");

puts("2100以内整数加法运算");

puts("0退出");

printf("------------------------------------------------------------------");

printf("\n请选择(0-2):

");

scanf("%d",&choice);

puts("-------------------------------------------------");

switch(choice)

{case0:

exit

(1);

case1:

i=10;break;

case2:

i=50;break;

default:

printf("输入错误!

按任一键请重新输入!

");getch();

}

putchar('\n');

for(;;)

{system("cls");

x=rand()%i;

y=rand()%i;

if(x!

=0&&y!

=0)

{z=x+y;

printf("\n%d+%d=?

请回答:

",x,y);

scanf("%d",&w);

if(w==z)

{j++;printf("\n恭喜你!

答对了!

继续吗(Y/N)?

");}

else

{k++;printf("\n对不起!

你答错了!

正确答案是:

%d+%d=%d!

继续吗(Y/N)?

",x,y,z);}

scanf("%c",&c);scanf("%c",&c);

system("cls");

if(c=='n'||c=='N')

{printf("\n您的正确率是:

%.0f%",(float)j/(float)(j+k)*100);

break;}}

}

}

voidsubtraction()

{

intx,y,z,w,i,j=0,k=0;

intchoice;

charc;

system("cls");

printf("\n----------------------------------------------------------------\n");

puts("儿童减法算术游戏");

puts("110以内整数减法运算");

puts("2100以内整数减法运算");

puts("0退出");

printf("------------------------------------------------------------------");

printf("\n请选择(0-2):

");

scanf("%d",&choice);

puts("-------------------------------------------------");

switch(choice)

{case0:

exit

(1);

case1:

i=10;break;

case2:

i=50;break;

default:

printf("输入错误!

按任一键请重新输入!

");getch();

}

putchar('\n');

for(;;)

{system("cls");

x=rand()%i;

y=rand()%i;

if(x>y&&y!

=0)

{z=x-y;

printf("\n%d-%d=?

请回答:

",x,y);

scanf("%d",&w);

if(w==z)

{j++;printf("\n恭喜你!

答对了!

继续吗(Y/N)?

");}

else

{k++;printf("\n对不起!

你答错了!

正确答案是:

%d-%d=%d!

继续吗(Y/N)?

",x,y,z);}

scanf("%c",&c);scanf("%c",&c);

system("cls");

if(c=='n'||c=='N')

{printf("\n您的正确率是:

%.0f%",(float)j/(float)(j+k)*100);

break;}}

}

}

voidmultiplication()

{

intx,y,z,w,i,j=0,k=0;

intchoice;

charc;

system("cls");

printf("\n----------------------------------------------------------------\n");

puts("儿童乘法算术游戏");

puts("110以内整数乘法运算");

puts("2100以内整数乘法运算");

puts("0退出");

printf("------------------------------------------------------------------");

printf("\n请选择(0-2):

");

scanf("%d",&choice);

puts("-------------------------------------------------");

switch(choice)

{case0:

exit

(1);

case1:

i=10;break;

case2:

i=50;break;

default:

printf("输入错误!

按任一键请重新输入!

");getch();

}

putchar('\n');

for(;;)

{system("cls");

x=rand()%i;

y=rand()%i;

if(x!

=0&&x!

=1&&y!

=0&&y!

=1)

{z=x*y;

printf("\n%d×%d=?

请回答:

",x,y);

scanf("%d",&w);

if(w==z)

{j++;printf("\n恭喜你!

答对了!

继续吗(Y/N)?

");}

else

{k++;printf("\n对不起!

你答错了!

正确答案是:

%d×%d=%d!

继续吗(Y/N)?

",x,y,z);}

scanf("%c",&c);scanf("%c",&c);

system("cls");

if(c=='n'||c=='N')

{printf("\n您的正确率是:

%.0f%",(float)j/(float)(j+k)*100);

break;}}

}

}

voiddivision()

{

intx,y,z,w,i,j=0,k=0;

floats;

intchoice;

charc;

system("cls");

printf("\n----------------------------------------------------------------\n");

puts("儿童除法算术游戏");

puts("110以内整数除法运算");

puts("2100以内整数除法运算");

puts("0退出");

printf("------------------------------------------------------------------");

printf("\n请选择(0-2):

");

scanf("%d",&choice);

puts("-------------------------------------------------");

switch(choice)

{case0:

exit

(1);

case1:

i=10;break;

case2:

i=50;break;

default:

printf("输入错误!

按任一键请重新输入!

");getch();

}

putchar('\n');

for(;;)

{system("cls");

x=rand()%i;

y=rand()%i;

if(x!

=0&&y!

=0&&y!

=1)

if(

(float)x/(float)y==2||

(float)x/(float)y==3||

(float)x/(float)y==4||

(float)x/(float)y==5||

(float)x/(float)y==6||

(float)x/(float)y==7||

(float)x/(float)y==8||

(float)x/(float)y==9||

(float)x/(float)y==1)

{z=x/y;

printf("\n%d/%d=?

请回答:

",x,y);

scanf("%d",&w);

if(w==z)

{j++;printf("\n恭喜你!

答对了!

继续吗(Y/N)?

");}

else

{k++;printf("\n对不起!

你答错了!

正确答案是:

%d/%d=%d!

继续吗(Y/N)?

",x,y,z);}

scanf("%c",&c);scanf("%c",&c);

system("cls");

if(c=='n'||c=='N')

{printf("\n您的正确率是:

%.0f%",(float)j/(float)(j+k)*100);

break;}}

}

}

实训项目二:

数制转换系统

一、目的和要求

课程实训为学生们提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识与理论实践有机的相结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力。

二、试验性质

自主设计实验

三、实验内容

1.先将十进制数转换成八进制,二进制,十六进制。

2.再输入一个二进制数转换成十进制。

3.再将八进制转换成十进制.

4.输入十六进制转换成十进制.

四、实验步骤

1.划分程序功能模块

a)写程序实现算法;

b)画出程序流程图;

c)定义结构体,宏定义,菜单函数,输入函数,载入文件函数,编写主函数。

编译,连接和运行程序

五、分析与讨论

1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

2、总结C程序的结构和书写规则。

附录:

一、程序流程图

 

二、程序清单

#include"stdio.h"

#include"stdlib.h"

voidten_eight();

voidConversion();

voidten_sixteen();

voidsele();

#defineSTACKMAX100

typedefstructstacknode

{

intdata;

structstacknode*next;

}stacknode;

typedefstruct

{

stacknode*top;

}linkstack;

voidConversion()

{

linkstacks;

intx,n;

scanf("%d",&n);

s.top=NULL;

do

{

x=n%2;

n=n/2;

stacknode*p=newstacknode;

p->next=s.top;

s.top=p;

s.top->data=x;

}

while(n);

printf("\n\t\t转换后的二进制数值为:

");

while(s.top)

{

printf("%d",s.top->data);

stacknode*p=s.top;

s.top=s.top->next;

deletep;

}

getchar();system("cls");

sele();

}

voidmain()

{

linkstack*s=newlinkstack;

inti=1,j=1,n;

s->top=NULL;

while(i)

{

printf("\n\t\t数制转换:

");

//printf("\n\t\t请输入一个十进制正整数:

");

sele();

break;

}

}

voidten_eight()

{

inta;

scanf("%d",&a);

printf("\n%o",a);

getchar();system("cls");

sele();

}

voidten_sixteen()

{

inta;

scanf("%d",&a);

printf("\n%x",a);

getchar();getchar();system("cls");

sele();

}

voidsele()

{

inty;

printf("\n1------十到二");

printf("\n2------十到八");

printf("\n3------十到十六");

scanf("%d",&y);

switch(y)

{

case1:

Conversion();break;

case2:

ten_eight();break;

case3:

ten_sixteen();break;

default:

printf("输入错误!

\n");

}

}

实训项目三:

倒计时

一、目的和要求

锻炼动手和动脑能力,独立实践的能力,还有团队合作的能力,将课本上的理论知识与实践能力有机的的结合起来,锻炼分析解决实际问题的能力。

提高适应实际,实践编程的能力。

二、试验性质

自主设计实验

三、实验内容

1、通过实训掌握本学期所学C语言知识;

2、编写出一个具有计算功能的倒计时;

3、实现倒计时的输入,输出,计算,调用函数,循环等功能;

4、更加深入掌握C语言实际操作,使理论与实际很好结合;

5、熟练的掌握函数的定义,调用,说明的方法;

熟练掌握对文件的操作,通过printf和scanf函数对文件进行读写操作

四、实验步骤

1.划分程序功能模块;

2.写程序实现算法

例如:

输入考试时间:

2008年06月18日15时44分21秒

输入当日时间:

2008年05月10日24时26分28秒

2008不是闰年,故2008年有365天,6月有30天,5月有31天;

21<28;60+21-28=53;44-1=43;

43>26;43-26=17;

15<23;12+23-23=12;18-1=17;

17>10;17-10=7;

综上距离考试时间有7天17时17分43秒

3.画出程序流程图;

4.定义结构体,输入函数,菜单函数,载入文件函数,编写主函数,编译,连接和运行程序。

五、分析与讨论

1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

2、总结C程序的结构和书写规则。

程序功能模块示意图:

六、程序清单

/***********显示考试倒计时********/

/***************郭凯*************/

#include"stdio.h"

intpr(int,int,int);/*函数说明*/

voidmain()

{

intyear,month,day,hour,minute,second;/*定义变量*/

intgk_year,gk_month,gk_day,gk_hour,gk_minute,gk_second;

intj,h,k1,k2,k3=0;/*给变量赋初值*/

printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");

printf("\n请输入您的考试时间(年,月,日,时,分,秒):

");

/*提示用户输入考试时间*/

scanf("%d%d%d%d%d%d",&year,&month,&day,&hour,&minute,&second);

/*接收分别输入到各个变量*/

printf("\n请输入您现在的时间(年,月,日,时,分,秒):

");

/*提示用户输入今日时间*/

scanf("%d%d%d%d%d%d",&gk_year,&gk_month,&gk_day,&gk_hour,&gk_minute,&gk_second);

/*接收输入到各个变量*/

k1=pr(year,month,day);/*调用函数*/

k2=pr(gk_year,gk_month,gk_day);/*调用函数*/

for(j=gk_year+1;j

if(j%400==0||j%4==0&&j%100!

=0)/*判断是否是闰年*/

k3++;

h=k1-k2+k3+(year-gk_year)*365;

if(second>=gk_second)/*如果second大于或等于gk_second*/

second=second-gk_second;

else

{

second=60+second-gk_second;

minute=minute-1;

}

if(minute>=gk_minute)/*如果minute大于或等于gk_minute*/

minute=minute-gk_minute;

else

{

minute=60+minute-gk_minute;

hour=hour-1;

}

if(hour>=gk_hour)/*如果hour大于或等于gk_hour*/

{

hour=hour-gk_hour;

printf("\n距离您的考试时间还有:

%d天%d小时%d分%d秒!

\n",h,hour,minute,second);

printf("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1