《C语言程序设计》
实验报告
学 院:
专 业:
学 号:
姓 名:
成 绩:
课程代码: 2001301
指导教师:
实验中心: 电气信息专业试验中心
日 期:
目 录
实验总体要求
实验一………………………………………………C语言的运行环境和运行过程
实验二………………………………………………数据类型、运算符与表达式
递归函数c语言规则实验三………………………………………………程序结构(顺序、选择和循环)
实验四………………………………………………数组
实验五………………………………………………函数
实验六………………………………………………指针
实验七………………………………………………结构体
实验八………………………………………………类和对象
实验总体要求
C语言程序设计课程是一门实践性很强的课程,为了培养学生的计算机应用能力,除了课堂理论教学外,必须加强程序设计课程实验的教学环节。
1、 课程实验教学目的
通过C语言程序设计的课程实验教学,学生应具有使用计算机解决相关问题的能力,同时为学生今后学习其他计算机应用课程打下良好的程序设计基础。
⑴ 分析问题和解决问题能力的训练
课程实验教学将课本上的理论知识和实际应用有机地结合起来,达到训练学生分析问题解决实际问题的能力,提高学生应用计算机知识开发应用系统的综合能力。
⑵ 逻辑思维能力的训练
通过课程实验教学,使学生正确地掌握C语言的基本知识,较好掌握基本的程序算法,以及描述方法。培养学生在程序设计解题思路、算法的描述、编程构思等方面的计算机逻辑思维能力。
⑶ 程序设计技能的训练
通过C语言环境下的应用实例,训练学生编写程序的能力,掌握编程的思路和方法,掌握结构化程序设计的基本概念和基本技能。
通过课程实验教学,使学生掌握C程序设计语言的语法规则,数据结构的应用,掌握算法描述及相应代码描述,掌握结构化程序设计的基本方法,能熟练编写一般的应用程序。
2、 课程实验教学要求
⑴ 要求通过解题、程序设计和上机实践,加深对所学概念的理解,提倡理论与实践相结合的学习方法。
⑵ 要求学生认真进行解题分析,掌握算法描述方法,掌握编程基本技能。通过布置一定数量程序设计题目,帮助学生逐步熟悉编写程序的方法,提高程序设计能力。
⑶ 要求学生在课程实验中,努力培养发现程序错误、纠正程序错误的能力,独立完成每一次课程实验,提高编程的效率和成功率。
⑷ 要求学生在完成课程实验规定的任务外,利用课余的时间多编程,多上机实践。反对抄袭或拷贝他人的源程序。
⑸ 要求学生培养科学、严谨的学习作风,认真写好实验报告。学生在上机实践前,应事先编写好相应的源程序,准备好有关的调试数据,了解上机操作的步骤和过程,较好地完成每一次上机实验课。为了使学生能真正做到每一次课程实验有收获,做完一个实验后,要求学生必须写成完整的实验报告。
⑸实验报告模板(如下)要求手工填写,程序代码、及运行结果用附页(见本文件最后一页),打印、手写均可,程序应包含较清楚的注释,装订时附页附在每次实验报告之后。 报告所有文本、程序代码,均要求独立完成,严禁抄袭。
实验一 C语言的运行环境和运行过程
实 验 目 的 | 1、熟悉C语言运行环境Visual C++6.0集成开发环境。 2、掌握C语言程序的书写格式和C语言程序的结构。 3、掌握编辑、编译、连接和运行C程序的操作步骤。 |
实 验 环 境 | 硬件: 软件: |
实 验 内 容 | 1、有下面的C程序,目的是想计算由键盘输入的任意两个整数的积。 /*exl_1.c*/ #include (stdio.h); main() scanf(“%x,%y”,&x,%y) printf(“\n x*y=%d, x/y=%d \n”,x*y,x/y) 在编辑状态纠正上述程序中的所有错误,并用一下输入数据测试,并对结果予以解释。 (1)9, 3 (2)3, 9 (3)20,3 2、编写程序,通过函数max调用实现从键盘输入两个(或三个)整数,输出最大的一个。其中max函数分别用if-else结构和?:表达式实现。 |
实验过程及总结体会 | 1.纠错: /*exl_1.c*/ #include <stdio.h> main() { int x; int y; scanf(“%x,%y”,&x,&y) ; printf(“ x*y=%d\n, x/y=%d \n”,x*y,x/y) } (1).输入9,3 结果是27和3 (2)输入3,9 结果是27和一个异常,因为定义的都是整形,但是3/9是一个 非整形 (3)输入20,3 结果是60和一个异常 理由和(2)一样 2.程序: #include <stdio.h> main() { int x; int y; int max(x,y); } int max(a,b){ if(a>b) reture a; else reture b; } |
其 它 | 参考资料: |
(程序代码、及运行结果拷贝附后) 实验日期: 指导教师:
实验二 数据类型、运算符与表达式
实 验 目 的 | 1、熟悉和理解C语言中的基本数据类型。 2、了解基本数据类型的字节宽度和范围表示。 3、学会C语言的有关运算符,以及包含这些运算符的表达式,特别是++和--运算符的使用。 4、进一步熟悉C程序的编辑环境,能利用学习的数据类型,编制简单的C程序。 |
实 验 环 境 | 硬件: 软件: |
实 验 内 容 | 1、运算符sizeof用以测试一个数据或类型所占用的存储空间的字节数。请编写一个程序,测试输出各基本数据类型char, short, int, long, float, double所占用的存储空间大小(字节数)。 2、编写程序,测试所学过的C++语言主要运算符。例如可包含如下类似语句: printf(“\n 3+4=%d,5*6=%d,5/6=%d,5.0/6.0=%f \n”,3+4,5*6,5/6,5.0/6.0); cout<<“\n 5>6?”<<5>6<<” 9>8?”<<9>8<<10==10?”<<10==10<<endl; cout<<”\n !(5>6) =”<<!(5>6)?”TRUE”:”FALSE”<<endl; cout<<”(7>5)&&(8>5)=”<<(7>5)&&(8>5) << ”(7>5)&&(8<5)=”<<(7>5)&&(8<5) << ”(7>5)||(8<5)=”<<(7>5)||(8<5)<<endl; |
实验过程及总结体会 | 1. #include <stdio.h> void main() { char a; short b; int c; long d; float e; double f; printf(sizeof(a)); printf(sizeof(b)); printf(sizeof(c)); printf(sizeof(d)); printf(sizeof(e)); printf(sizeof(f)); } 2. include<stdio.h> main(){ cout<<“\n 5>6?”<<5>6<<” 9>8?”<<9>8<<10==10?”<<10==10<<endl; } |
其 它 | 参考资料: |
(程序代码、及运行结果拷贝附后) 实验日期: 指导教师:
实验三 程序结构(顺序、选择和循环)
实 验 目 的 | 1、掌握C语言程序输入、输出的方法和格式。 2、理解并掌握程序的顺序结构设计 3、理解并掌握程序的分支结构(if语句、switch语句)设计 4、理解并掌握程序的循环结构(for语句、while语句、do-while语句)设计 |
实 验 环 境 | 硬件: 软件: |
实 验 内 容 | 1、编写程序任意输入一个三位整数,将其反向输出。如输入数值123,输出数值321。 2、求1加至100之和(或求1至100中的奇数之和)。 3、输入某学生的成绩,经处理后给出学生的成绩等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下: E |
实验过程及总结体会 | 1. #include "stdio.h" #define BIT 3 void main() { void switchNum(char *a); char num[BIT]; printf("请输入一个%d位数的整数:",BIT); scanf("%s",num); switchNum(num); printf("\n"); printf("转化过后:%s",num); } void switchNum(char *a) { char j=0,i=BIT-1; char midNum; while(i>=j) { midNum=a[i]; a[i]=a[j]; a[j]=midNum; i--;j++; } } 2. #include "stdio.h" void main() { int Oddtotal(int num); int Total(int num); int num; int oddtotal=0; int total=0; printf("请输入范围:1——"); scanf("%d",&num); oddtotal=Oddtotal(num); total=Total(num); printf("奇数之和为:%d\n",oddtotal); printf("总和为:%d",total); } int Oddtotal(int endNum)//奇数之和 { int i=1,sum=0; for(i;i<=endNum;i++) { if(i%2==0) { sum+=i; } } return sum; } int Total(int endNum)//总和 { int i=1,sum=0; for(i;i<=endNum;i++) { sum+=i; } return sum; } 3. #include "stdio.h" void main() { char JudgeLevel(int score); char level; int score=0; printf("请输入成绩100制:"); scanf("%d",&score); level=JudgeLevel(score); printf("分数等级为:%c",level); } char JudgeLevel(int score)//判断等级 { if(score>=90)return 'A'; if(score>=80)return 'B'; if(score>=70)return 'C'; if(score>=60)return 'D'; return 'E'; } |
其 它 | 参考资料: |
(程序代码、及运行结果拷贝附后) 实验日期: 指导教师:
实验四 函数
实 验 目 的 | 1、掌握C语言函数定义及调用的规则。 2、理解参数传递的过程。 |
实 验 环 境 | 硬件: 软件: |
实 验 内 容 | 1.编写一个将华氏温度转换为摄氏温度的程序,转换公式为C=(5/9)×(F-32)。 要求:①要求将转换公式C=(5/9)×(F-32)的功能用一个子函数来实现,并在主函数中对其进行函数调用。 ② 给出华氏温度的测试数据,写出相应的摄氏温度运行结果。分析结果是否正确,并分析产生错误的原因是什么?并对程序进行修改。 2、编写程序,通过函数max和min调用实现从键盘输入三个整数,分别输出最大、最小的数。 3、用一个函数实现求л近似值,并在主函数调用它输出л近似值。 4、用递归函数调用,求1+2+3+…+100的值。 |
实验过程及总结体会 | |
其 它 | 参考资料: |
(程序代码、及运行结果拷贝附后) 实验日期: 指导教师:
实验五 数组
实 验 目 的 | 1、掌握数组定义、初始化及基本用法; 2、掌握字符数组的使用; 3、掌握与数组有关的算法(例如排序算法); 4、掌握二维数组的定义、赋值和输入输出的方法。 |
实 验 环 境 | 硬件: 软件: |
实 验 内 容 | 1、一个含10个整数元素的数组,试出其中的最大、最小元素及其下标,并分别输出最大、最小元素值及其下标值。 2、定义一个二维数组存储三位学生的考试成绩,每位学生有两科考试的成绩,编写程序分别取出二维数组里的元素值,经过累加之后计算并输出每位学生的总成绩。 3、输入两个字符串,比较这两个字符串是否相同,并输出比较的结果。(提示:可以调用系统库函数strcmp进行比较) 4、对1题中的一维数组用选择法进行排序并输出。 |
实验过程及总结体会 | 1.#include <stdio.h> #include <stdlib.h> int main(){ int i; void Compare(int a[]); int a[10]; for(int i=0;i<10;i++){ scanf("%d",&a[i]); } Compare(a); getchar(); scanf("%d",i); } void Compare(int a[]){ int i,j; int max=0,min=0; int maxIndex,minIndex; for(i=0;i<10;i++){ if(max<a[i]){ max=a[i]; maxIndex=i; } else{ min=a[i]; minIndex=i; } } printf("最大值是:%d\n",max); printf("最大值索引是:%d\n",maxIndex); printf("最小值是:%d\n",min); printf("最小值索引是:%d\n",minIndex); } 2. #include <stdio.h> #include <stdlib.h> int main(){ int i,j; int studentScore[3][2]; int sum[3]; for(i=0;i<3;i++){ for(j=0;j<2;j++){ if(j==0){ printf("请输入第%d名学生第一门课的成绩:\n",i+1); scanf("%d",&studentScore[i][j]); } if(j==1){ printf("请输入第%d名学生34第二门课的成绩:\n",i+1); scanf("%d",&studentScore[i][j]); } } } for(i=0;i<3;i++){ sum[i]=0; for(j=0;j<2;j++){ sum[i]+=studentScore[i][j]; } printf("第%d名学生成绩为%d\n",i+1,sum[i]); } scanf("%d",i); } 3. #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char str1[10],str2[10]; int i; int Compare(char str1[],char str2[]); printf("请输入第一个字符串(长度为10):"); gets(str1); printf("请输入第二个字符串(长度为10):"); gets(str2); Compare(str1,str2); scanf("%d",i); } int Compare(char str1[],char str2[]) { int i; i=strcmp(str1,str2); if(i>0){ printf("第一个字符大于第二个字符",i); } if(i<0){ printf("第一个字符小于第二个字符",i); } if(i=0){ printf("第一个字符等于第二个字符",i); } } 4. #include <stdio.h> #include <stdlib.h> int main(){ int i; void xu(int a[]); int a[10]; for(int i=0;i<10;i++){ scanf("%d",&a[i]); } xu(a); for(i=0;i<10;i++){ printf("排序后:"); printf("%d\n",a[i]); } scanf("%d",i); } void xu(int a[]){ int i,j,max,t; for(i=0;i<=10;i++){ max=i; for(int j=i+1;j<=10;j++){ if(a[j]>a[max]){ max=j; } if(max!=i){ t=a[max]; a[max]=a[i]; a[i]=t; } } } } |
其 它 | 参考资料: |
(程序代码、及运行结果拷贝附后) 实验日期: 指导教师:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论