C语言实习实例(经典版)

合集下载

C语言实战105例

C语言实战105例
实例68 EGA/VGA屏幕存储 187
实例69 按钮制作 190
实例70 三维视图制作 193
实例71 红旗图案制作 194
实例72 火焰动画制作 196
实例73 模拟水纹扩散 199
实例74 彩色的Photo Frame 201
实例75 火箭发射演示 203
第6部分 系统篇
实例51 简易漏洞扫描器 146
实例52 文件病毒检测程序 149
实例53 监测内存泄露与溢出 150
实例54 实现traceroute命令 152
实例55 实现ping程序功能 154
实例56 获取Linux本机IP地址 157
实例57 实现扩展内存的访问 161
实例58 随机加密程序 164
实例59 MD5加密程序 165
实例60 RSA加密实例 168
第5部分 图形篇
实例61 制作表格 172
实例62 用画线函数作出的图案 174
实例63 多样的椭圆 176
实例64 多变的立方体 177
实例65 简易时钟 178
实例66 跳动的小球 181
实例67 用柱状图表示学生成绩各分数段比率 183
实例76 恢复内存文本 208
实例77 挽救磁盘数据 210
实例78 建立和隐藏多个PRI DOS分区 213
实例79 简单的DOS下的中断服务程序 216
实例80 文件名分析程序 219
实例81 鼠标中断处理 222
实例82 实现磁盘数据的整体加密 224
实例83 揭开CMOS密码 227
实例9 模拟银行常用打印程序 22
实例10 使用一维数组统计选票 26

C语言见习报告6篇

C语言见习报告6篇

C语⾔见习报告6篇C语⾔是⼀种计算机程序设计语⾔,属⾼级语⾔范畴。

它既具有⾼级语⾔的特点,⼜具有汇编语⾔的特点。

通过见习做⼀报告,本⽂是C语⾔见习的报告,仅供参考。

C语⾔见习报告⼀:班级:姓名:实验名称:电话订餐信息处理实验⽬的:题⽬要求:⼀个⼩饭馆的⽣意⾮常红⽕,要想⽤餐必须提前⼀天打电话预订,假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?⾸先,需要准备⼀张⼤⼩适当的⽩纸,等待顾客的电话。

李红最先打进了电话,她预约第2天中午12点⽤餐,⽤餐⼈数5⼈,服务员在纸上做了如下记录:“李红 12点 5⼈”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是:李红 12点 5⼈刘娜 11点 2⼈汪涵 11点20分 3⼈孙杰 10点30分 5⼈赵君 13点20分 6⼈孙杰随后⼜来电话,将⽤餐时间推后⼀个⼩时,那么记录的内容也应该做相应的修改。

刘娜来⽤餐以后,可以将其信息从纸上划去编写程序处理电话订餐的情况实验步骤:⾸先建⽴结构体类型,然后函数声明,编写主函数,定义函数,调⽤函数。

完成后,对程序进⾏调试,确定所编写的程序是否能够运⾏。

实验内容:#include#include#define max 30struct guest{ intnum;char name[40];char time[20];int sum;}guestlink[max];void insert(int _p);void inquire(int);void change(int);void dele(int _p);void show(int);void main(){ inti;int count=0;do{0printf("1.......插⼊\n");printf("2.......查询\n");printf("3.......修改\n");printf("4.......删除\n");printf("5.......显⽰\n");printf("6.......退出\n");scanf("%d",&i);switch(i){case 1: insert(&count);break; case 2: inquire(count);break; case 3: change(count);break; case 4: dele(&count);break; case 5: show(count);break; case 6:break;default:printf("输⼊错误!");break; }}while(i!=6);}void insert(int _p){ inti,number;if(_p==max){ printf("⽤餐已满\n");return;} printf("请输⼊编号:");scanf("%d",&number);for(i=0;i<_p;i++)if(guestlink[i].num==number) { printf("已有相同的编号");return;} guestlink[i].num=number;printf("请输⼊姓名:");scanf("%s",guestlink[i].name); printf("请输⼊⼈数:");scanf("%d",&guestlink[i].sum); printf("请输⼊⽤餐时间:");scanf("%s",guestlink[i].time); (_p)++;}void inquire(int p){ inti,number,flag=1;printf("请输⼊要查询的编号");scanf("%d",&number);for(i=0;iif(guestlink[i].num==number){ printf("姓名:%s",guestlink[i].name);printf("⽤餐时间:%s",guestlink[i].time);printf("⼈数:%d\n",guestlink[i].sum);flag=0;}if(i>=p&&flag==1) printf("所查询的编号不存在"); }void change(int p){ inti,number,flag=1;printf("请输⼊要修改的编号");scanf("%d",&number);for(i=0;iif(guestlink[i].num==number){ printf("请输⼊姓名:");scanf("%s",guestlink[i].name);printf("请输⼊⽤餐时间:");scanf("%s",guestlink[i].time);printf("请输⼊⼈数:");scanf("%d",&guestlink[i].sum);flag=0;}if(i>=p&&flag==1) printf("所查询的编号不存在"); }void dele(int _p){ inti,j,number,flag=1;printf("请输⼊要删除的编号");scanf("%d",&number);for(i=0;i<_p&&flag;i++)if(guestlink[i].num==number){for(j=i;j<_p-1;j++)guestlink[j]=guestlink[j+1];flag=0;(_p)--;}if(i>=_p&&flag==1) printf("输⼊的编号不存在");}void show(int p){ inti;printf("编号姓名⽤餐时间⼈数\n ");for(i=0;i{ printf("%d",guestlink[i].num);printf("%8s",guestlink[i].name);printf("%8s",guestlink[i].time);printf("%8d\n",guestlink[i].sum);}}实验结果:实验体会:通过这次实践让我觉得⽤C语⾔在⽣活中的应⽤占有很⼤的⽐重,这次编程,让我体会到了学习C语⾔的乐趣,以及运⽤c语⾔给⼈们带来的⽅便。

(整理)单片机C语言程序设计实训100例

(整理)单片机C语言程序设计实训100例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++)P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

(完整word版)单片机C语言程序设计实训100例

(完整word版)单片机C语言程序设计实训100例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第 01 篇基础程序设计01 闪烁的LED/*名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h〉#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x-—){for(i=0;i〈120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include〈reg51。

h〉#include<intrins。

h>#define uchar unsigned char #define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x—-){for(i=0;i〈120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/*名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include〈intrins.h>#define uchar unsigned char #define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x——){for(i=0;i〈120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i〈7;i++){P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51。

单片机C语言程序设计实训100例new

单片机C语言程序设计实训100例new

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++)P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

单片机C语言程序设计实训100例

单片机C语言程序设计实训100例

//恢复定时器 1 初值 //500ms 转换状态
名称:10s 的秒表 说明:首次按键计时开始,再次按键暂停,第三次按键清零。
*/ #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit K1=P3^7; uchar i,Second_Counts,Key_Flag_Idx; bit Key_State; uchar
34 上海师范大学信息与机电工程学院—倪继锋
《单片机 C 语言程序设计实训 100 例---基于 8051 和 PROTEUS 仿真》案例
34 /*
100 000s 以内的计时程序 名称:100 000s 以内的计时程序 说明:在 6 只数码管上完成 0~99 999.9s。
*/ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //段码 ucha 中断函数 void LED_Flash_and_Scroll() interrupt 1 { if(++k<35) return; //定时中断若干次后执行闪烁 k=0; switch(i) { case 0: B1=~B1;break; case 1: G1=~G1;break; case 2: R1=~R1;break; case 3: Y1=~Y1;break; default:i=0; } if(++j<300) return; //每次闪烁持续一段时间 j=0; P0=0xff; //关闭显示 i++; //切换到下一个 LED } 30 /* T0 控制 LED 实现二进制计数

C语言课程实习(优秀范文5篇)

C语言课程实习(优秀范文5篇)

C语言课程实习(优秀范文5篇)第一篇:C语言课程实习课程实习一、C程序上机操作方法及运行环境编写一个C程序,输入a, b, c,d四个值,输出其中最小者。

