C语言程序设计实验指导书内蒙古民族大学资料.docx
- 文档编号:25234178
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:87
- 大小:127.08KB
C语言程序设计实验指导书内蒙古民族大学资料.docx
《C语言程序设计实验指导书内蒙古民族大学资料.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验指导书内蒙古民族大学资料.docx(87页珍藏版)》请在冰豆网上搜索。
C语言程序设计实验指导书内蒙古民族大学资料
程序设计基础基础实验指导书
机械工程学院
内蒙古民族大学
2013年02月
实验一熟悉C语言编程环境
【实验目的】
1、熟悉TC运行环境
2、练习简单C程序的编写
3、熟练掌握C程序的上机运行步骤
4、能够编写简单的C程序。
5、掌握程序的调试方法,能够找出并改正程序中的语法错误。
二.实验内容:
1.编写课本例题1.2,例题1.4
2.编写课后习题1.10,将答案写在课本上
在TC环境中输入上面的代码后,先编译、连接,再保存,然后再运行。
具体操作步骤如下所示:
(1)编译
(2)连接
(3)保存F2
(4)运行CTRL+F9
(5)运行结果ALT+F5
按任意键返回
注意:
1、第
(1)步和第
(2)步可以合起来操作,使用快捷键F9
2、程序比较大时,最好边输入代码,边保存,以防止意外情况的发生。
选做题:
1.输出字符串
main()
{printf(“Cprogram\n”);
printf(“HelloWorld!
\n”);
}
2.已知圆的半径,求圆的面积
#definePI3.14
main()
{intr=5;
floats;
s=PI*r*r;
printf(“area=%f\n”,s);
}
3.求任意两个数中的最大值
main()
{inta,b,max;
printf(“Inputtwonumbers:
”);
scanf(“%d,%d”,&a,&b);
max=a;
if(max
printf(“max=%d”,max);
}
【思考题】
1、计算机能够直接执行C语言中扩展名为.c的源程序文件、扩展名为.obj的目标程序和扩展名为.exe的可执行文件,对吗?
2、在编译和连接程序时,系统显示5个错误信息,那么,程序中一定有5处语法错误吗?
3、程序编译和连接时没有错误信息,那么,程序一定是正确的吗?
实验二基本数据处理
【实验目的】
1、掌握算术表达式和赋值表达式的使用
2、掌握基本输出函数的使用
3、能够编写简单的数据处理程序
【实验内容】
一、试着编写下列程序
【实验一】求正方形的面积和周长
源程序:
#include
main()
{
inta=6,zhou,mian;/*用类型名int定义三个基本型整型变量*/
zhou=4*a;/*计算周长*/
mian=a*a;/*计算面积*/
printf("周长=%d,面积=%d\n",zhou,mian);/*用printf函数输出整型数格式控制为:
%d*/
}
运行结果:
周长=24,面积=36
举一反三
【2-1】求正方形的周长和面积,正方形的周长由键盘输入。
【例2-2】任意输入一个华氏温度求对应的摄氏温度。
计算公式如下:
,式中:
C表示摄氏温度,f表示华氏温度。
源程序:
#include
main()
{
doublef,c;/*定义两个双精度的实型数*/
printf(“Enterf:
”);/*输入提示*/
/*调用scanf函数给双精度的实型变量赋值,格式控制为%lf,变量名前要加地址操作符&*/
scanf("%lf",&f);
c=5*(f-32)/9;/*根据公式求摄氏度*/
printf("\nf=%f,c=%f\n",f,c);
}
运行结果:
Enterf:
80
f=80.000000,c=26.666667
Enterf:
100
f=100.000000,c=37.777778
二、程序改错(选做题)
不允许增加行也不允许删除行,也不得更改程序的结构。
1、已知a=3,b=5,输出a+b的和值
源程序:
#include“stdio.h”
main()
{/********found********/
inta=3;b=5;sum;
sum=a+b;
printf(“sum=%d\n”,sum);}
2、任意输入两个实型数,输出它们的积。
源程序:
#include“stdio.h”
main()
{
doublex,y;
printf(“在键盘上给x,y赋值:
”);
/********found********/
scanf(“%lf%lf”,x,y);
printf(“%f,%lf\n”,x*y,x*y);
}
3、分别输出234的每一位数字。
源程序:
#include“stdio.h”
main()
{
intx=234,a,b,c;
a=x/100;
/********found********/
b=x%100;
/********found********/
c=x/10;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
【思考题】
1、在定义变量时,变量名sum和Sum是同一个变量吗?
2、两个数取余数,余数的符号和被除数符合相同吗?
取余符号两端的数可以是任意类型的数据吗?
3、用scanf函数给变量赋值时,变量名的前面为什么必须加&(即地址操作符)?
4、给一个双精度实型变量以%f形式赋值,会得到正确的值吗?
实验三计算分段函数
【实验目的】
1、使用if语句编写简单分支结构程序。
2、正确书写关系表达式
【实验内容】
一、试着编写下列程序
【例3-1】输出a=3,b=9中大的数。
源程序:
#include"stdio.h"
main()
{
inta=3,b=9,max;
/*使用if-else分支结构*/
if(a>b)
max=a;
else
max=b;
printf("max=%d\n",max);
}
实验内容
【实验一】任意输入一个三位数,输出这个三位数的百位、十位和个位,并且计算十位百位个位的和。
【实验二】求1到100的累加和
(选作):
任意输入一个整数,如果能被3整除,输出此数;否则,输出“不是3的倍数”。
【例3-2】计算分段函数,
y=
(x≥0)
3x3+1(x<0)
源程序:
#include"stdio.h"
#include"math.h"/*程序中调用了数学库函数,需包含头文件math.h*/
main()
{
doublex,y;
printf(“Enterx:
”);
scanf("%lf",&x);
if(x>=0)
y=sqrt(x);/*调用开方函数sqrt()计算*/
else
y=3*pow(x,3)+1;/*调用幂函数pow()计算*/
printf("\nx=%.2lf,y=%f\n",x,y);/*%.2lf保留两位小数输出*/
}
运行结果:
Enterx:
3
x=3.00,y=1.732051
Enterx:
-4
x=-4.00,y=-191.000000
举一反三
【3-2】编写程序,输入x,利用分段函数,计算并输出y值。
|x|(x≤0)
y=
ex(x>0)
提示:
需要调用求实型数绝对值函数fabs和指数函数exp。
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。
1、任意输入一个数,如果是奇数输出“奇数”,否则,输出“偶数”。
源程序:
#include“stdio.h”
main()
{
intx;
printf(“Enterx:
”);
scanf(“%d”,&x);
/********found********/
ifx%2!
=0
printf(“奇数”);
else
printf(“偶数”);
}
输入输出示例(共运行2次)
第一次运行:
Enterx:
10
偶数
第一次运行:
Enterx:
11
奇数
2、输入x,计算并输出下列分段函数y的值(保留一位小数)。
y=
(x≠0)
0(x=0)
源程序:
#include“stdio.h”
main()
{
intx;
doubley;
printf(“Enterx:
”);
scanf(“%d”,&x);
/********found********/
if(x!
=0);
/********found********/
y=1/x;
else
y=0;
printf(“y=%.1f\n”,y);
}
输入输出示例(共运行2次)
第一次运行:
Enterx:
10
y=0.1
第二次运行:
Enterx:
0
y=0.0
【思考题】
1、else可以省略吗?
if-else语句用于编写什么程序段?
实验四指定次数的循环
【实验目的】
1、熟悉掌握for语句的使用。
2、熟悉掌握指定次数的循环程序设计方法。
【实验内容】
一、试着编写下列程序
【例4-1】求
源程序:
#include"stdio.h"
main()
{
/*变量sum用来放累加和,和值从0开始;i用来取1~5中的数,同时也控制循环次数*/
inti,sum=0;
for(i=1;i<=5;i++)/*循环体执行5次*/
sum=sum+i;/*反复累加5次i的值*/
printf("sum=%d\n",sum);
}
运行结果:
sum=15
实验内容
【实验一】任意输入三个数,输出一个最大数;
【例4-2】求1-2+3-4+。
。
。
。
。
。
n的值
源程序:
#include
main()
{
inti,f=1,n,sum=0;/*变量f用来存放正负号*/
printf("Entern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{sum=sum+i*f;
f=-f;/*改变正负号*/
}
printf("\nsum=%d\n",sum);
}
运行结果:
Entern:
5
sum=3
【实验二】求
的值
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。
1、改正下列程序中的错误,计算表达式1+2+3+。
。
。
。
。
+100的值。
源程序:
#include“stdio.h”
main()
{/********found********/
inti,sum;
for(i=1,i<=100,i++)
sum=sum+i;
printf(“sum=%d\n”,sum);
}
运行结果(改正后程序的运行结果)
sum=5050
2、输出三位数中能够被300整除的数。
源程序:
#include
main()
{
inti;
/********found********/
for(i=100;i<=999;i++);
if(i%300==0)
printf("%5d",i);
}
运行结果:
300600900
【思考题】
1、for语句用于编写什么样的程序段?
2、如何执行for循环?
实验五分支结构程序设计
【实验目的】
1.掌握基本输入输出函数、赋值语句的使用方法。
2.熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计。
3.熟练掌握switch语句中break语句的使用。
【实验内容】
一、试着编写下列程序
【实验一】输入x,计算并输出下列分段函数y的值。
x3(0 y=lnx(5≤x<10) |x|(x<0) 源程序: #include #include main() { floatx,y;/*定义两个单精度的实型变量*/ printf("Enterx: "); scanf("%f",&x);/*给单精度变量赋值,格式控制为: %f*/ if(x>0&&x<5)/*不能表示为: 0 y=pow(x,3); elseif(x>=5&&x<10) y=log(x); elseif(x<0) y=fabs(x); printf("\nx=%f,y=%f\n",x,y); } 举一反三 【实验二】输入两个正整数m和n,求它们的最大公约数和最小公倍数 #include main() { inta,b,r,m,n; scanf("%d,%d",&a,&b); r=a%b; m=a*b; while(r! =0) { r=a%b; a=b; b=r; } n=m/a; printf("%d,%d",a,n); } (选做)任意输入year,判断是否是闰年,判断闰年的条件: 能被4整除但不能被100整除,或者能被400整除。 源程序: #include main() { intyear; printf("Enteryear: "); scanf("%d",&year); if(year%4==0&&year%100! =0||year%400==0) printf("yes"); else printf("no"); } } 二、程序改错 不允许增加行也不允许删除行,也不得更改程序的结构。 1、计算下面分段函数的值 x+5(x<0) f(x)=x2-x+3(0≤x<10) 4x-7(x≥10) 源程序: main() { intx,y; /********found********/ scanf(“%d”,x); if(x<0)y=x+5; /********found********/ elseif(x<10)y=x^2-x+3; /********found********/ elsey=4x-7; printf(“y=%d”,y) } 2、给变量b和c赋值,然后输出它们的值。 源程序: main() { inta=2,b,c; if(a>1) /********found********/ b=1;c=3; else b=2; printf(“%d,%d\n”,b,c); } 实验六循环结构程序设计 (一) 【实验目的】 1.熟悉使用while循环语句的结构、执行过程。 2.学会确定循环条件和循环体。 3.理解死循环的概念。 【实验内容】 一、试着编写下列程序 1用多重循环打印以下图案: * *** ***** ******* ***** *** * main() { inti,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(""); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(""); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); } } 2编程求水仙花数,水仙花数的要求是: abc=a3+b3+c3。 #include"stdio.h" #include"math.h" main() { inti,a,b,c; for(i=100;i<=999;i++) { a=i/100; b=i/10%10; c=i%10; if(pow(a,3)+pow(b,3)+pow(c,3)==i)/*或if(a*a*a+b*b*b+c*c*c==i)第二行命令行去掉*/ printf("%5d",i); } } 二、程序改错 不允许增加行也不允许删除行,也不得更改程序的结构。 1、下述程序按由大到小的顺序输出10以内的正整数。 源程序: main() { intk=10; while(k>0) /********found********/ printf(“%d,”,k);k=k-1; } 2、修改下列程序,使之能够正确输出1~20之间的数的和(输出一次和值)。 源程序: main() { inti=1,sum=0; /******found******/ while(i<=20); {sum+=i; i++; } printf(“%d\n,”,sum); } 三、程序填空 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 1、从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。 源程序: main() { floatx,amax,amin; scanf("%f",&x); amax=x;amin=x; while(【1】) {if(x>amax)amax=x; if(【2】)amin=x; scanf("%f",&x); } printf("\nmax=%f\nmin=%f\n",amax,amin); } 2、从键盘输入多个字符,直到遇到回车换行符为止,分别统计其中字母、数字字符和其他字符的个数。 源程序: #include main() {charch;intletter=0,digit=0,other=0; while(【1】) if((ch>='a'&&ch<='z')||(ch>=‘A’&&ch<=‘Z’)) letter++; elseif(ch>='0'&&ch<='9') digit++; else other++; printf("letter=%d,digit=%d,other=%d",letter,digit,other); } 【思考题】 1、循环体超过一条语句为什么必须用花括号括起来? 2、while循环的执行过程? 实验七循环结构程序设计 (二) 【实验目的】 1.熟练掌握do-while循环语句的使用。 2.学会确定循环条件和循环体。 3.掌握while循环语句和do-while循环语句的区别。 【实验内容】 一、试着编写下列程序 【例7-1】求1+3+5+7+。 。 。 。 。 。 +n的和。 源程序: #include"stdio.h" main() { inti=1,n,sum=0; printf("Entern: "); scanf("%d",&n); do { sum+=i; i++; }while(i<=n);/*先执行一次循环体,在判断循环终止条件*/ printf("sum=%d,i=%d\n",sum,i); } 运行结果: sum=15,i=6 举一反三 【实验一】求 的值。 提示: n为任意的一个正整数。 【例7-2】输入一个整数,求它的位数。 例如,123的位数是3。 源程序: #include"stdio.h" main() { inti=0,n; printf("Entern: "); scanf("%d",&n); do { n=n/10; i++;/*i用来统计位数*/ }while(n);/*while(n)等价于while(n! =0)*/ printf("i=%d\n",i); } 举一反三 【实验二】输入一个整数,求它的位数以及各位数字之和。 例如,345的位数是3,各位数字之和是12。 #include intmain(void) {intn,s=0,i=0,a=0; printf("Inputaninteger: "); scanf("%d",&n); while(n! =0) {s+=(n%10); n/=10; i+=1; } printf("%d%d\n",s,i); return0;、} 二、程序改错 不允许增加行也不允许删除行,也不得更改程序的结构。 1、输入一个正整数n,再输入n个整数,输出最小值。 源程序: #include"stdio.h" main() { inti=1,n,min,x; printf("Entern: "); scanf("%d",&n); scanf("%d",&x); min=x; do { /********found********/ if(min scanf("%d",&x); i++; /********found********/ }while(i>n); printf("min=%d\n",min); } 2、从输入的正整数中选5个数进行输出,要求这些数都是5的倍数。 源程序: main() { inta,i=0; scanf("%d",&a); do {/********found********/ if(i! =5&&a%5=0) {printf("%d\n",a); i++;} scanf("%d",&a); /********found********/ }while(i>0); } 三、程序填空 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 1、下面程序的功能是计算正整数2345的各位数字之和。 源程序: main() { intn=2345,sum=0; do {sum=sum+【1】; n=n/10; }while(n); printf("sum=%d\n",sum); } 2、从低位开始取出长整型变量s奇数位上的数,依次构成一个新数放在t中。 例如: 当s中的数为: 7654321时,t中的数为: 7531。 源程序: main() { longs,a,i=1,t=0; scanf("%ld",&s); do {a=s%10; s=【1】; t=a*i+t; i=【2】; }while(s) printf("%ld",t); } 【思考题】 分析下列两个程序的输出结果,结果为何不同? 程序一: #include"stdio.h" main() { inti=6,sum=0; while(i<=5) { sum+=i; i++; } printf("sum=%d,i=%d\n",sum,i); } 程序二: #include"stdio.h" main() { inti=6,sum=0; do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 指导书 内蒙古 民族大学 资料