11C程序设计上机指导.docx
《11C程序设计上机指导.docx》由会员分享,可在线阅读,更多相关《11C程序设计上机指导.docx(32页珍藏版)》请在冰豆网上搜索。
![11C程序设计上机指导.docx](https://file1.bdocx.com/fileroot1/2022-11/23/bd939e78-3717-4b20-9afe-c0ab90dd3b7c/bd939e78-3717-4b20-9afe-c0ab90dd3b7c1.gif)
11C程序设计上机指导
C语言程序设计
实
验
指
导
书
电子工程学院
2009-11
实验一C程序的运行环境和编辑、调试、运行简单C程序
一、实验目的
1.了解TurboC的基本操作方法,学会独立使用该系统。
2.掌握在该系统上如何编辑、编译、运行一个C程序。
二、实验内容及步骤
1.进入C的工作环境
1)在Windouws环境下:
“开始”→“程序”→“MS-DOS”
屏幕上进入MS-DOS窗口
2)在Dos环境下:
键入命令c:
\>cdc:
\tc↙
c:
\tc>tc↙
屏幕上出现TurboC的工作环境
2.熟悉TurboC的工作环境
了解Edit窗口与Message窗口
了解主菜单的8个菜单项
FileEditCompileProjectOptionDebugbreak/watch
3.输入并运行一个简单的程序
File→New
输入源程序:
main()
{
printf("ThisisaCprogram.\n");
printf("OK\n");
}
按F9进行编译和连接,观察屏幕上显示的编译信息。
如果出现出错信息,则应找出原因并改正。
按Run→Run(或按Ctrl+F9)编译、连接、运行一起完成。
按Run→Userscreen(或按Alt+F5)察看运行结果。
按任一键从用户屏切换回TC窗口。
4.输入并编辑第二个C程序
File→New
输入源程序:
main()
{
inta,b,sum;
a=123;b=456;
sum=a+b;
printf("sumis%d\n",sum);
}
编辑、运行、调试该程序。
5.编辑、运行、调试自己编写的程序(至少一个程序)
如:
输入上底、下底和高,计算梯形面积。
观察屏幕上显示的编译信息。
如果出现出错信息,则应找出原因并改正。
用File→Save(或F2)保存程序(程序名为a1.c)
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验的结果和收获。
实验二数据类型、运算符和表达式
一、实验目的
1.掌握C语言的各种类型及其定义方法,赋值方法。
2.掌握不同类型之间赋值的规律。
3.学会使用各种算术运算符,特别是自加自减运算符。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容及实验步骤
1.练习一个有关字符和整型的程序。
main()
{
charc1,c2;
c1=97;
c2=98;
printf("%c%c\n",c1,c2);/*以字符形式输出*/
printf("%d%d\n",c1,c2);/*转换为整数形式输出*/
}
2.转义字符的练习。
main()
{
printf("---------------*\r*\n");
printf("\tOA\bK\n");
printf("#---------------#\n");
printf("\tABC\tDEF\tGHI\n");
printf("\t123\t456\t789\n");
}
对照输出,理解转义字符的含义。
3.自加自减程序的练习。
main()
{
inta=5,b=3,c1,c2;
a++;
--b;
c1=++a+b;
c2=c1---a/b;
b=++a+b+c1--+c2;
printf("a=%d\nb=%d\nc1=%d\nc2=%d\n",a,b,c1,c2);
}
4.各种类型混合运算的例子
main()
{
inta=7,b=3;charc1=’a’,c2=66;
floatx=12.25;
doubley=1.3333333333;
longd=5432789;
a=x+b*x+y/2-d%(c1-c2);
printf("a=%d,b=%d,c1=%cn",a,b,c1);
printf("d=%ld,x=%f,y=%10.2\n",d,x,y);
}
5.上机改错题:
请指出以下C程序的错误所在
(1)
main();
floatr,s;
r=5.0;
s=3.14159*r*r;
printf("%f\n",s)
(2)
main
{
floata,b,c,v;
a=2.0;b=3.0;c=4.0
v=a*b*c;
printf("%f\n",v)
}
6.调试、运行自己编写的程序。
(1)已知圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。
(2)输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9*(f-32).
三、实验报告要求
写明
1.实验目的
2.实验内容及步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验中的问题和收获
i++和++i的区别,i--和--i的区别
各种类型混合运算时的类型转换
实验三顺序和分支结构的程序设计
一、实验目的
1.掌握C语言中使用最多的一种语句——赋值语句的使用方法。
2.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
3.熟练掌握if语句和switch语句。
二、实验内容及实验步骤
1.掌握各种格式转换符的正确使用方法
(1)输入程序
main()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedintp,q;
a=61;b=62;
c1=’a’;c2=’b’;
f=3157.890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
(2)运行此程序并分析结果。
(3)改用scanf函数输入数据而不用赋值语句,scanf函数如下:
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
输入的数据如下:
61,62,a,b,3.56,-6.87,3157,890121,0.123456789,50000,-60000,37678,40000↙
(说明:
lf和ld格式符分别用于输入double型和long型数据)分析运行结果。
(4)在(3)的基础上将printf语句改为:
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);
printf("f=%f,g=%f\nm=%d,n=%d\np=%d,q=%d\n",f,g,m,n,p,q);
运行程序。
2.字符的输入输出
#include
main()
{
chara,b;
a=’g’;
b=getchar();
putchar(a);
putchar(b);
}
3.以下程序多处有错。
若指定必须按下面的形式输入数据,并且必须按下面指定的形式输出数据,请对该程序做相应的修改。
main
{doublea,b,c,s,v;
printf(inputa,b,c:
\n);
scanf("%d%d%d",a,b,c);
s=a*b;
v=a*b*c;
printf("%d%d%d",a,b,c);
printf("s=%f\n",s,"v=%d\n",v);
}
当程序执行时,屏幕的显示和要求输入形式如下:
inputa,b,c:
2.02.03.0此处的2.02.03.0是用户输入的数据
a=2.000000,b=2.000000,c=3.000000此处是要求的输出形式
s=4.000000,v=12.000000
4.编辑、运行、调试自己编写的程序
给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。
事先编好程序,要求分别用if语句和switch语句实现。
运行程序,并检查结果是否正确。
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验的结果和收获。
实验四循环结构的程序设计
一、实验目的
1.熟练掌握while循环语句的应用。
2.熟练掌握do—while循环语句的应用。
3.熟练掌握for循环语句的应用。
4.理解三者的区别和联系。
二、实验内容及实验步骤
1.求5!
main()
{
intn,t;
n=1;
t=1;
while(t<=5)
{
n=n*t;
t=t+1;
}
printf("%d",n);
}
2.将以上程序用do—while语句改写。
3.求和s=1!
+3!
+5!
main()
{
ints=0,t,i,j;
for(i=1;i<=3;i++)
{
t=1;
for(j=1;j<=2*i-1;j++)
t=t*j;
s=s+t;
}
printf("%d",s);
}
4.求和s=3+33+333
main()
{
ints=0,t=3,i;
for(i=1;i<=3;i++)
{
s=s+t;
t=10*t+3;
}
printf("%d",s);
}
5.打印下列图案
*
***
*****
*******
main()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
6.测试、运行自己编写的程序。
(1)编写程序,求1-3+5-7+…-99+101的值。
(2)编写程序,求e的值,e≈1+1/1!
+1/2!
+1/3!
+1/4!
+…。
(3)编写程序,统计输入的一行中小写字母的个数。
(4)打印100-999之间所有的“水仙花数”。
“水仙花数”是一个三位数,其各位数立方和等于该数本身。
(5)一个数如果恰好等于它的因子之和,这个数就称为完数。
求1000之内的所有完数。
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验的结果和收获。
实验五数组
(一)
一、实验目的
1.掌握一维数组的定义、赋值和输入输出的方法。
2.掌握二维数组的定义、赋值和输入输出的方法。
二、实验内容及实验步骤
1.在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。
分析:
C中数组长度必须是确定大小,即指定N的值。
#defineN10
main()
{
inta[N],i,j,temp;
printf("pleaseinput%dnumbers\n",N);
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=0;j{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("thearrayaftersort:
\n");
for(i=0;iprintf("%5d",a[i]);
}
2.有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
main()
{
intmax,i,j,r,c;
staticinta[3][4]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;i++)
if(a[i][j]>max)
{
max=a[i][j];
r=i;
c=j;
}
printf("max=%d,row=%d,colum=%d\n",max,r,c);
}
3.测试、运行自己编写的程序。
(1)编写程序,将数组中所有奇数放在另一个数组中返回。
(2)输入若干有序数放在数组中。
然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。
请对插在最前、插在最后、插在中间三种情况运行程序,以便验证程序是否正确。
(3)求两个矩阵之和。
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验的结果和收获。
实验六数组
(二)
一、实验目的
掌握字符数组的使用。
二、实验内容及实验步骤
1.输入一串字符,计算其中空格的个数。
#include"stdio.h"
#include"string.h"
main()
{
charc[30];
inti,sum=0;
gets(c);
for(i=0;iif(c[i]=='')
sum=sum+1;
printf("空格数为:
%d\n",sum);
}
2.测试、运行自己编写的程序。
(1)编写程序,将两个字符串连接起来,不要使用strcat函数。
(2)编写程序,将两个字符数组s2中的全部字符复制到字符数组s1中,不使用strcpy函数。
复制时,’\0’也要复制过去。
’\0’后面的字符不复制。
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.编译过程中出现的错误信息。
5.总结讨论本次实验的结果和收获。
实验七C程序的函数
(一)
一、实验目的
1.掌握自定义函数的一般结构及定义函数的方法。
2.掌握形参、实参、函数原型等重要概念。
3.掌握函数声明、函数调用的一般方法。
二、实验内容及实验步骤
1.求三角形面积函数。
编写一个求任意三角形面积的函数,并在主函
数中调用它,计算任意三角形的面积。
参考程序
/*定义和使用求三角形面积函数的程序*/
#include"math.h"
#include"stdio.h"
floatarea(float,float,float);
main()
{
floata,b,c;
printf("请输入三角形的三个边长值:
\n")
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0)
printf("area=%-7.2f\n",area(a,b,c));
}
/*以下是计算任意三角形面积的函数*/
floatarea(floata,floatb,floatc)
{
floats,area_s;
s=(a+b+c)/2.0;
area_s=sqrt(s*(s-a)*(s-b)*(s-c));
return(area_s);
}
2.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main()
{
intx,y;
printf("%d\n",sum(x+y));
intsum(a,b);
{
inta,b;
return(a+b);
}
}
3.测试、运行自己编写的程序。
(1)编写函数,对传送过来的三个数选出最大数和最小数,并通过形参传回调用函数。
(2)写出两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
两个整数由键盘输入。
(3)写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.思考题的解决方法。
5.总结讨论本次实验的结果和收获。
实验八C程序的函数
(二)
一、实验目的
1.掌握自定义函数的一般结构及定义函数的方法。
2.掌握形参、实参、函数原型等重要概念。
3.掌握函数声明、函数调用的一般方法。
二、实验内容及实验步骤
1.菜单程序。
编写一个菜单程序,运行后首先在屏幕显示如下菜单,
当输入数值1后,调用显示“&”图案的函数程序;输入数值2后,调用显示“$”图案的函数程序;输入数值3后结束程序。
**********************************
*Menusection*
*1.Design(&)*
*2.Design($)*
*3.Exit*
**********************************
参考程序
/*菜单程序*/
#include"stdio.h"
voiddesign1();
voiddesign2();
main()
{
intop;/*以下代码生成菜单*/
printf("\n*************************************");
printf("\n*Menusection*");
printf("\n*1.Design(&)*");
printf("\n*2.Design($)*");
printf("\n*3.Exit*");
printf("\n*************************************");
printf("\nPleaseenterselection:
");
scanf("%d",&op);
if(op==1)
design1();
elseif(op==2)
design2();
}
/*以下是显示&图案的函数*/
voiddesign1()
{
inti;
charstr[31]="&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&";
for(i=1;i<10;i++)
puts(str);
}
/*以下是显示$图案的函数*/
voiddesign2()
{
inti,j;
for(i=1;i<10;i++)
{
for(j=1;j
putchar('');
for(j=1;j<30;j++)
putchar('$');
printf("\n");
}
}
2.测试、运行自己编写的程序。
(1)编写函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
(2)编写函数,判断一个字符串是否是回文。
若是回文函数返回值为1;否则函数返回值为0。
回文是顺读和倒读都是一样的字符串。
(3)用递归法将一个整数n转换成字符串。
(4)写一函数,输入一个十六进制数,输出相应的十进制数。
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.思考题的解决方法。
5.总结讨论本次实验的结果和收获。
实验九编译预处理
一、实验目的
1.掌握宏定义的规则,领会带参数宏定义和函数调用的区别.
2.了解文件包含命令的功能和使用规则。
3.了解条件编译的特点和功能。
二、实验内容及实验步骤
1.调试运行例9.1,例9.2,例9.3,例9.4。
2.利用条件编译实现:
如果输入两个实数,则交换后输出;如果输入的是三个实数,则只输出其中最大的数.
三、实验报告要求
写明:
1.实验目的
2.实验内容与步骤
3.编写的程序(题目,经调试、运行后正确的程序)
4.思考题的解决方法。
5.总结讨论本次实验的结果和收获。
实验十C程序的指针
(一)
一、实验目的
1.掌握指针和指针变量的概念。
2.掌握简单指针变量的定义和基本使用方法。
3.熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。
4.了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。
5.了解指针与字符串的关系,能熟练使用指针处理字符串。
二、实验内容及实验步骤
1.用指针访问简单变量。
从键盘输入三个整数,要求设三个指针变量p1,p2,p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。
参考程序
/*用指针访问简单变量的程序*/
#include"stdio.h"
main()
{
inta,b,c,temp;
int*p1,*p2,*p3;
printf("请输入三个整数值(a,b,c):
\n");
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;/*使指针p1指向简单变量a*/
p2=&b;/*使指针p2指向简单变量b*/
p3=&c;/*使指针p3指向简单变量c*/
if(*p1<*p2)
{
temp=*p1;*p1=*p2;*p2=temp;
}
if(*p1<*p3)
{
temp=*p1;*p1=*p3;*p3=temp;
}/*至此p1指向了三个数中的最大数*/
if(*p2<*p3)
{
temp=*p2;*p2=*p3;*p3=temp;
}/*至此p3指向了最小数,p2指向了中间数*/
printf("%d,%d,%d\n",*p3,*p2,*p1);
}
①运行程序,任意输入三个整数(之间以逗号分隔),察看并分析程序运行结果。
②运行程序,按由小到大的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。
③运行程序,按由大到小的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。
2.用指针法在一维有序数组中插入数据。
如下是具有10整