#includemain(){int a,b,c,d,t;printf(“Please input numbers:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);t=min(min(min(a,b),c),d);printf(“min number is:%dn”,t);}int min(int x,int y){int z;if(xz=x;elsez=y;return(z);}运行结果:Please input numbers:4,6,3,9min number is:3课程实习二、C程序上机操作方法及运行环境从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII 码及其ASCII码的平方根和的平方。

#include#includevoid main(){char ch1,ch2,ch3;float t;scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);t=sqrt(ch1)+sqrt(ch2)+sqrt(ch3);printf(“%c,%dn”,ch1,ch1);printf(“%c,%dn”,ch2,ch2);printf(“%c,%dn”,ch3,ch3);printf(“%fn”,t*t);}运行结果:a,b,ca,97b,98c,99881.984683课程实习三、循环结构程序设计1)输入两个正整数m和n;2)如果m=n输出最大公约数m程序结束;3)若m>n则m=m-n否则n=n-m;4)返回到2)(循环)。

#includevoid main(){int m,n;scanf(“%d%d”,&m,&n);while(m!=n){if(m>n)m=m-n; else n=n-m;}printf(“%dn”,m); }运行结果:34,24课程实习四、循环结构程序设计打印下面的图案# # # # ## # # ## # ## ##includevoid main(){int i,j;for(i=1;i<=4;i++) {for(j=1;jprintf(“ ”);for(j=5;j>=i;j--) printf(“*”); putchar('n');}}课程实习五、数组的应用输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。

C语言实习实例(经典版)

C语言实习实例(经典版)
(5)输入和输出的格式。
4.调试分析
调试过程中遇到的问题,以及如何解决的;
5.测试结果
根据实验提供的测试数据,列出你所编写的程序的测试结果。
6.用户使用说明(可选)
说明如何使用编写的程序,详细列出每一步的操作步骤。
7.实验心得(可选)
对实验设计与实现过程的回顾和分析,以及经验和体会。
8.附录(可选)
(3)分析并确定处理后的结果如何显示。
这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据;以及相应的输出结果。
(二)数据类型和系统设计
当需求分析结束,明确问题要求后,开始为编写程序设计合适的数据结构和算法。本步骤分概要设计和详细设计两步实现。
概要设计指的是,对问题描述中涉及的操作对象定义相应的抽象数据类型,并设计合适的算法;以及定义程序各个功能模块和模块之间的关系。在这个过程中,要根据问题的功能需求综合考虑,设计时空复杂度最优的抽象数据结构和算法(注意:实现提示和给出的部分代码中以及给出了建议)。抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体,算法思想和过程明确有效,程序结构清晰、合理、简单和易于调试。作为概要设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),主要模块的算法思想,并画出模块之间的调用关系图。
静态检查主要有两种方法,一是用一组测试数据手工执行程序(通常应先分模块检查);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注解和断言。如果程序中逻辑概念清楚,后者将比前者有效。
(四)上机准备和上机调试
上机准备包括一下几个方面:
(1)熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机的基本活动。

c语言实践报告范文(精选3篇)

c语言实践报告范文(精选3篇)

c语言实践报告范文(精选3篇)c语言实践报告范文篇1在科技高速发展的今天,计算机互联网在人们之中的作用越来越突出。

而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。

在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。

在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。

学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。

因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。

为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。

课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。

然而要使用c语言这个工具解决实际问题,又必须掌握它。

通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c 语言的语法规定。

对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

2、熟悉程序开发环境、学习计算机系统的操作方法一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。

所谓";环境";就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。

通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。

C语言编程实例100题(带解析适合新手超经典)

C语言编程实例100题(带解析适合新手超经典)

C语言程序实例100个(一)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满足条件的排列。

2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)/*以下为三重循环*/ for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。

注意定义时需把奖金定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。

C语言实训实例3

C语言实训实例3

题目3 假设某单位有10人, 职工工资表如下所示, 要求奖金按以下条件给出: (1)中级职称的奖金是该职工工资的40%;(2) 高级职称的奖金是该职工工资的60%;(3) 初级职称的奖金是该职工工资的30%。

