实 习 报 告
实习地点:201机房
实习时间:2014.12.1——2014.12.6 实习项目:单片机C语言编程实训 指导老师:骆
乐 姓
名:
班
级:电信3121
一、 实习内容 1.计算字符的ASCII码
编写一个程序,在终端输入一个字符,输出它的ASCII码。 解题思路:通常我们输出一个字符一般用printf("%c",c);的形式,因为输出格式规定的是"%c",因此表示以字符的形式输出,所以我们看到的是相对应的ASCII码的字符形式。
用char定义字符a,a的值为任意值。输出结果a=%d。 源代码:
#include int main() { char c; scanf("%c",&c); printf("Ascii=%d\nDCF14",c); getch(); } 程序截图:
2.嵌套if-else语句的妙用
学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办
法是:小羽60分为E类;60分至70分(不含70分)为D类;70分至80分(不含)为C类;80分至90分(不含)为B类;90分以上为A类。设计一个程序。对输入的成绩进行等级划分。
解题思路:先把头文件和主函数输入。定义score为整型变量,定义grade为字符型变量。定义score为任意值scanf(“%d”,score)。使用多分支条件语句,判断趁机的等级。
源代码:
#includevoid main () { int score; char grade; scanf("%d",&score); if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else if(score>=60) grade='D'; else grade='E'; printf("score=%d,grade=%c,\nDCF 14",score,grade); getch();
}
程序截图:
3.判断日期
输入一个日期(年月日),输出这是某年的第几天。 源代码:
#include "stdio.h" void main() { int year,month,day; int cday; scanf("%d %d %d",&year,&month,&day); switch(month) { case 1: cday = 0; break; case 2: cday = 31; break; case 3: cday = 31+28; break; case 4:
cday = 31+28+31; break; case 5: cday = 31+28+31+30; break;
case 6: cday = 31+28+31+30+31; break; case 7: cday = 31+28+31+30+31+30; break; case 8: cday = 31+28+31+30+31+30+31; break; case 9: cday = 31+28+31+30+31+30+31+31; break; case 10: cday = 31+28+31+30+31+30+31+31+30; break; case 11: cday = 31+28+31+30+31+30+31+31+30+31; break;
case 12:
cday = 31+28+31+30+31+30+31+31+30+31+30;
break; } cday += day;
if( (year % 4 ==0 && year % 100 !=0 || year % 400 == 0) && month > 2) { cday += 1; } printf("%d,\n DCF 14 ",cday);
getch(); }
程序截图:
4.打印特殊图案
请设计一个程序,实现在屏幕上输出一个下面的图案 解题思路:直接输入编程,但要注意*间的空格。 源代码:
#includevoid main() { printf("
* \n * * * \n* * * * *\n ,DCF 14 \n"); getch(); }
程序截图:
5.求两个数的最大公约数和最小公倍数
编写一个程序计算两个正整数的最大公约数和最小公倍数
源代码:
#include
int main(int argc,int *argv[]) { int num1,num2,temp; int a,b; a > b; printf("please input 2 number:"); scanf("%d,%d",&num1,&num2); if (num1 < num2) { temp = num1; num1 = num2; num2 = temp; } a = num1; b = num2; while (b) { temp = a % b; a = b; b = temp; }
printf("the zuidagongyuehsu:%d,the zuixiaogongbeishu:%d\n",a,num1 * num2 / a); printf("%d\n,dcf 14 \n"); system("pause"); return 0; getch(); }
程序截图:
6.猴子吃桃问题
有一只猴子第一天摘下若干个桃子,当即吃掉了一半,又多吃了一个;第二天又将剩下的桃子吃了一半,有多吃了一个;按照这样的吃法每天都吃前一天剩下的桃子的一半又一个。到了第10天,就只剩一个桃子。问题:这只猴子第一天摘了多少个桃子。 源代码:
#include
void main() { int day,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n dcf 14",x1); getch(); }
程序截图:
7.谁在说谎
3个嫌疑犯在法官面前各执一词,甲说:已在说谎;已说:甲在说谎;丙说:甲已两人都在说谎。法官为了难,甲乙丙三人到底谁在说谎,睡说的是真话呢?
源代码:
#include
int main(int argc, char *argv[]) {
int a,b,c;
for(a=0; a<2; a++)
for(b=0; b<2; b++)
for(c=0; c<2; c++)
if((a&&!b || !a&&b) && (b&&!c || b&&c) && (c &&a+b == 0 || !c&&a+b != 0))
printf("j told a %s\n",a?"truth":"lie");
printf("y told a %s\n",b?"truth":"lie");
printf("b told a %s\n",c?"truth":"lie");
printf("%d\n dcf 14\n" );
getch(); }
程序截图:
实 习 报 告
实习地点:201机房
实习时间:2014.12.1——2014.12.6 实习项目:单片机C语言编程实训 指导老师:骆
乐 姓
名:
班
级:电信3121
一、 实习内容 1.计算字符的ASCII码
编写一个程序,在终端输入一个字符,输出它的ASCII码。 解题思路:通常我们输出一个字符一般用printf("%c",c);的形式,因为输出格式规定的是"%c",因此表示以字符的形式输出,所以我们看到的是相对应的ASCII码的字符形式。
用char定义字符a,a的值为任意值。输出结果a=%d。 源代码:
#include int main() { char c; scanf("%c",&c); printf("Ascii=%d\nDCF14",c); getch(); } 程序截图:
2.嵌套if-else语句的妙用
学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办
法是:小羽60分为E类;60分至70分(不含70分)为D类;70分至80分(不含)为C类;80分至90分(不含)为B类;90分以上为A类。设计一个程序。对输入的成绩进行等级划分。
解题思路:先把头文件和主函数输入。定义score为整型变量,定义grade为字符型变量。定义score为任意值scanf(“%d”,score)。使用多分支条件语句,判断趁机的等级。
源代码:
#includevoid main () { int score; char grade; scanf("%d",&score); if(score>=90) grade='A'; else if(score>=80) grade='B'; else if(score>=70) grade='C'; else if(score>=60) grade='D'; else grade='E'; printf("score=%d,grade=%c,\nDCF 14",score,grade); getch();
}
程序截图:
3.判断日期
输入一个日期(年月日),输出这是某年的第几天。 源代码:
#include "stdio.h" void main() { int year,month,day; int cday; scanf("%d %d %d",&year,&month,&day); switch(month) { case 1: cday = 0; break; case 2: cday = 31; break; case 3: cday = 31+28; break; case 4:
cday = 31+28+31; break; case 5: cday = 31+28+31+30; break;
case 6: cday = 31+28+31+30+31; break; case 7: cday = 31+28+31+30+31+30; break; case 8: cday = 31+28+31+30+31+30+31; break; case 9: cday = 31+28+31+30+31+30+31+31; break; case 10: cday = 31+28+31+30+31+30+31+31+30; break; case 11: cday = 31+28+31+30+31+30+31+31+30+31; break;
case 12:
cday = 31+28+31+30+31+30+31+31+30+31+30;
break; } cday += day;
if( (year % 4 ==0 && year % 100 !=0 || year % 400 == 0) && month > 2) { cday += 1; } printf("%d,\n DCF 14 ",cday);
getch(); }
程序截图:
4.打印特殊图案
请设计一个程序,实现在屏幕上输出一个下面的图案 解题思路:直接输入编程,但要注意*间的空格。 源代码:
#includevoid main() { printf("
* \n * * * \n* * * * *\n ,DCF 14 \n"); getch(); }
程序截图:
5.求两个数的最大公约数和最小公倍数
编写一个程序计算两个正整数的最大公约数和最小公倍数
源代码:
#include
int main(int argc,int *argv[]) { int num1,num2,temp; int a,b; a > b; printf("please input 2 number:"); scanf("%d,%d",&num1,&num2); if (num1 < num2) { temp = num1; num1 = num2; num2 = temp; } a = num1; b = num2; while (b) { temp = a % b; a = b; b = temp; }
printf("the zuidagongyuehsu:%d,the zuixiaogongbeishu:%d\n",a,num1 * num2 / a); printf("%d\n,dcf 14 \n"); system("pause"); return 0; getch(); }
程序截图:
6.猴子吃桃问题
有一只猴子第一天摘下若干个桃子,当即吃掉了一半,又多吃了一个;第二天又将剩下的桃子吃了一半,有多吃了一个;按照这样的吃法每天都吃前一天剩下的桃子的一半又一个。到了第10天,就只剩一个桃子。问题:这只猴子第一天摘了多少个桃子。 源代码:
#include
void main() { int day,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n dcf 14",x1); getch(); }
程序截图:
7.谁在说谎
3个嫌疑犯在法官面前各执一词,甲说:已在说谎;已说:甲在说谎;丙说:甲已两人都在说谎。法官为了难,甲乙丙三人到底谁在说谎,睡说的是真话呢?
源代码:
#include
int main(int argc, char *argv[]) {
int a,b,c;
for(a=0; a<2; a++)
for(b=0; b<2; b++)
for(c=0; c<2; c++)
if((a&&!b || !a&&b) && (b&&!c || b&&c) && (c &&a+b == 0 || !c&&a+b != 0))
printf("j told a %s\n",a?"truth":"lie");
printf("y told a %s\n",b?"truth":"lie");
printf("b told a %s\n",c?"truth":"lie");
printf("%d\n dcf 14\n" );
getch(); }
程序截图:
设计题目及要求设计题目及要求设计题目及要求设计题目及要求
1.综合应用实例——学生成绩管理 编写一个菜单驱动的学生成绩管理程序。实现如下管理功能:
(1) 能输入并显示 n 个学生的 m 门考试科目的成绩、总分和平均分。
(2) 按总分进行排序。
(3) 按学号进行排序。
(4) 任意输入一个学号,能显示该学生的姓名、各门功课的成绩
(5) 将输入的学生成绩数据保存到文件中。
(6) 从文件中读出学生成绩数据。
具体要求如下:
1 )先用静态的数据结构(结构体数组)来存储和管理 n 个学生的学号、姓名、成绩等信息,进行编程。
2 )排序函数是一个具有多种排序方式的、通用的、排序程序,即不仅可以实现成绩的升序排序,还可以实现成绩的降序排序。
3 )程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不会中断程序的执行,程序具有一定的健壮性。
4 )输出菜单形式如下:
1.输入学生记录
2.浏览学生记录
3.修改学生记录
4.排序 0.退出 请选择(0-4):
5) 排序菜单形式如下: 排序方式:1.按总分升序排序 2.按总分降序排序3.按学号排序 0.返回主菜单 请选择:
二二二
二、、、、算法分析及实现步骤算法分析及实现步骤算法分析及实现步骤算法分析及实现步骤
总体算法分析的思路就是用调用函数来实现每个小程序的作用,首先是确定头文件,定义学生成绩结构体类型,用结构体函数实现。然后在函数执行过程中调用主菜单函数,紧接着被调用函数返回一个值给主函数,由返回来的值确定主函数应该执行下面的哪个步骤,再用一个while语句控制下面的几个步骤的循环,里面再嵌套switch语句来控制对每个小菜单程序的执行。例如:当调用函数返回“1”时,经过switch语句的判断之后就会执行相应的程序,最后,又会返回到主菜单程序中。其它的都一样。当调用函数返回的值是“4”时,此时因为排序里面还有一个排序的子菜单,所以此时这里我又用了一个switch语句来实现对排序程序的控制,也就是说在switch语句里面再嵌套switch语句。对排序程序进行的控制。等到跳出排序程序的时候,其它的都和之前的选择那样。其中,浏览每个学生信息的函数先计算出每个学生的平均成绩然后用for语句来实现每个学生信息的循环输入。修改学生信息的函数里面也用到了for语句,先找到相同的学号,然后在修改后循环执行。后来的排序程序都选用冒泡法来执行。当然一切程序都是从主函数开始执行。
三三三
三、、、、源程序代码源程序代码源程序代码源程序代码
#include
struct student//定义学生成绩结构体类型定义学生成绩结构体类型定义学生成绩结构体类型定义学生成绩结构体类型
{
intno;charname[8];
floateng,phy,math,sum,ave;};
int menu(student s[],int n)//主菜单函数主菜单函数主菜单函数主菜单函数
{
int k;
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cin>>k;
returnk;} void Input(student s[],int n)//输输输输入入入入函数函数函数函数
{
int i;
cout<
for(i=0;i{
cout<>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math; s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;}}
void Ave(student s[],int n)//浏览每个学生浏览每个学生浏览每个学生浏览每个学生信息的信息的信息的信息的函数函数函数函数
{
int i; for(i=0;i{ s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;
}
cout<
for(i=0;icout<
}
int Sort(student s[],int n)//排序的子菜单排序的子菜单排序的子菜单排序的子菜单函数函数函数函数
{
int y;
cout<
cout<
cout<
cout<
cin>>y;
returny;
}
void change(student s[],int n)//修改学生信息的函数修改学生信息的函数修改学生信息的函数修改学生信息的函数
{
int i,j;
cout<
cin>>j;
for(i=0;i{
cout
cout<>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math; s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;
}}
voidzpxs(student s[],int n)// 按总分升序按总分升序按总分升序按总分升序排序排序排序排序的函数的函数的函数的函数
{
int i,j;studenttemp; for(i=0;i{
s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;}
for(i=0;i{ for(j=0;js[j+1].sum)
{ temp=s[j]; s[j]=s[j+1]; s[j+1]=temp;
}}
cout<
for(i=0;icout<
}
voidzpxj(student s[],int n)//按总分降序排序按总分降序排序按总分降序排序按总分降序排序的函数的函数的函数的函数
{
int i,j;studenttemp; for(i=0;i{s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;}
for(i=0;i{ for(j=0;jfor(i=0;icout<
voidxhpxs(student s[],int n)//按学号升序排序按学号升序排序按学号升序排序按学号升序排序的函数的函数的函数的函数
{int i,j;studenttemp; for(i=0;ifor(i=0;i{for(j=0;js[j+1].no) {temp=s[j]; s[j]=s[j+1];s[j+1]=temp;}}cout<
for(i=0;icout<
void main()//主函数主函数主函数主函数
{ int i,g; studentstu[3];while (i){i=menu(stu,3); switch(i) {case 1:Input(stu,3);cout<
cout<
cout<
cout<
四、、、、实训总结实训总结实训总结实训总结通过这两个礼拜的实训练习,让我收获很多,在实训的第一节课上,老师给我们一个关于学生成绩管理程序的执行文件,然后告诉我们它有什么功能,一一演示给我们看。最后对我们说我们这两个礼拜的实训作业就是运用我们之前所学过的知识来写出这个程序的源程序代码。在此之前我们都惊呆了,都说不会做。可是在老师悉心的教导下,我们先开始写好自己对这个题目的思路,然后一步一步往下做,一个一个程序的写。在做完题后我自己觉得其实正如老师所说的那样,那些知识我们都学过的,只是我们欠缺对知识的整合能力。虽然在完成作业的过程中遇到了很多不懂的地方,但是在老师的殷切指导下以及与同学的交流中,我最后还是完成了实训作业。让我的知识又得到了很大一步的提升,真希望以后多让我们做这种作业。这样的话我觉得学到的知识会更多,动手能力也提升的很快。
湖北轻工职业技术学院 《C语言程序设计》实验报告
实验十一:函数
班 级: ___________10计管_________________ 姓 名: ___________胡高______________ 学 号: ___________1003011138________________ 日 期: ____________2011-5-29________________
一、实验目的和要求
1、理解数组引入的意义及作用;
2、掌握一维数组的基本思想和基本用法;
3、掌握使用一维数组的基本算法:排序与查找。
二、实验主要仪器和设备 计算机一台,Turbo C环境。
三、实验内容
请将该实验报告重新命名为“实验11-学号[姓名]”,如“实验11-66[张三]”
1、P145 填空题2(2)
2、P145 上机操作题 3(5)
四、实验原始纪录 实验1 程序的设计界面。(Alt+PrintScreeninclude SysRq拷贝当前窗口)
程序代码。(此处写代码,不是图片。
#include void main() {
void swap();
extern int a,b;
a=3;b=10;
swap();
printf("a=%d,b=%d\n",a,b);
}
int a,b;
void swap()
{
int temp;
temp=a;a=b;b=temp;
}
实验2 程序的设计界面。
程序代码。
五、实验结果及分析
实验1运行结果图。
实验2运行结果图。
六、实验总结与思考(主要写一些在实验过程中,遇到的问题、所犯的错误,以及是如何发现纠正的。大约100至200字左右。)
本次试验的内容是考察数组的引用、基本算法等,但是总体感觉有点问题。有的地方不知道如何下手
目 录
特别注意,打开视图菜单-文档结构图观察文档结构。 目录由WORD菜单中插入-引用-目录自动生成并更新,不需要手工生成菜单。
本模板仅说明格式,内容由指导老师决定,不用按这份目录内容编写实训报告。
具体目录见文档要求。以下部分仅供参考。
目 录........................................................................................................................ 1
一、实训的目的与要求................................................................................................ 1
二、题目说明................................................................................................................ 2
三、总体设计................................................................................................................ 2
3.1.软件模块结构图........................................................................................... 2 3.2.程序流程图................................................................................................... 3
四、详细设计和实施.................................................................................................... 3
4.1 XXXX模块 .....................................................................................................
3 4.2
4.3
五、遇到的问题和解决方法........................................................................................ 4
六、实训总结................................................................................................................ 4
七、参考文献................................................................................................................ 4 附录(源程序代码).................................................................................................... 5
一、实训的目的与要求
(正文为宋体,五号字 行间距为21) 中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国中华人民共和国
二、题目说明
(正文为宋体,五号字 行间距为21) 题目参照任务书中有关描述
三、总体设计
3.1.软件模块结构图(以下图仅供样式参考)
图1-1 软件模块结构图
3.2.程序流程图(以下图仅供样式参考):
四、详细设计和实施
(正文为宋体,五号字 行间距为21 ) 4.1 模块1 ………(可以写一些关键程序代码,另外截一些界面图并说明实现了什么功能,以证明功能实现了) 每一个界面,必须有 (1)功能简介 (2)界面截图一张 (3)界面关键代码和描述 每一个界面说明作为独立的一小节。(在文档说明中有样例)
五、遇到的问题和解决方法
(正文为宋体,五号字 行间距为21 ) 1. 2. 3. …………
六、实训总结
(正文为宋体,五号字 行间距为21 )
七、参考文献
[1] 权明富,齐佳音,舒华英.客户价值评价指标体系设计[J].南开管理评论,2004,7(3):17-18. [2] 刘小洪,邹鹏. 商业银行客户关系价值管理模型研究[J].管理科学,2005,18(3):57-60. 附录(源程序代码)