《C语言程序设计》实验大纲.docx
- 文档编号:30392104
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:23
- 大小:22.73KB
《C语言程序设计》实验大纲.docx
《《C语言程序设计》实验大纲.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》实验大纲.docx(23页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》实验大纲
《C语言程序设计》实验大纲
学时:
18学时
开课对象:
信息与计算科学专业四年制本科生
课程类别:
专业必修课
一、说明
(一) 实验教学目标
实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高和解决问题的能力。
因此,当我们着手做一个实验的时候,必须明确实验的目的,以保证达到课程所指定的基本要求。
在写实验报告时,要进一步确认是否达到了预期的目的。
(二) 实验要求
实验的目的是要通过解决一些具体问题来达到的。
在教材中,每一部分都安排了多个实验题目,根据教学安排、进度、实验条件、可提供的学时及学生的基础等因素,可以选择其中的几个或全部。
因此,在实验报告中,一般都提出了一些具体的要求,其中有些具体要求是为了达到实验目的而提出的。
因此,在实验内容中,不仅要写清楚具体的实验题目,还应包括具体要求。
(三) 实验课时安排
序 号
实验名称
课时
必(选)做
实验一
C语言程序的输入、编译、连接与运行
4
必做
实验二
实验选择结构的程序设计
8
必做
实验三
实现循环结构、数组与字符串
8
必做
实验四
模块化程序设计、函数的实现
6
必做
实验五
指针
4
必做
实验六
自定义数据类型和位操作运算
4
必做
实验七
输入、输出磁盘文件操作
2
必做
二、实验内容
实验一 C语言程序的输入、编译、连接与运行
实验目的:
1.熟练利用文本编辑程序输入、修改C程序。
2.掌握和理解C程序的基本结构。
3.掌握C程序的编译连接与运行的过程。
4.掌握和理解本实验中出现的一些基本的C语言语句。
5.体会算法在程序设计中的重要性。
实验内容:
1.编辑简单源程序以文件形式写入磁盘;
2.分别运行源程序;
实验二 实验选择结构的程序设计
实验目的:
1.进一步掌握各种表达式的使用、
2.利用IF语句实现选择结构
3.利用switch语句实现多分支选择结构
4.练习调试与修改程序
实验内容:
1.计算一元二次方程ax²+bx+c=0
2.有一函数
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)
写一程序,输入x,输出相应的y值。
3.编写一个打印菲波那契数列的前20个数的程序。
每行打印5个数据。
菲波那契数列是一个正整数序列,它的第一、二个数分别是0和1。
以后,每个数都是前两个数的和。
实验三 实现循环结构、数组与字符串
实验目的:
1.进一步联系选择结构的程序设计。
2.练习并掌握实现循环结构的三种方法
3.练习并掌握选择结构与循环结构的嵌套
4.练习调试与修改程序
实验内容:
1.已知一组数据如下:
6,3,42,23,35,71,98,67,56,38
编写程序,把它们按从小到大的次序排列起来。
2.求矩阵的转置矩阵,A矩阵的转置矩阵B是这样的矩阵,其元素bij=aji。
3.有两个字符串S1和S2,编写程序把它们连接起来。
实验四模块化程序设计、函数的实现
实验目的:
1.掌握C语言中使用函数的方法
2.掌握通过“值传送”等用函数的方法
3.掌握递归函数的设计方法
4.进一步练习阅读检查与调试修改C程序的方法
实验内容:
1.用Newton-Rapleon法求一元三次方程ax³+bx²+cx+d=0的根
2.编写程序,求字符串的逆
实验五指针
实验目的:
1.掌握指针类型的运算和应用。
实验内容
1.利用指针实现,有n个人围成一圈,顺序排号。
从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
2.利用指针实现从键盘输入不等长任意顺序的10串字符串,然后按照从小到大的顺序排列后输出到屏幕上。
实验六自定义数据类型和位操作运算
实验目的:
1.掌握结构类型的数据和位操作运算的应用。
实验内容:
1.有5个学生,输入他们的学号、姓名、数学成绩和英语成绩,要求用结构实现。
2.对一个8进制数进行移位,先输入该8进制数,然后输入移位的位数,且正数表示右移,负数表示左移。
实验七输入、输出磁盘文件操作
实验目的:
1.练习动态分配与释放数组空间的方法
2.体会模型设计在程序设计中的应用
实验内容:
1.建立一个磁盘文件,将文件的内容读出并打印。
《C语言与程序设计》实验指导书
一、微型计算机系统配置
1.硬件
PC系列微型计算机。
2.软件
windows操作系统。
TurboC3.0软件一套。
实验一C语言程序的输入、编译、连接与运行
1.实验目的
掌握在IDE环境下运行C语言程序的操作方法。
2.实验内容
按下面的步骤进行实验
(1)开机后在DOS状态下,启动TurboC的IDE环境;
(2)观察菜单带上的子菜单;
(3)分别输入下列源程序;
源程序1:
/*EX1-1*/
main()
{
printf(“Let’sbegintolearnCprogramming!
\n”);
return0;
}
源程序2:
/*EX1-2*/
main()
{
inta,b,sum;
a=10;b=15;
sum=a+b;
printf(“%d+%d=%d\n”,a,b,sum);
return0;
}
(4)分别把源程序以文件形式写入磁盘;
(5)分别运行两个源程序;
(6)打印源程序清单。
实验二实验选择结构的程序设计
1.实验目的
掌握分支与循环程序设计的方法和有关语句。
2.实验内容
实验题2.1计算一元二次方程ax²+bx+c=0
注意不同的根有不同的输出。
程序如下:
/*EX2-1*/
#include
#include
main()
{
floata,b,c,d,x1,x2,re,im;
printf(“Inputa,b,c:
\n”);
scanf(“%f,%f,%f”,&a,&b,&c);
printf(“theequation”);
if(a==0)
printf(“isnotquadratie”);
else
d=b*b-4.0*a*c;
if(d==0)
printf(“hastwoequalroots:
%8.3fln”,-b/(2.0*a));
else
if(d>0)
{
x1=(-b+sqrt(d))/(2.0*a);
x2=(-b-sqrt(d))/(2.0*a);
printf(“hasdistinetrealrools:
%8.3fand%8.3f\n”,x1,x2);
}
else
{
re=-b/(2.0*a)
im=sqrt(-d)/(2.0*a);
printf(“hascomplexroots:
\n”);
printf(“%8.3f+%8.3f\n”,re,im);
printf(“%8.3f-%8.3f\n”,re,im);
}
return0;
}
实验题2.2有一函数
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)
写一程序,输入x,输出相应的y值。
程序如下:
/*EX2-2*/
#include
main()
{
intx,y;
printf(“输入x:
”);
scanf(%d”,&x);
if(x<1)
{
y=x;
printf(“x=%d,y=x=%d\n”,x,y);
}
elseif(x<10)
{
y=2*x-1;
printf(“x=%d,y=2*x-1=%d\n”,x,y);
}
else
{
y=3*x-11;
printf(“x=%d,y=3*x-11=%d\n”,x,y);
}
return0;
}
实验题2.3编写一个打印菲波那契数列的前20个数的程序。
每行打印5个数据。
菲波那契数列是一个正整数序列,它的第一、二个数分别是0和1。
以后,每个数都是前两个数的和。
程序如下:
/*EX2-3*/
#include
main()
{
inta=0,b=1,c,i;
printf(“%d%d”,a,b);
for(i=3;i<=20,i++)
{
c=a+b;
printf(“%d”,c);
if(i%5==0)
printf(“\n”);
a=b;b=c;
}
return0;
}
实验三实现循环结构、数组与字符串
1.实验目的
掌握有关数组和字符串的程序设计方法。
2.实验内容
实验题3.1已知一组数据如下:
6,3,42,23,35,71,98,67,56,38
编写程序,把它们按从小到大的次序排列起来。
程序如下:
/*EX3-1*/
#include
#defineN10
main()
{
inta[N]={6,3,42,23,35,71,98,67,56,38};
inti,j,t;
printf(“Thearraybeforesorted:
”);
for(i=0;i printf(“%4d”,a[i]); for(i=0;i<9;i++) { for(j=i+1;j<10;j++) { if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i printf(“%4d”,a[i]); returno; } 实验题3.2求矩阵: 123 A= 456 的转置矩阵,A矩阵的转置矩阵B是这样的矩阵,其元素bij=aji。 程序如下: /*EX3-2*/ #include main() { inta[2][3]={{1,2,3},{4,5,6}}; intb[3][2],i,j; printf(“ArrayA: \n”); for(i=0;i<=1;i++) { for(j=0;j<=2;j++) printf(“%5d”,a[i][j]); printf(“\n”); } for(i=0;i<=1;i++) for(j=0;j<=2;j++) b[j][i]=a[i][j]; printf(“ArrayB: \n”); for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf(“%5d”,b[i][j]); printf(“\n”); } returno; } 实验题3.3有两个字符串S1和S2,编写程序把它们连接起来。 程序如下: /*EX3-3*/ #include main() { charS1[80],S2[40]; inti=0,j=0; printf(“\nInputString1: ”); scanf(“%s”,S1); printf(“\nInputString2: ”); scanf(“%s”,S2); while(S1[i]! =‘10’) i++; while(S2[j]! =‘10’) S1[i++]=S2[j++]; S1[i]=‘10’; printf(“\nTheconnectedstringis: %s”,S1); return0; } 实验四模块化程序设计、函数的实现 1.实验目的 掌握函数的应用和编写带函数的程序的方法。 2.实验内容 实验题4.1用Newton-Rapleon法求一元三次方程 ax³+bx²+cx+d=0的根。 程序如下: /*EX4-1*/ #include #include floatsolut(float,float,float,float); main() { floata,b,c,d; printf(“\nInputa,b,c,d: ”); scanf(“%f,%f,%f,%f”,&a,&b,&c,&d); printf(“\x=%8.3f”,solut(a,b,c,d)); return0; } floatsolut(floata,floatb,floatc,floatd) { floatx=1.0,x0,f,f1; do{ x0=x; f=((a*x0+b)*x0+c)*x0+d; f1=(3.0*a*x0+2.0*b)*x0+c; x=x0-f/f1; } while(fabs(x-x0)>=le-6); return(x); } 实验题4.2编写程序,求字符串的逆(即和原来的存储次序相反)。 程序如下: /*EX4-2*/ #include charinverse(charstr[80]); main() { charS[80]; printf(“\nInputastring: ”); scanf(“%s”,S); inverse(S); printf(“\Theinversedstringis: %s”,S); return0; } charinverse(Char*str) { chart; inti,j; for(i=0,j=strlen(str);i { t=str[i]; str[i]=str[j-1]; str[j-1]=t; } return0; } 实验五指针 1、实验目的: 掌握指针类型的运算和应用。 2、实验内容: 实验题5.1: 有n个人围成一圈,顺序排号。 从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 程序如下: #definenmax50 main() { inti,k,m,n,num[nmax],*p; printf("pleaseinputthetotalofnumbers: "); scanf("%d",&n); p=num; for(i=0;i *(p+i)=i+1; i=0; k=0; m=0; while(m { if(*(p+i)! =0)k++; if(k==3) {*(p+i)=0; k=0; m++; } i++; if(i==n)i=0; } while(*p==0)p++; printf("%disleft\n",*p); } 实验题5.2: 字符串排序。 程序源代码 main() { char*str1[20],*str2[20],*str3[20]; charswap(); printf("pleaseinputthreestrings\n"); scanf("%s",str1); scanf("%s",str2); scanf("%s",str3); if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf("afterbeingsorted\n"); printf("%s\n%s\n%s\n",str1,str2,str3); } charswap(p1,p2) char*p1,*p2; { char*p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); } 实验六自定义数据类型和位操作运算 1.实验目的 掌握结构类型的数据和位操作运算的应用。 2.实验内容 实验题6.1有5个学生,输入他们的学号、姓名、数学成绩和英语成绩,要求用结构实现。 程序如下: /*EX6-1*/ #include #defineN5 structstudent { charnum[5]; charname[10]; intmath; intenglish; floataver; } stu[N]; main() { inti; for(i=0;i { printf(“\nInputthescoreofstudent%d: \n”,i+1); printf(“Number: ”); scanf(“%s”,stu[i].num); printf(“Name: ”); scanf(“%s”,stu[i].name); printf(“Mathematics: ”); scanf(“%d”,&stu[i].math); printf(“English: ”); scanf(“%d”,&stu[i].english); stu[i].aver=(stu[i].mathtstu[i].english)/2.0; } printf(“NumberNameMathEnglishAverage\n”); for(i=0;i { printf(“%5s%10s”,stu[i].num,stu[i].name); printf(“%6d%9d”,stu[i].math,stu[i].english); printf(“%12.2f\n”,stu[i].aver); } return0; } 实验题6.2对一个8进制数进行移位,先输入该8进制数,然后输入移位的位数,且正数表示右移,负数表示左移。 程序如下: /*EX6-2*/ #include unsignedmoveright(unsigned,int); unsignedmoveleft(unsigned,int); main() { unsigneda; intn; printf(“Inputanoctalnumber: ”); scanf(“%0”,&a); printf(“\nInputthebitnumberofrotation: ”); scanf(“%d”,&n); if(n>0) { moveright(a,n); printf(“\nRotateright: %0\n”,moveright(a,n)); } else { n=-n; moveleft(a,n); printf(“\nRotateleft: %0\n”,moveleft(a,n)); } return0; } unsignedmoveright(unsigneda,intn) { unsignedt; t=(a>>n)|(a<<(16-n)); return(t); } unsignedmoveleft(unsigneda,intn) { unsignedt; t=(a>>(16-n)|(a< return(t); } 实验七输入、输出磁盘文件操作 1.实验目的 掌握建立磁盘文件和读写磁盘文件的基本方法。 2.实验内容 实验题7.1建立一个磁盘文件,其内容是0~90°之间每隔5°的正弦值。 程序如下: /*EX5-1*/ #include #include #definePI3.14159 main() { FILE*fp; floatS[19]; inti,a; if((fp=fopen(“fsin”,“wb”))==NuLL) { printf(“Cannotopenfile.\n”); exit (1); } for(i=0,a=-5;i<19;i++) { a+=5; S[i]=Sin(a*PI/180.0); } if(fwrite(S,Sizeof(s),1,fp)! =1) printf(“Fileerror.”); fclose(fp); return0; } 实验题7.2把实验题7.1所建立的文件的内容读出并打印。 程序如下: /*EX5-2*/ #include main() { FILE*fp; floatS[19]; inti,a; if((fp=fopen(“fsin”,“rb”))==NuLL) { printf(“Cannotopenfile.\n”); exit (1); } if(fread(S,Sizeof(S),1,fb)! =1) printf(“Fileerror.”); printf(“\ni,sin(i)\n”); for(i=0,a=-5;i<19;i++) { a+=5; printf(“%2d%11.4f\n”,a,S[i]); } fclose(fp); return0; } 《C语言程序设计》实验报告规范 实验题目 日期 班级 姓名 学号 指导教师 一、实验目的 二、实验内容 1、程序的功能; 2、输入输出的要求; 3、测试数据。 三、实验要求 四、程序流程图 五、调试分析 1、调试中遇到的问题及对问题的解决方法; 2、实验的感想和收获。 六、源程序(带注释)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 实验 大纲