方法一:#include"stdio.h"#include"string.h"main(){int i;char c[20];float a[10][3];a[0][0]=1024.56;a[1][0]=1102.41;a[2][0]=812.27;a[3][0]=1589.35;a[4][0]=1638.47;a[5][0]=1017.59;a[6][0]=789.35;a[7][0]=1687.69;a[8][0]=1024.25;a[9][0]=1815.27;printf("请输入教师职称;“工程师、会计师、助工、高工、高会”\n");for(i=0;i<5;i++) /*实现根据不同职称计算奖金及总收入的功能*/ { gets(c);if(strcmp(c,"工程师")==0){ a[0][1]=a[0][0]*0.4;a[0][2]=a[0][0]+a[0][1];a[8][1]=a[8][0]*0.4;a[8][2]=a[8][0]+a[8][1]; }else if(strcmp(c,"会计师")==0){ a[1][1]=a[1][0]*0.4;a[1][2]=a[1][0]+a[1][1];a[5][1]=a[5][0]*0.4;a[5][2]=a[5][0]+a[5][1];}else if(strcmp(c,"助工")==0){a[2][1]=a[2][0]*0.3;a[2][2]=a[2][0]+a[2][1];a[6][1]=a[6][0]*0.3;a[6][2]=a[6][0]+a[6][1];}else if(strcmp(c,"高工")==0){ a[3][1]=a[3][0]*0.6;a[3][2]=a[3][0]+a[3][1];a[7][1]=a[7][0]*0.6;a[7][2]=a[7][0]+a[7][1];}else if(strcmp(c,"高会")==0){a[4][1]=a[4][0]*0.6;a[4][2]=a[4][0]+a[4][1];a[9][1]=a[9][0]*0.6;a[9][2]=a[9][0]+a[9][1];} }system("cls"); /*清除上述显示, 输出工资表*/ printf(" 职工号职称工资奖金总收入\n");printf(" ----------------------------------------------\n");printf(" A1101 工程师%-6.2f %-6.2f %-6.2f\n",a[0][0],a[0][1],a[0][2]); printf(" ----------------------------------------------\n");printf(" B1014 会计师%-6.2f %-6.2f %-6.2f\n",a[1][0],a[1][1],a[1][2]); printf(" ----------------------------------------------\n");printf(" B1016 助工%-6.2f %-6.2f %-6.2f\n",a[2][0],a[2][1],a[2][2]); printf(" ----------------------------------------------\n");printf(" A1105 高工%-6.2f %-6.2f %-6.2f\n",a[3][0],a[3][1],a[3][2]);printf(" ----------------------------------------------\n");printf(" B1019 高会%-6.2f %-6.2f %-6.2f\n",a[4][0],a[4][1],a[4][2]); printf(" ----------------------------------------------\n");printf(" A1115 会计师%-6.2f %-6.2f %-6.2f\n",a[5][0],a[5][1],a[5][2]); printf(" ----------------------------------------------\n");printf(" A1117 助工%-6.2f %-6.2f %-6.2f\n",a[6][0],a[6][1],a[6][2]); printf(" ----------------------------------------------\n");printf(" B1024 高工%-6.2f %-6.2f %-6.2f\n",a[7][0],a[7][1],a[7][2]); printf(" ----------------------------------------------\n");printf(" A1124 工程师%-6.2f %-6.2f %-6.2f\n",a[8][0],a[8][1],a[8][2]); printf(" ----------------------------------------------\n");printf(" B1028 高会%-6.2f %-6.2f %-6.2f\n",a[9][0],a[9][1],a[9][2]); printf(" ----------------------------------------------\n");}程序效果图如下;方法二#include"stdio.h"#include"string.h"main(){int i,j,k=0,m=0,w=0;char b[20],c[20];float a[10][3];a[0][0]=1024.56;a[1][0]=1102.41;a[2][0]=812.27;a[3][0]=1589.35;a[4][0]=1638.47;a[5][0]=1017.59;a[6][0]=789.35;a[7][0]=1687.69;a[8][0]=1024.25;a[9][0]=1815.27;printf("请输入各教职工职称代码;1,2,3,4,5,6,7,8,9,1o\n");for(i=0;i<5+k+m+w;i++){gets(b);if((strcmp(b,"1")!=0)&&(strcmp(b,"2")!=0)&&(strcmp(b,"3")!=0)&&(strcmp(b,"4")!=0)&&(strc mp(b,"5")!=0)&&(strcmp(b,"6")!=0)&&(strcmp(b,"7")!=0)&&(strcmp(b,"8")!=0)&&(strcmp(b," 9")!=0)&&(strcmp(b,"10")!=0)){printf("wrong!!\n");printf("只接受1-10表示的字符,请重新输入!!\n");k++;getch();system("cls");printf("请输入各教职工职称代码;1,2,3,4,5,6,7,8,9,1o\n");continue;}else if(strcmp(b,"1")==0) {a[0][1]=a[0][0]*0.4;a[0][2]=a[0][1]+a[0][0];}else if(strcmp(b,"2")==0) {a[1][1]=a[1][0]*0.4;a[1][2]=a[1][0]+a[1][1];}else if(strcmp(b,"3")==0) {a[2][1]=a[2][0]*0.3;a[2][2]=a[2][0]+a[2][1];}else if(strcmp(b,"4")==0) {a[3][1]=a[3][0]*0.6;a[3][2]=a[3][0]+a[3][1];}else if(strcmp(b,"5")==0) {a[4][1]=a[4][0]*0.6;a[4][2]=a[4][0]+a[4][1];}else if(strcmp(b,"6")==0) {a[5][1]=a[5][0]*0.4;a[5][2]=a[5][0]+a[5][1];}else if(strcmp(b,"7")==0) {a[6][1]=a[6][0]*0.3;a[6][2]=a[6][0]+a[6][1];}else if(strcmp(b,"8")==0) {a[7][1]=a[7][0]*0.6;a[7][2]=a[7][0]+a[7][1];} else if(strcmp(b,"9")==0) {a[8][1]=a[8][0]*0.4;a[8][2]=a[8][0]+a[8][1];}else if(strcmp(b,"10")==0) {a[9][1]=a[9][0]*0.6;a[9][2]=a[9][0]+a[9][1];}gets(c);{ if((strcmp(c,"1")!=0)&&(strcmp(c,"2")!=0)&&(strcmp(c,"3")!=0)&&(strcmp(c,"4")!=0)&&(strc mp(c,"5")!=0)&&(strcmp(c,"6")!=0)&&(strcmp(c,"7")!=0)&&(strcmp(c,"8")!=0)&&(strcmp(c,"9 ")!=0)&&(strcmp(c,"10")!=0)){ printf("wrong!!\n");printf("只接受1-10表示的字符,请重新输入!!\n");getch();system("cls");printf("请输入各教职工职称代码;1,2,3,4,5,6,7,8,9,1o\n");for(j=0;j<10;j++){ a[j][1]=0;a[j][2]=0;}getch();w++;continue;}else if(strcmp(b,c)==0) {printf("\n不能输入相同值!!\n");m++;getch();system("cls");printf("请输入各教职工职称代码;1,2,3,4,5,6,7,8,9,1o\n");continue;} else if(strcmp(c,"1")==0) {a[0][1]=a[0][0]*0.4;a[0][2]=a[0][1]+a[0][0];}else if(strcmp(c,"2")==0) {a[1][1]=a[1][0]*0.4;a[1][2]=a[1][0]+a[1][1];}else if(strcmp(c,"3")==0) {a[2][1]=a[2][0]*0.3;a[2][2]=a[2][0]+a[2][1];}else if(strcmp(c,"4")==0) {a[3][1]=a[3][0]*0.6;a[3][2]=a[3][0]+a[3][1];}else if(strcmp(c,"5")==0) {a[4][1]=a[4][0]*0.6;a[4][2]=a[4][0]+a[4][1];}else if(strcmp(c,"6")==0) {a[5][1]=a[5][0]*0.4;a[5][2]=a[5][0]+a[5][1];}else if(strcmp(c,"7")==0) {a[6][1]=a[6][0]*0.3;a[6][2]=a[6][0]+a[6][1];}else if(strcmp(c,"8")==0) {a[7][1]=a[7][0]*0.6;a[7][2]=a[7][0]+a[7][1];}else if(strcmp(c,"9")==0) {a[8][1]=a[8][0]*0.4;a[8][2]=a[8][0]+a[8][1];} if(strcmp(c,"10")==0) {a[9][1]=a[9][0]*0.6;a[9][2]=a[9][0]+a[9][1];}}}system("cls");printf(" 职工号职称工资奖金总收入\n");printf(" ----------------------------------------------\n");printf(" A1101 工程师%-6.2f %-6.2f %-6.2f\n",a[0][0],a[0][1],a[0][2]); printf(" ----------------------------------------------\n");printf(" B1014 会计师%-6.2f %-6.2f %-6.2f\n",a[1][0],a[1][1],a[1][2]); printf(" ----------------------------------------------\n");printf(" B1016 助工%-6.2f %-6.2f %-6.2f\n",a[2][0],a[2][1],a[2][2]); printf(" ----------------------------------------------\n");printf(" A1105 高工%-6.2f %-6.2f %-6.2f\n",a[3][0],a[3][1],a[3][2]); printf(" ----------------------------------------------\n");printf(" B1019 高会%-6.2f %-6.2f %-6.2f\n",a[4][0],a[4][1],a[4][2]); printf(" ----------------------------------------------\n");printf(" A1115 会计师%-6.2f %-6.2f %-6.2f\n",a[5][0],a[5][1],a[5][2]); printf(" ----------------------------------------------\n");printf(" A1117 助工%-6.2f %-6.2f %-6.2f\n",a[6][0],a[6][1],a[6][2]); printf(" ----------------------------------------------\n");printf(" B1024 高工%-6.2f %-6.2f %-6.2f\n",a[7][0],a[7][1],a[7][2]); printf(" ----------------------------------------------\n");printf(" A1124 工程师%-6.2f %-6.2f %-6.2f\n",a[8][0],a[8][1],a[8][2]); printf(" ----------------------------------------------\n");printf(" B1028 高会%-6.2f %-6.2f %-6.2f\n",a[9][0],a[9][1],a[9][2]); printf(" ----------------------------------------------\n");}。

单片机C语言程序设计实训100例_基于8051+Proteus仿真

单片机C语言程序设计实训100例_基于8051+Proteus仿真

《基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P1^0;//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){while(1){LED=~LED;DelayMS(150);}}02 从左到右的流水灯/* 名称:从左到右的流水灯说明:接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){P0=0xfe;while(1){P0=_crol_(P0,1); //P0的值向左循环移动DelayMS(150);}}03 8只LED左右来回点亮/* 名称:8只LED左右来回点亮说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++)P2=_crol_(P2,1); //P2的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

cu语言初学者经典案例

cu语言初学者经典案例

cu语言初学者经典案例咱先想象一下,你有一个超级圆的盘子,你想知道这个盘子的面积有多大。

在C 语言里呀,咱们得先知道圆面积的公式,那就是S = π r^2(这里的S就是面积,r是圆的半径,π通常我们就近似取3.14啦)。

那在C语言里咋做呢?首先得有个程序的框架,就像盖房子先打地基一样。

#include <stdio.h>.int main() {// 我们先定义一个变量来表示半径。

double radius;// 还有一个变量来放最后的面积。

double area;// 让用户输入半径的值。

printf("朋友,告诉我这个圆的半径是多少呀:");scanf("%lf", &radius);// 按照公式计算面积。

area = 3.14 radius radius;// 最后把面积显示出来。

printf("这个圆的面积是:%lf\n", area);return 0;}你看啊,这个程序开始先包含了一个叫`<stdio.h>`的东西,这就像是一个工具包,里面有咱们要用的`printf`(用来显示东西给用户看的)和`scanf`(用来从用户那里获取输入的)。

然后在`main`函数里呢,咱们定义了两个变量`radius`和`area`,一个是放半径的,一个是放算出来的面积的。

接着用`printf`来提示用户输入半径,`scanf`就把用户输入的值存到`radius`这个变量里了。

再根据公式算出面积放到`area`变量里,最后又用`printf`把面积显示出来。

是不是还挺有趣的?就像做一个数学小魔术一样。

C语言经典编程100例--实践版(可编辑)

C语言经典编程100例--实践版(可编辑)

C语言经典编程100例--实践版1绘制余弦曲线在屏幕上用显示0360度的余弦函数cos x 曲线问题分析与算法设计如果在程序中使用数组这个问题十分简单但若规定不能使用数组问题就变得不容易了关键在于余弦曲线在0360度的区间内一行中要显示两个点而对一般的显示器来说只能按行输出即输出第一行信息后只能向下一行输出不能再返回到上一行为了获得本文要求的图形就必须在一行中一次输出两个为了同时得到余弦函数cos x 图形在一行上的两个点考虑利用cos x 的左右对称性将屏幕的行方向定义为x列方向定义为y则0180度的图形与180360度的图形是左右对称的若定义图形的总宽度为62列计算出x行0180度时y点的坐标m 那么在同一行与之对称的180360度的y点的坐标就应为62-m程序中利用反余弦函数acos计算坐标 xy 的对应关系使用这种方法编出的程序短小精炼体现了一定的技巧程序说明与注释includeincludeint mainint xmfor y 1y -1y- 01 y为列方向值从1到-1步长为01m acos y 10 计算出y对应的弧度m乘以10为图形放大倍数for x 1x mx printf " "printf "" 控制打印左侧的号for x 62-mx printf " "printf "\n" 控制打印同一行中对称的右侧号return 0思考题如何实现用显示0360度的sin x 曲线2绘制余弦曲线和直线在屏幕上显示0360度的cos x 曲线与直线f x 45 y-1 31的迭加图形其中cos x 图形用表示f x 用表示在两个图形相交的点上则用f x 图形的符号问题分析与算法设计本题可以在上题的基础上进行修改图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后正确判断相互的位置关系为此可以先判断图形的交点再分别控制打印两个不同的图形程序注释与说明includeint maindouble yint xmnyyfor yy 0yy 20yy 对于第一个y坐标进行计算并在一行中打印图形y 01yy y屏幕行方向坐标m acos 1-y 10 m cos x 曲线上y点对应的屏幕列坐标n 45 y-1 31 n 直线上y点对应的列坐标for x 0x 62x x 屏幕列方向坐标if x mx n printf "" 直线与cos x 相交时打印else if x n printf "" 打印不相交时的直线图形else if x mx 62-m printf "" 打印不相交时的cos x 图形else printf " " 其它情况打印空格printf "\n"return 0思考题如何实现sin x 曲线与cos x 曲线图形的同时显示3绘制圆在屏幕上用画一个空心的圆问题分析与算法设计打印圆可利用图形的左右对称性根据圆的方程RR XXYY可以算出圆上每一点行和列的对应关系程序说明与注释includeincludeint maindouble yint xmfor y 10y -10y--m 25sqrt 100-yy 计算行y对应的列坐标m25是屏幕纵横比调节系数因为屏幕的行距大于列距不进行调节显示出来的将是椭圆for x 1x 30-mx printf " " 图形左侧空白控制printf "" 圆的左侧for x 30mx printf " " 图形的空心部分控制printf "\n" 圆的右侧return 0思考题实现函数y x2的图形与圆的图形叠加显示4歌星大奖赛在歌星大奖赛中有10个评委为参赛的选手打分分数为1100分选手最后得分为去掉一个最高分和一个最低分后其余8个分数的平均值请编写一个程序实现问题分析与算法设计这个问题的算法十分简单但是要注意在程序中判断最大最小值的变量是如何赋值的程序说明与注释includeint mainint integeriminsum-32768 先假设当前的最大值为C语言整型数的最小值min 32767 先假设当前的最小值min为C语言整型数的最大值sum 0 将求累加和变量的初值置为0for i 1i 10iprintf "Input number d "iscanf "d"integer 输入评委的评分sum integer 计算总分if integer integer 通过比较筛选出其中的最高分if integer min min integer 通过比较筛选出其中的最低分printf "Canceled scored\nCanceled min scored\n"min printf "Average scored\n" sum--min 8 输出结果运行结果Input number1 90Input number2 91Input number3 93Input number4 94Input number5 90Input number6 99Input number7 97Input number8 92Input number9 91Input number10 95Canceled score99Canceled min score90Average score92思考题题目条件不变但考虑同时对评委评分进行裁判即在10个评委中找出最公平即评分最接返平均分和最不公平即与平均分的差距最大的评委程序应该怎样实现5求最大数问555555的约数中最大的三位数是多少问题分析与算法设计根据约数的定义对于一个整数N除去1和它自身外凡能整除N的数即为N的约数因此最简单的方法是用2到N-1之间的所有数去除N即可求出N的全部约数本题只要求取约数中最大的三位数则其取值范围可限制在100到999之间程序说明与注释includeint mainlong iint jprintf "Please input number"scanf "ld"ifor j 999j 100j--if ij 0printf "The factor with 3 digits in ld isd\n"ijbreak运行结果输入555555输出The factor with 3 digits in 555555 is7776高次方数的尾数求13的13次方的最后三位数问题分析与算法设计解本题最直接的方法是将13累乘13次方截取最后三位即可但是由于计算机所能表示的整数范围有限用这种正确的算法不可能得到正确的结果事实上题目仅要求最后三位的值完全没有必要求13的13次方的完整结果研究乘法的规律发现乘积的最后三位的值只与乘数和被乘数的后三位有关与乘数和被乘数的高位无关利用这一规律可以大大简化程序程序说明与注释includeint mainint ixylast 1 变量last保存求X的Y次方过程中的部分乘积的后三位printf "Input X and Y XY "scanf "dd"xyfor i 1i yi X自乘Y次last lastx1000 将last乘X后对1000取模即求积的后三位printf "The last 3 digits of dd isd\n"xylast1000 打印结果运行结果Input X and Y XY 1313The last 3 digits of 1313 is253Input X and Y XY 1320The last 3 digits of 1320 is8017阶乘尾数零的个数100的尾数有多少个零问题分析与算法设计可以设想先求出100的值然后数一下末尾有多少个零事实上与上题一样由于计算机所能表示的整数范围有限这是不可能的为了解决这个问题必须首先从数学上分析在100结果值的末尾产生零的条件不难看出一个整数若含有一个因子5则必然会在求100时产生一个零因此问题转化为求1到100这100个整数中包含了多少个因子5若整数N能被25整除则N包含2个因子5若整数N能被5整除则N包含1个因子5程序说明与注释includeint mainint acount 0for a 5a 100a 5 循环从5开始以5的倍数为步长考察整数count 若为5的倍数计数器加1if a25 count 若为25的倍数计数器再加1printf "The number of 0 in the end of 100 is d\n"count 打印结果return 0运行结果The number of 0 in the end of 100 is 24问题进一步讨论本题的求解程序是正确的但是存在明显的缺点程序中判断整数N包含多少个因子5的方法是与程序中的100有关的若题目中的100改为1000则就要修改程序中求因子5的数目的算法了思考题修改程序中求因子5的数目的算法使程序可以求出任意N的末尾有多少个零8借书方案知多少小明有五本新书要借给ABC三位小朋友若每人每次只能借一本则可以有多少种不同的借法问题分析与算法设计本问题实际上是一个排列问题即求从5个中取3个进行排列的方法的总数首先对五本书从1至5进行编号然后使用穷举的方法假设三个人分别借这五本书中的一本当三个人所借的书的编号都不相同时就是满足题意的一种借阅方法程序说明与注释int mainint abccount 0printf "There are diffrent methods for XM to distribute books to 3 readers\n"for a 1a 5a 穷举第一个人借5本书中的1本的全部情况for b 1b 5b 穷举第二个人借5本书中的一本的全部情况for c 1a bc 5c 当前两个人借不同的书时穷举第三个人借5本书中的1本的全部情况if c ac b 判断第三人与前两个人借的书是否不同printf count8"2dddd ""2dddd\n "countabc打印可能的借阅方法运行结果There are diffrent methods for XM to distribute books to 3 readers1 1232 1243 1254 1325 1346 1357 1428 1439 145 1015211153 12154 13213 14214 1521516231 17234 18235 19241 2024321245 22251 23253 24254 2531226314 27315 28321 29324 3032531341 32342 33345 34351 3535236354 37412 38413 39415 4042141423 42425 43431 44432 4543546451 47452 48453 49512 5051351514 52521 53523 54524 5553156532 57534 58541 59542 605439杨辉三角形在屏幕上显示杨辉三角形11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1问题分析与算法设计杨辉三角形中的数正是 xy 的N次方幂展开式各项的系数本题作为程序设计中具有代表性的题目求解的方法很多这里仅给出一种从杨辉三角形的特点出发可以总结出1 第N行有N1个值设起始行为第0行2 对于第N行的第J个值 N 2当J 1或J N1时其值为1J 1且J N1时其值为第N-1行的第J-1个值与第N-1行第J个值之和将这些特点提炼成数学公式可表示为1 x 1或x N1c xyc x-1y-1 c x-1y 其它本程序应是根据以上递归的数学表达式编制的程序说明与注释includeint mainint ijn 13printf "N "while n 12scanf "d"n 控制输入正确的值以保证屏幕显示的图形正确for i 0i ni 控制输出N行for j-0j 24-2ij printf " " 控制输出第i行前面的空格for j 1j i2j printf "4d"c ij 输出第i行的第j个值printf "\n"void int c int xint y 求杨辉三角形中第x行第y列的值int zif y 1 y x1 return 1 若为x行的第1或第x1列则输出1z c x-1y-1 c x-1y 否则其值为前一行中第y-1列与第y列值之和return z思考题自行设计一种实现杨辉三角形的方法10数制转换将任一整数转换为二进制形式问题分析与算法设计将十进制整数转换为二进制的方法很多这里介绍的实现方法利用了C语言能够对位进行操作的特点对于C语言来说一个整数在计算机内就是以二进制的形式存储的所以没有必要再将一个整数经过一系列的运算转换为二进制形式只要将整数在内存中的二进制表示输出即可程序说明与注释includevoid printb intintint mainint xprintf "Input number"scanf "d"xprintf "number of decimal formd\n"xprintf " its binary form"printb xsizeof int 8 x整数 sizeof int int型在内存中所占的字节数sizeof int 8int型对应的位数putchar \nvoid printb int xint nif n 0putchar 0 unsigned x 1 n-1 n-1 输出第n位printb xn-1 归调用输出x的后n-1位运行结果输入8输出number of decimal form8its bunary form0000000000001000输入-8输出number of decimal form-8its binary form1XXXXXXXXXX11000输入32767输出number of decimal form32767its binary form01XXXXXXXXXX1111输入-32768输出number of decimal form-32768its binary form1XXXXXXXXXX00000输入128输出number of decimal form128its binary form0000000010000000问题的进一步讨论充分利用C语言可以对位进行操作的特点可以编写许多其它高级语言不便于编写甚至根本无法编写的程序位操作是C语言的一大特点在深入学习C语言的过程中应力求很好掌握程序中使用的位运算方法不是最佳的也可以不用递归操作大家可以自行对程序进行优化思考题将任意正整数转换为四进制或八进制数11打鱼还是晒网中国有句俗语叫三天打鱼两天晒网某人从1990年1月1日起开始三天打鱼两天晒网问这个人在以后的某一天中是打鱼还是晒网问题分析与算法设计根据题意可以将解题过程分为三步1 计算从1990年1月1日开始至指定日期共有多少天2 由于打鱼和晒网的周期为5天所以将计算出的天数用5去除3 根据余数判断他是在打鱼还是在晒网若余数为123则他是在打鱼否则是在晒网在这三步中关键是第一步求从1990年1月1日至指定日期有多少天要判断经历年份中是否有闰年二月为29天平年为28天闰年的方法可以用伪语句描述如下如果年能被4除尽且不能被100除尽或能被400除尽则该年是闰年否则不是闰年C语言中判断能否整除可以使用求余运算即求模程序说明与注释includeint days struct date daystruct dateint yearint monthint dayint mainstruct date todaytermint yeardayyeardayprintf "Enter yearmonthday"scanf "ddd"todayyeartodaymonthtodayday 输入日期termmonth 12 设置变量的初始值月termday 31 设置变量的初始值日for yearday 0year 1990year todayyearyeartermyear yearyearday days term 计算从1990年至指定年的前一年共有多少天yearday days today 加上指定年中到指定日期的天数day yearday5 求余数if day 0day 4 printf "he was fishing at that day\n" 打印结果else printf "He was sleeping at that day\n"int days struct date daystatic int day_tab[2][13]0312831303130313130313031 平均每月的天数0312931303130313130313031int ilplp dayyear4 0dayyear100 0dayyear400 0判定year为闰年还是平年lp 0为平年非0为闰年for i 1i daymonthi 计算本年中自1月1日起的天数dayday day_tab[lp][i]return dayday运行结果Enter yearmonthday1991 10 25He was fishing at dayEnter yearmonthday1992 10 25He was sleeping at dayEnter yearmonthday1993 10 25He was sleeping at day思考题请打印出任意年份的日历12抓交通肇事犯一辆卡车违反交通规则撞人后逃跑现场有三人目击事件但都没有记住车号只记下车号的一些特征甲说牌照的前两位数字是相同的乙说牌照的后两位数字是相同的但与前两位不同丙是数学家他说四位的车号刚好是一个整数的平方请根据以上线索求出车号问题分析与算法设计按照题目的要求造出一个前两位数相同后两位数相同且相互间又不同的整数然后判断该整数是否是另一个整数的平方程序说明与注释includeincludeint mainint ijkcfor i 1i 9i i车号前二位的取值for j 0j 9j j车号后二位的取值if i j 判断二位数字是否相异k i1000i100j10j 计算出可能的整数for c 31cc kc 判断该数是否为另一整数的平方if cc k printf "Lorry--No is d\n"k 若是打印结果运行结果Lorry _Nois 774413该存多少钱假设银行一年整存零取的月息为063现在某人手中有一笔钱他打算在今后的五年中的年底取出1000元到第五年时刚好取完请算出他存钱时应存入多少问题分析与算法设计分析存钱和取钱的过程可以采用倒推的方法若第五年年底连本带息要取1000元则要先求出第五年年初银行存款的钱数第五年初存款 1000 11200063依次类推可以求出第四年第三年的年初银行存款的钱数第四年年初存款第五年年初存款1000 11200063第三年年初存款第四年年初存款1000 11200063第二年年初存款第三年年初存款1000 11200063第一年年初存款第二年年初存款1000 11200063通过以上过程就可以很容易地求出第一年年初要存入多少钱程序说明与注释includeint mainint ifloat total 0for i 0i 5i i 为年数取值为04年total total1000 10006312 累计算出年初存款数额第五次的计算结果即为题解printf "He must save 2f at first\n"total运行结果He must save 403944 at first14怎样存钱利最大假设银行整存整取存款不同期限的月息利率分别为063 期限 1年066 期限 2年069 期限 3年075 期限 5年084 期限 8年利息本金月息利率12存款年限现在某人手中有2000元钱请通过计算选择一种存钱方案使得钱存入银行20年后得到的利息最多假定银行对超过存款期限的那一部分时间不付利息问题分析与算法设计为了得到最多的利息存入银行的钱应在到期时马上取出来然后立刻将原来的本金和利息加起来再作为新的本金存入银行这样不断地滚动直到满20年为止由于存款的利率不同所以不同的存款方法年限存20年得到的利息是不一样的分析题意设2000元存20年其中1年存i1次2年存i2次3年存i3次5年存i5次8年存i8次则到期时存款人应得到的本利合计为2000 1rate1 i1 1rate2 i2 1rate3 i3 1rate5 i5 1rate8 i8其中rateN为对应存款年限的利率根据题意还可得到以下限制条件0 i8 20 i5 20-8i8 50 i3 20-8i8-5i5 30 i2 20-8i8-5i5-3i3 20 i1 20-8i8-5i5-3i3-2i2可以用穷举法穷举所有的i8i5i3i2和i1的组合代入求本利的公式计算出最大值就是最佳存款方案程序说明与注释includeincludeint mainint i8i5i3i2i1n8n5n3n2n1float 0termfor i8 0i8 3i8 穷举所有可能的存款方式for i5 0i5 20-8i8 5i5for i3 0i3 20-8i8-5i5 3i3for i2 0i2 20-8i8-5i5-3i3 2i2i1 20-8i8-5i5-3i3-2i2term 20000pow double 10006312 double i1pow double 120006312 double i2pow double 130006912 double i3pow double 150007512 double i5pow double 180008412 double i8计算到期时的本利合计if termtermn1 i1n2 i2n3 i3n5 i5n8 i8printf "For inum profithe should so save his money in a bank\n" printf " made fixed deposit for 8 year d times\n"n8printf " made fixed deposit for 5 year d times\n"n5printf " made fixed deposit for 3 year d times\n"n3printf " made fixed deposit for 2 year d times\n"n2printf " made fixed deposit for 1 year d times\n"n1printf " Toal 2f\n"输出存款方式运行结果For inum profithe should so save his money in a bankmade fixed deposit for 8 year 0timesmade fixed deposit for 5 year 4timesmade fixed deposit for 3 year 0timesmade fixed deposit for 2 year 0timesmade fixed deposit for 1 year 0timesTotal884101可见最佳的存款方案为连续四次存5年期思考题某单位对职工出售住房每套为2万元买房付款的方法是一次交清优惠20从第一年开始每年年初分期付款5年交清优惠5010年交清优惠1020年交清没有优惠现在有人手中正好有2万元若假定在今后20年中物价和银行利率均保持不变问他应当选择哪种付款方式可以使应付的钱最少15捕鱼和分鱼ABCDE五个人在某天夜里合伙去捕鱼到第二天凌晨时都疲惫不堪于是各自找地方睡觉日上三杆A第一个醒来他将鱼分为五份把多余的一条鱼扔掉拿走自己的一份B第二个醒来也将鱼分为五份把多余的一条鱼扔掉保持走自己的一份CDE依次醒来也按同样的方法拿走鱼问他们合伙至少捕了多少条鱼问题分析与算法设计根据题意总计将所有的鱼进行了五次平均分配每次分配时的策略是相同的即扔掉一条鱼后剩下的鱼正好分成五份然后拿走自己的一份余下其它的四份假定鱼的总数为X则X可以按照题目的要求进行五次分配X-1后可被5整除余下的鱼为4 X-1 5若X满足上述要求则X就是题目的解程序说明与注释includeint mainint nixflag 1 flag控制标记for n 6flagn 采用试探的方法令试探值n逐步加大for x ni 1flagi 5iif x-1 5 0 x 4 x-1 5else flag 0 若不能分配则置标记falg 0退出分配过程if flag break 若分配过程正常结束则找到结果退出试探的过程else flag 1 否则继续试探下一个数printf "Total number of fish catched d\n"n 输出结果运行结果Total number of fish catched 3121问题的进一步讨论程序采用试探法试探的初值为6每次试探的步长为1这是过分保守的做法可以在进一步分析题目的基础上修改此值增大试探的步长值以减少试探次数思考题请使用其它的方法求解本题16出售金鱼买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条第二次卖出余下的三分之一加三分之一条第三次卖出余下的四分之一加四分之一条第四次卖出余下的五分之一加五分之一条最后卖出余下的11条问原来的鱼缸中共有几条金鱼问题分析与算法设计题目中所有的鱼是分五次出售的每次卖出的策略相同第j次卖剩下的 j1 分之一再加1 j1 条第五次将第四次余下的11条全卖了假定第j次鱼的总数为X则第j次留下x- x1 j1当第四次出售完毕时应该剩下11条若X满足上述要求则X就是题目的解应当注意的是" x1 j1 "应满足整除条件试探X的初值可以从23开始试探的步长为2因为X的值一定为奇数程序说明与注释includeint mainint ijn 0x n为标志变量for i 23n 0i 2 控制试探的步长和过程for j 1x ij 4x 11j 完成出售四次的操作if x1 j1 0 若满足整除条件则进行实际的出售操作x- x1 j1else x 0break 否则停止计算过程if j 5x 11 若第四次余下11条则满足题意printf "There are d fishes at first\n"i 输出结果n 1 控制退出试探过程运行结果There are 59 fishes at first思考题日本著名数学游戏专家中村义作教授提出这样一个问题父亲将2520个桔子分给六个儿子分完后父亲说老大将分给你的桔子的18给老二老二拿到后连同原先的桔子分17给老三老三拿到后连同原先的桔子分16给老四老四拿到后连同原先的桔子分15给老五老五拿到后连同原先的桔子分14给老六老六拿到后连同原先的桔子分13给老大结果大家手中的桔子正好一样多问六兄弟原来手中各有多少桔子17平分七筐鱼甲乙丙三位鱼夫出海打鱼他们随船带了21只箩筐当晚返航时他们发现有七筐装满了鱼还有七筐装了半筐鱼另外七筐则是空的由于他们没有秤只好通过目测认为七个满筐鱼的重量是相等的7个半筐鱼的重量是相等的在不将鱼倒出来的前提下怎样将鱼和筐平分为三份问题分析与算法设计根据题意可以知道每个人应分得七个箩筐其中有35筐鱼采用一个33的数组a 来表示三个人分到的东西其中每个人对应数组a的一行数组的第0列放分到的鱼的整筐数数组的第1列放分到的半筐数数组的第2列放分到的空筐数由题目可以推出数组的每行或每列的元素之和都为7对数组的行来说满筐数加半筐数 35每个人所得的满筐数不能超过3筐每个人都必须至少有1 个半筐且半筐数一定为奇数对于找到的某种分鱼方案三个人谁拿哪一份都是相同的为了避免出现重复的分配方案可以规定第二个人的满筐数等于第一个人的满筐数第二个人的半筐数大于等于第一个人的半筐数程序说明与注释includeint a[3][3]countint mainint ijkmnflagprintf "It exists possible distribtion plans\n"for i 0i 3i 试探第一个人满筐a[0][0]的值满筐数不能 3a[0][0] ifor j ij 7-ij 3j 试探第二个人满筐a[1][0]的值满筐数不能 3a[1][0] jif a[2][0] 7-j-a[0][0] 3 continue 第三个人满筐数不能 3if a[2][0] a[1][0] break 要求后一个人分的满筐数前一个人以排除重复情况for k 1k 5k 2 试探半筐a[0][1]的值半筐数为奇数a[0][1] kfor m 1m 7-km 2 试探半筐a[1][1]的值半筐数为奇数a[1][1] ma[2][1] 7-k-mfor flag 1n 0flagn 3n判断每个人分到的鱼是 35筐flag为满足题意的标记变量if a[n][0]a[n][1] 7a[n][0]2a[n][1] 7a[n][2] 7-a[n][0]-a[n][1] 计算应得到的空筐数量else flag 0 不符合题意则置标记为0if flagprintf "Nod Full basket Semi--basket Empty\n"count for n 0n 3nprintf " fisher c d d d\n"Ana[n][0]a[n][1]a[n][2]运行结果It exists possible distribution plansNo1 Full basket Semi--basket Emptyfisher A 1 5 1fisher B 3 1 3fisher C 3 1 3No2 Full basket Semi--basket Emptyfisher A 2 3 2fisher B 2 3 2fisher C 3 1 3思考题晏会上数学家出了一道难题假定桌子上有三瓶啤酒癣瓶子中的酒分给几个人喝但喝各瓶酒的人数是不一样的不过其中有一个人喝了每一瓶中的酒且加起来刚好是一瓶请问喝这三瓶酒的各有多少人答案喝三瓶酒的人数分别是2人3人和6人18有限5位数个位数为6且能被3整除的五位数共有多少题目分析与算法设计根据题意可知满足条件的五位数的选择范围是100061001699996可设基础数i 1000通过计算i106即可得到欲选的数 i的变化范围是1000999 再判断该数能否被3整除程序说明与注释includeint mainlong int iint count 0 count统计满足条件的五位数的个数for i 1000i 9999iif i106 3 判断所选的数能否被3整除count 若满足条件则计数printf "count d\n"count运行结果count 2999思考题求100到1000之间有多少个其数字之和为5的整数答案104113122131140203212221230302311320401410500198除不尽的自然数一个自然数被8除余1所得的商被8除也余1再将第二次的商被8除后余7最后得到一个商为a又知这个自然数被17除余4所得的商被17除余15最后得到一个商是a的2倍求这个自然数问题分析与算法设计根据题意可设最后的商为i i从0开始取值用逆推法可以列出关系式i87 8 1 81 2i17 15 184再用试探法求出商i的值程序说明与注释includeint mainint ifor i 0i 试探商的值if i87 81 81 34i15 174逆推判断所取得的当前i值是否满足关系式若满足则输出结果printf "The required number is d\n" 34i15 174break 退出循环运行结果The required number is199320一个奇异的三位数一个自然数的七进制表达式是一个三位数而这个自然数的九进制表示也是一个三位数且这两个三位数的数码正好相反求这个三位数问题分析与算法设计根据题意可知七进制和九进制表示的这全自然数的每一位一定小于7可设其七进制数形式为kji ijk的取值分别为16 然后设其九进制表示形式为ijk 程序说明与注释includeint mainint ijkfor i 1i 7ifor j 0j 7jfor k 1k 7kif i99j9k ij7k77printf "The special number with 3 digits is"printf "ddd 7 ddd 9 d 10 \n"kjiijki99j9k运行结果The special number with 3 digits is503 7 305 9 248 10 214位反序数设N是一个四位数它的9倍恰好是其反序数求N反序数就是将整数的数字倒过来形成的整数例如1234的反序数是4321问题分析与算法设计可设整数N的千百十个位为ijkl其取值均为09则满足关系式i103j10210kl 9 l103k10210ji的ijkl即构成N程序说明与注释includeint mainint ifor i 1002i 1111i 穷举四位数可能的值if i101000i1010100i1001010i1000 i9判断反序数是否是原整数的9倍printf "The number satisfied stats condition is d\n"i若是则输出运行结果The number satisfied states condition is1089分类22求车速一辆以固定速度行驶的汽车司机在上午10点看到里程表上的读数是一个对称数即这个数从左向右读和从右向左读是完全一样的为95859两小时后里程表上出现了一个新的对称数问该车的速度是多少新的对称数是多少问题分析与算法设计根据题意设所求对称数为i其初值为95589对其依次递增取值将i值的每一位分解后与其对称位置上的数进行比较若每个对称位置上的数皆相等则可判定i即为所求的对称数程序说明与注释includeint mainint ta[5] 数组a存放分解的数字位long int kifor i 95860i 以95860为初值循环试探for t 0k 100000k 10t 从高到低分解所取i值的每位数字依次存放于a[0]a[5]中a[t] ik k10k 10if a[0] a[4] a[1] a[3]printf "The new symmetrical number kelometers isddddd\n"a[0]a[1]a[2]a[3]a[4]printf "The velocity of the car is 2f\n" i-95859 20break运行结果The new symmetrical number kelometers is95959The velocity of the car is5000思考题将一个数的数码倒过来所得到的新数叫原数的反序数如果一个数等于它的反序数则称它为对称数求不超过1993的最大的二进制的对称数23由两个平方三位数获得三个平方二位数已知两个平方三位数abc和xyz其中abcxyz未必是不同的而axbycz是三个平方二位数请编程求三位数abc和xyz问题分析与算法设计任取两个平方三位数n和n1将n从高向低分解为abc将n1从高到低分解为xyz 判断axbycz是否均为完全平方数程序说明与注释include。

(完整版)C语言10大经典实例

(完整版)C语言10大经典实例

案例一贪吃蛇游戏#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/ struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/ }snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;。

C语言实验样本

C语言实验样本

C语言实验样本(2003年)实验一:C语言运行环境 (2)实验二:数据类型及顺序结构 (3)实验三:选择结构程序设计 (6)实验四:循环结构程序设计 (8)实验五:数组 (11)实验六:字符数据处理 (12)实验七:函数(1) (15)实验八:函数(2) (16)实验九: 指针(1) (19)实验十: 指针(2) (21)实验十一:文件 (24)实验一:C语言运行环境一、实验目的:1.了解TC环境的组成2.学习TC环境的使用方法3.了解C语言程序从编辑、编译连接到运行并得到运行结果的过程二、实验内容:1.了解TC环境的组成2.进入、退出和定制TC环境3.运行演示程序4.编写程序三、实验用设备仪器及材料:计算机一台四、实验源程序第一个程序,输出字符main(){printf(“This is a Cprogram\n”);printf(“I am a student\n);}编写程序,实现求整数10,20,30的平均值main(){float a=10,b=20,c=35,x;x=(a+b+c)/3;printf("x=%f\n",x);}实验二:数据类型及顺序结构一、实验目的:(1)进一步熟悉TC环境的使用方法。

(2)学习C语言赋值语句和基本输入输出函数的使用。

(3)编写顺序结构程序并运行。

(4)了解数据类型在程序设计语言中的意义。

二、实验内容:(1)编程序,输出如下图形。

* ** * * ** * * * * ** * * * * * * *ain(){printf("* *\n");printf("* * * *\n");printf("* * * * * *\n");printf("* * * * * * * *\n");}(2)编写程序,实现下面的输出格式和结果:a= 5,b= 7,a-b=-2,a/b= 71%c1=computer,c2=comp ,c3= compA=31.19,y= -31.2,z=31.1900s=3.11900e+002,t= -31.2e+001main(){int a=5,b=7,c,d,g,y;float e,f=31.19,h;y="COMPUTER";c=a-b;e=(1.0*a/b);d=1000000*e/10000;g=(f*100+5)/10;h=g/10.0;printf("a=%3d,b=%3d,a-b=%d,a/b=%3d\%\n",a,b,c,d);printf("c1=%s,c2=%-6.4s,c3=%6.4s\n",y,y,y);printf("x=%5.2f,y= -%4.1f,z=%7.4f\n",f,h,f);printf("s=%e,t= -%5.3e\n",10*f,h);}(3) 编写程序,输入变量的x值,分别输出变量y的值,并分析输出结果。

C语言实习实例(经典版)

C语言实习实例(经典版)

目录实习步骤 (2)实习报告规范 (4)实习报告样例1最大公因数 (5)实习报告样例2 进制转换 (11)DEV C++ 调试方法简介 (18)Visual C++6.0调试方法简介 ........................................................................ 错误!未定义书签。

实验用书推荐................................................................................................. 错误!未定义书签。

预备实验1 字符串处理................................................................................ 错误!未定义书签。

预备实验2 文件读取.................................................................................... 错误!未定义书签。

预备实验3 随机数生成................................................................................ 错误!未定义书签。

预备实验4 递归函数.................................................................................... 错误!未定义书签。

预备实验5 字符串数组的查找.................................................................... 错误!未定义书签。

实验1约瑟夫环问题..................................................................................... 错误!未定义书签。

单片机C语言程序设计实训100例--基于

单片机C语言程序设计实训100例--基于
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--;);
}
}
//主程序
void main()
0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,
0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,
0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

计算机c语言实习报告(精选18篇)

计算机c语言实习报告(精选18篇)

计算机c语言实习报告(精选18篇)计算机c语言篇1软件实习硬件实习下厂实习姓名:______学号:________________班级:________________南京理工大学________________学院第一部分硬件实习(____.10.09 – ____.10.13)实习地点:校基础实验楼微机接口实验室实习内容:步进机的编程实现、a/d转换硬件实习部分考察了我们的汇编语言的掌握情况以及实际编写能力。

其中,步进电机的实现是通过编写汇编代码,经接口将信息传输到模具箱。

通过模具箱上的转动指针向左、向右或停来检验程序的正误。

原理就是,将圆划分成8段,每段两端通电流。

通过逐次为每段同电流来达到驱动指针转动,从而指针旋转。

通过电流反向就可达到反向旋转的目的。

考察了我们的汇编编写能力以及对接口技术知识的掌握,是《微机原理与接口技术》课的一次实践检验。

另外,a/d转换是要求将实验箱接收来的模拟量转换为数字量,并在显示器上显示。

在《微机原理与接口技术》课中有关于a/d转换的汇编编程,通过察看,很快就实现了该实验要求。

该部分相对简单。

在平时的学习练习中,我们多数是针对软件部分。

对于硬件部分,由于受实验器材的限制,操作较少。

这次硬件实习的经历,使我的硬件知识有了系统的组织,也使我清醒的认识到硬件知识及技能的重要性,感触良多!第二部分软件实习(____.10.23 – ____.10.26)实习地点 : 校基础实验楼软件实验室实习内容:以sql server数据库系统为核心,采用c/s结构的计算机应用系统开发(食堂饭菜销售系统)(用delphi语言开发)。

以小组(5人)为单位开发系统,分别负责:前置机、通信机、服务器、客户机1 、客户机2 。

我负责部分:担任小组组长,作系统总的需求分析,具体安排各成员的任务,以及前置机的开发。

(本报告只着重系统总体和前置机部分)食堂饭菜销售系统模拟高校学生食堂的饭菜销售、后台管理的功能。

c语言实训案例

c语言实训案例

以下是一个简单的C语言实训案例,实现了一个计算器程序,可以进行加、减、乘、除运算:c#include <stdio.h>int main() {char op;double num1, num2, result;printf("请输入运算符(+、-、*、/):");scanf("%c", &op);printf("请输入两个数字:\n");scanf("%lf %lf", &num1, &num2);switch(op) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':if (num2 == 0) {printf("除数不能为0!\n");return 0;} else {result = num1 / num2;}break;default:printf("无效的运算符!\n");return 0;}printf("%.2f %c %.2f = %.2f\n", num1, op, num2, result);return 0;}该程序首先要求用户输入运算符,然后要求用户输入两个数字。

根据用户输入的运算符,程序使用switch语句进行相应的运算,并输出结果。

如果用户输入了无效的运算符或者除数为0,程序会输出相应的错误信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录实习步骤........................................................................................................... 错误!未指定书签。

实习报告规范................................................................................................... 错误!未指定书签。

实习报告样例1最大公因数........................................................................... 错误!未指定书签。

实习报告样例2 进制转换.............................................................................. 错误!未指定书签。

调试方法简介............................................................................................... 错误!未指定书签。

6.0调试方法简介........................................................................................... 错误!未指定书签。

实验用书推荐................................................................................................... 错误!未指定书签。

预备实验1 字符串处理.................................................................................. 错误!未指定书签。

预备实验2 文件读取...................................................................................... 错误!未指定书签。

预备实验3 随机数生成.................................................................................. 错误!未指定书签。

预备实验4 递归函数...................................................................................... 错误!未指定书签。

预备实验5 字符串数组的查找...................................................................... 错误!未指定书签。

实验1约瑟夫环问题....................................................................................... 错误!未指定书签。

实验2 一元多项式的运算.............................................................................. 错误!未指定书签。

实验3 逆波兰表达式求值.............................................................................. 错误!未指定书签。

实验4 杨辉三角显示...................................................................................... 错误!未指定书签。

实验5四则运算表达式求值........................................................................... 错误!未指定书签。

实验6 .............................................................................................................. 错误!未指定书签。

实验7 优先队列与堆...................................................................................... 错误!未指定书签。

实验8 哈夫曼编/译码器................................................................................. 错误!未指定书签。

实验9 图的遍历问题...................................................................................... 错误!未指定书签。

实验10 教学计划编制问题............................................................................ 错误!未指定书签。

实验11 最短路径问题.................................................................................... 错误!未指定书签。

实验12 最小生成树问题................................................................................ 错误!未指定书签。

实验13 快速排序............................................................................................ 错误!未指定书签。

实验14 基数排序............................................................................................ 错误!未指定书签。

实验15 散列表................................................................................................ 错误!未指定书签。

实验16 自组织线性表.................................................................................... 错误!未指定书签。

实习步骤(一)问题分析和任务定义在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。

注意:本步骤强调的是做什么?而不是怎么做。

主要完成三个方面的工作:(1)分析并确定问题要处理的对象(数据)是什么。

例如:输入数据的类型、值的范围以及输入的形式。

(2)分析并确定要实现的功能是什么。

也就是说要对输入的数据进行什么样的处理。

注意:对问题中描述的需要实现的功能,应避开算法(具体的实现方法)和所涉及的数据类型,仅需对所需完成的任务做出明确的定义。

(3)分析并确定处理后的结果如何显示。

这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据;以及相应的输出结果。

(二)数据类型和系统设计当需求分析结束,明确问题要求后,开始为编写程序设计合适的数据结构和算法。

本步骤分概要设计和详细设计两步实现。

概要设计指的是,对问题描述中涉及的操作对象定义相应的抽象数据类型,并设计合适的算法;以及定义程序各个功能模块和模块之间的关系。

在这个过程中,要根据问题的功能需求综合考虑,设计时空复杂度最优的抽象数据结构和算法(注意:实现提示和给出的部分代码中以及给出了建议)。

抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体,算法思想和过程明确有效,程序结构清晰、合理、简单和易于调试。

作为概要设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),主要模块的算法思想,并画出模块之间的调用关系图。

详细设计则定义相应的物理存储结构(抽象数据类型的物理实现)并写出各基本操作的伪码算法,以及主要模块算法的具体步骤。

详细设计的结果是对数据结构和基本操作的规格说明做出进一步的求精,写出数据存储结构的类型定义,算法书写规范(采用文字性的步骤描述或者算法流程图的形式都行)。

在求精的过程中,应尽量避免陷入语言细节,不必过早描述辅助数据结构和局部变量。

(三)编码实现和静态检查在实验过程中,题目中会给出程序的部分源代码,根据实习第二步的设计结果以及源代码的提示,编码实现程序的其余部分。

编码是把详细设计的结果进一步求精为程序设计语言程序。

对于编程很熟练的读者,如果基于详细设计的伪码算法就能直接在键盘上输入程序的话,则可以不必用笔在纸上写出编码,而将这一步的工作放在上机准备之后进行,即在上机调试之前直接用键盘输入。

写出编码的程序后,在上机(编译和调试)之前,认真的静态检查是必不可少的。

多数初学者在编好程序后处于以下两种状态之一:一种是对自己的“精心作品”的正确性确信不疑;另一种是认为纠查错误是编译器的工作。

这两种态度是极为有害的。

事实上,非训练有素的程序设计者编写的程序长度超过50行时,极少不含有除语法错误以外的错误。

上机动态调试决不能代替静态检查,否则调试效率是极低的。

静态检查主要有两种方法,一是用一组测试数据手工执行程序(通常应先分模块检查);二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,在这个过程中再加入一些注解和断言。

如果程序中逻辑概念清楚,后者将比前者有效。

(四)上机准备和上机调试上机准备包括一下几个方面:(1)熟悉机器的操作系统和语言集成环境的用户手册,尤其是最常用的命令操作,以便顺利进行上机的基本活动。

(2)上机调试程序时要带一本高级语言教材或手册。

(3)掌握调试工具,考虑调试方案,设计测试数据并手工得出正确结果。

“磨刀不误砍柴工”。

相关文档
最新文档