大一C语实验
更新时间:2023-08-20 16:17:01 阅读量: 高等教育 文档下载
大一C语实验
第3章 实 验 安 排
实验1 C实验环境与C程序初步
一、目的和要求
1.熟悉C程序运行环境。
2.初步了解运行一个C程序的过程(编辑、编译、连接和运行)。
3.通过运行和模仿编写简单的C程序,初步了解C源程序的结构和特点。 二、实验内容
1.熟悉计算机中安装的C编译集成环境,新建一个C文件,输入下面的程序,编译并执行。学习运行程序的过程,并分析运行结果。
#include <stdio.h> void main( ) {
int a=2,b=3,c; c=a+b;
printf("sum=%d\n",c); }
2.输入下面的程序,改正错误,并对其进行编译、链接和运行。
#include <stdio.h> void mian( ) {
printf("This is a C program.\n'); }
3.理解下面程序的功能,编译并运行程序。输入两个整数,分析并验证程序的运行结果。
#include <stdio.h>
int sum(int x,int y) {
int z; z=x+y; return(z); }
void main( ) {
int a,b,c;
scanf("%d%d",&a,&b); c=sum(a,b);
printf("sum=%d\n",c); }
大一C语实验
提示: ① 这是一个包含自定义函数sum( )的程序。 ② 注意scanf( )函数的数据输入格式,输入的两个整数之间可以用空格或者回车或者制表符隔开。
4.编写一个程序,输出以下信息:
******************** Hello everyone! ********************
提示:
本题可以使用一个或三个输出函数printf( )来实现输出三行信息。要注意的是printf( )函数一次可以输出多个数据或字符,“\n”用来表示回车换行。
5.编写一个程序,输出图4.1中的图形。
6.编写一个程序,输出图4.2中的图形。
M
$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
M M M M M M M M M M M M M M M M M M M M M M M M
图4.1 图4.2
7.参照上面的第3题,在程序中编写一个自定义函数,用于计算三个整数的乘积。
实验2 顺序结构设计1—简单C程序设计
一、目的和要求
1.掌握顺序程序设计方法。
2.熟悉C语言中的基本数据类型,掌握各种类型变量和常量的使用方法。 3.进一步掌握编写程序和调试程序的方法。 二、实验内容
1.编写一个程序,输入一个天数,求这个天数包含几周零几天。 提示: ① 利用除法算术运算符“/”(整除运算,结果取商的整数部分)和“%”(整除取余运算,结果取两数相除的余数)。
② 本题的输入数据有一个,输出数据有两个,因此需要定义3个变量来保存这些数据,并且都应定义为整数类型。
2.编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。 提示: ① 字符型数据可以和整型数据相互运算。
大一C语实验
② 大写字母的ASCII码加32等于对应的小写字母的ASCII码。
3.分析下列程序的功能,上机编译调试并运行,注意观察程序的编写风格。
#include <stdio.h>
void main( ) { float h,w,s; printf("Please input two integers:\n"); scanf("%f%f",&h,&w); s=h*w; printf("s=%.2f\n",s); }
提示: ① 为加强界面的有好,此程序输入数据和输出结果加了一定的提示信息。 ② 若将第6行改为:
scanf("%f,%f",&h,&w);
再编译和运行,注意数据输入时的格式有什么不同。
4.编写程序,从键盘输入半径r,求对应圆的周长、面积,及对应圆球的表面积、球体积。要求输入输出要有提示信息,输出数据保留小数点后两位数字。
5.输入并编译下列程序:
#include <stdio.h> void main() { int a,b; float x,y; char c1,c2; scanf("a=%d b=%d",&a,&b); scanf("%f%e",&x,&y); scanf("%c%c",&c1,&c2); printf("a=%d,b=%d\n",a,b); printf("x=%f,y=%e\n",x,y); printf("c1=%c,c2=%c\n",c1,c2); }
运行时分别按以下方式输入数据,观察输出结果,分析原因,总结输入数据的规律和容易出错的地方。
① a=3,b=7,x=8.5,y=71.82,A,a↙ ② a=3 b=7 x=8.5 y=71.82 A a↙ ③ a=3 b=7 8.5 71.82 A a↙ ④ a=3 b=7 8.5 71.82Aa↙ ⑤ 3 7 8.5 71.82 A a↙ ⑥ a=3 b=7↙
⑦
8.5 71.82 ↙ A↙ a↙
a=3 b=7↙
大一C语实验
8.5 71.82 ↙ Aa ⑧ a=3 b=7↙ 8.5 71.82Aa↙
6.操作符sizeof用以测试一个数据或数据类型所占用的存储空间字节数。请编写一个程序,测试各基本数据类型所占用的存储空间大小。
sizeof的格式:
sizeof(数据类型名/变量/常量/表达式)
实验3 顺序结构设计2—C基本语法编程
一、目的和要求
1.熟悉C程序的语法特点。
2.掌握C语言中的常用语句和表达式的使用方法。 3.掌握各种类型数据的输入/输出方法。 二、实验内容
1.输入一个华氏温度,要求输出对应的摄氏温度。转换公式为:
C 5 F 32
输入输出要有提示信息,输出结果取2位小数。
提示:
C程序中,除法运算符“/”的左右两端数据如果都是整数,则表示整除,结果要取整。所以分数5在C程序的表达式中,分子分母至少有一个要写成实数的形式。
2.有三个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r。已知电阻并联公式为:
1 1 1 1 rr1r2r3
输入输出要有提示信息,输出结果取2位小数。
3.编写程序,输入梯形的上底、下底和高,计算并输出梯形的面积。输入输出要有提示信息,输出结果取2位小数。
4.周期为T秒的人造卫星离地面的平均高度H的计算公式为:
H R
其中:地球的质量M=6×1024kg,地球的半径R=6.371×106m。编写程序,输入人造卫星的周期T,计算并输出人造卫星离地面的高度H。
提示:
本题需要用到求xy的数学函数pow( ),具体函数使用说明请参见教材附录。注意文件的开始部分需要包含预处理命令:
大一C语实验
#include <math.h>
5.分析下面程序的应得结果,并与上机运行结果进行比较。
#include <stdio.h> void main( ) { int a,b; float d,e; char c1,c2; double f,g; a=61; b=62; c1='a'; c2='b'; f=3157.890121; g=0.123456789; d=3.56; e=-6.87; 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\n",f,g); }
① 修改程序的第11行为:d=f; e=g; 然后运行程序,分析结果。 ② 将两个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\n",f,g);
然后再运行程序,并分析结果。
6.下面的程序计算由键盘输入的任意两个整数的和。
#include <stdio.h> void main( ) { short int x,y,a; scanf("%hd,%hd",&x,&y); a=x+y; printf("The sum is: %hd\n",a); }
编译、链接上面的程序,用下面的测试用例进行测试: ① 2,6 ② -2,6 ③ 1,0
④ 33000,31542 ⑤ -33000,31542 ⑥ 2.3,5.4
记录每组测试用例的输出结果,通过测试,你发现程序有什么错误了吗?请分析错误原因,并对程序作适当的修改。
7.输入下列程序,编译并运行,分析结果。
#include <stdio.h> void main( ) { int i,j,m,n; i=8;
大一C语实验
}
j=10; m=++i; n=j++;
printf("%d,%d,%d,%d\n",i,j,m,n);
① 将第7,8行改为:
m=i++;
n=++j;
再编译并运行,分析结果。 ② 程序改为:
#include <stdio.h>
void main( ) { int i,j; i=8; j=10; printf("%d,%d\n",i++,j++); }
再编译并运行,分析结果。 ③ 在②的基础上,将printf语句改为:
printf("%d,%d\n",++i,++j);
再编译并执行,分析结果。
实验4 选择结构程序设计
一、目的和要求
1.了解C语言表示逻辑“真”和逻辑“假”的方法。
2.掌握关系运算符和关系表达式、逻辑运算符和逻辑表达式的使用。 3.掌握if语句和switch语句的使用。 二、实验内容
1.编写程序,输入一个字符ch,输出字符的类型,即字母(alpha)、数字(numeric)或其他字符(other)。
2.编写程序,输入一个正整数,判断该数是奇数还是偶数,并输出结果。 3.有一函数:
x3 1
3x 1
y 2x 1
3e 5
5x 3log(2x2 1) 13
10
x 1
1 x 1
1 x 10 x 10
编写一个程序,用scanf函数输入x的值,计算并输出y值。注意表达式的书写方法。 提示:
大一C语实验
① 本题要用到数学函数exp( )和log10( ),因此应包含相应的头文件。 ② 运行程序时,要输入不同的x值(分别测试上述4种情况),检查输出的y值是否正确。
5.编写程序,输入三个数,代表三角形的三条边,判断三边是否能构成一个三角形,如果能,计算并输出三角形的面积,否则输出“ERROR!”。
求三角形的面积公式为:
area
其中s=(a+b+c)/2。
提示:
三边构成三角形的条件是:任意两边之和大于第三边或者任意两边之差小于第三边。 4.编写程序,输入年号,判断并输出该年是否是闰年。所谓闰年,是指能被4整除,但不能被100整除;或能被400整除的年份。
提示:
本题要注意条件的表达,可以通过逻辑运算符构造复杂的条件表达式,也可以使用if分支嵌套来表达判断条件。
5.从键盘输入三个数,代表三条线段的长度。请编写程序,判断这三条线段能否构成一个三角形,如果能,再判断所构成的三角形是什么类型(不等边、等腰、等边),并输出结论;否则输出“ERROR!”。
6.简单选择界面的编程。从键盘输入整数,输出不同的字符串: 输入1,输出Good morning; 输入2,输出Good afternoon; 输入3,输出Good evening; 输入4,输出Good night;
输入其它数字,输出Bye-bye。 提示:
此题的输入变量只有1个,但程序设计时要根据输入变量的可能取值实现不同的输出内容。可用switch语句实现。
7.从键盘输入某个日期(包括年、月、日),编写程序,计算并输出这一天是该年的第多少天。
提示: ① 此题应注意每月不同天数的情况,对于2月份的天数还应判断当年是否是闰年。 ② 先假设2月为28天,然后根据输入的月,用switch语句来分别求天数;最后判断当前月如果大于2,且是闰年的情况,天数加1,否则保持原来结果。
8.已知从银行贷款月利率为:期限一年,为0.90%;期限2年,为1%;期限3年,为1.11%;三年以上为1.2%。从键盘输入贷款金额和期限,计算到期后应归还银行的本金和利息合计为多少钱。
9.输入一个不多于5位的正整数,要求:① 求出它是几位数;② 分别打印出每一位数字;③ 按逆序打印出各位数字。
提示:
大一C语实验
① 判断位数应使用选择嵌套结构;求每一位数字的程序应放置在嵌套的最里层,需要使用“/”和“%”运算符来取得各个位数,并保存在相应的变量里。
② 运行程序时要分别输入以下测试数据测试:1位正整数,2位正整数,3位正整数,4位正整数,5位正整数。
③ 除此之外,程序还应当对不合法的输入作必要的处理,如输入的是负数或超过5位的正整数。
实验5 循环结构程序设计
一、目的和要求
1.掌握while语句、do-while语句和for语句实现循环的方法。
2.掌握各种循环语句中如何正确的设定循环条件,以及如何正确的控制循环次数。 3.熟悉各种循环结构的执行流程。 二、实验内容
1.从键盘输入若干整数,以0结束,判断并输出其中的最大数。
提示:
找最大数时,先要假定一个数就是最大数max,后面输入的每个数再与max比较,比max大则修改max的值。因此要注意开始时假定的最大数max的取值。
2.输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数,并输出结果。
提示:
本题要定义5个初值为0的整型变量用来分别存放各类字符的个数,注意判断过程中要不断的读取下一个字符。
3.输入若干整数(以-32767作为结束标志),分别统计出正整数、负整数和0的个数并输出。
4.分别用while、do-while和for语句计算并输出的结果,并试着简化程序。
提示:
为了防止数据溢出,建议存放阶乘值和最终结果的变量都定义为double类型。 5.计算
) n!(即求1!+2!+3!+…+20!
n 120
n
n 1
8
2
n 2.3。
6.已知2006年农历为狗年,编写程序输出21世纪全部为狗年的年份。
7.判断2~100有多少个素数(素数就是除了1和它自身外,不能被任何数整除的数),并输出素数的个数和所有的素数。要求每行输出6个素数。
8.编写程序,计算2n。其中n为整数。注意n可能是正整数、负整数或0。
大一C语实验
实验6 选择、循环结构的综合编程
一、目的和要求
1.熟练应用C语言的三种基本结构编程解决具体的问题。 2.掌握continue语句和break语句的使用方法。 3.掌握循环嵌套程序的设计。
4.掌握用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 二、实验内容
1.穷举法编程
(1)编写程序,输入两个正整数m和n,求它们的最大公约数和最小公倍数。 ① 输入两组数据,分别使m>n和m<n,观察结果是否正确。 ② 分别用while语句、do-while语句和for语句实现。注意循环控制表达式的写法。 提示: ① 先求最大公约数,再用m和n的乘积除以最大公约数,结果即为最小公倍数。 ② 求最大公约数的算法: 法一,穷举法。
法二,求差判定法:用大数减小数,如果差不为零,就用差继续减小数,直到差为零为止。最后这个差就是最大公约数。
法三,辗转相除法:用大数除以小数,如果不能整除,就用余数来除刚才的除数;依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。 (2)输出所有的水仙花数。水仙花数是指一个3位数,各位数字的立方和等于该数本身,例如153=13+53+33。
提示:
① 法一:将问题转化为求x3 y3 z3 x 10 y 100 z的三个解,可以用穷举法。 ③ 法二:首先对100到999之间的每个数分别求出它的个位、十位和百位数,再判断是否满足水仙花数的条件。
2.递推问题
(1)国民生产总值(GDP)每年递增7.5%,编写程序计算并输出需要多少年国民生产总值才能翻一番。
(2)银行存款年利率为1.9%,编写程序计算并输出需要存多少年存款才能翻一番。 (3)有一分数序列:
1,1,1, ,1
n n 1求出这个数列的前20项之和。
(4)编写程序,用公式 1 1 1 1 计算π的近似值,直到最后一项的绝对值小
4357于10 6。
(5)下面是一个计算e的近似值的C程序。从键盘输入detax,使误差小于detax。
#include <stdio.h>
大一C语实验
void main( ) { double e=1.0,x=1.0,y,detax; int i=1; printf("Input a error:"); scanf("%lf",&detax); y=1/x; while (y>=detax) { x=x*i; y=1/x; e=e+y; i+=1; } printf("e=%12.10lf\n",e); }
编译并运行,并分析结果。 ① 理解并运行程序,写出程序所依据的计算公式。 ② 当输入的detax各是什么值时,能分别使程序按下面的要求运行: 不进入循环 只循环两次
进入死循环(程序将永远循环下去) 如何才能知道程序循环了多少次? ③ 若把程序中while语句之前的语句“y=1/x”去掉,运行并分析结果。 ④ 把原程序中的while结构改为do-while结构,程序应作哪些修改?并运行修改后的程序,比较while语句和do-while语句的异同。
(6)输入一个正整数,计算并输出该数各位上的数字之积。如输入1234,则结果为24。
n个a
(7)求Sn a aa aaa aa a的值,其中a和n都是一个一位数,当a=2,n=5
时,Sn=2+22+222+2222+22222。a和n均由键盘输入,并注意对它们的大小有什么要求。
(8)输入x,计算级数:
234
1 x x x x
要求计算精度为10-8。 3.循环嵌套
(1)用循环语句编写程序,输出图4.3中的图案。 (2)用循环语句编写程序,输出图4.4中的图案。
M M M M M M M M M M M M M M M M M M M M M
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
图4.3 图4.4
(3)用循环语句编写程序,输出图4.5中的图案。 (4)用循环语句编写程序,输出图4.6中的图案。
大一C语实验
X Y X Y X Y X X Y X Y X Y * * * * * * X Y X Y X * * * * * X Y X Y * * * * X Y X * * * X Y * * X
*
图4.5 图4.6
(5)输入正整数n,计算并输出小于等于n的素数的个数。已知n>2。 (6)编写程序,打印如下形式的出九九乘法表。 1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 4.迭代法编程
(1)用迭代法求
x1 a
n 1 xn n
要求前后两次求出的x的差的绝对值小于10-6。
(2)利用下面的简单迭代方法求方程cosx x 0的一个实根。
xn 1 cos xn
① 取x1的初值为0.0;
② x0=x1,将x1的值赋值给x0; ③ x1=cos(x0),求出一个新的x1;
④ 若x0-x1的绝对值小于0.000001,执行步骤⑤,否则执行步骤②; ⑤ 所求x1就是方程cosx x 0的一个实根,作为函数值返回。 程序的计算结果是0.739086。
实验7 指 针
一、目的和要求
1.理解指针与变量地址之间的关系。 2.掌握指针变量的定义方法。 3.掌握指针的运算。 二、实验内容
1.调试下面的程序,指出错误的原因。
9*9=81
大一C语实验
#include <stdio.h> void main( ) { int x=10,y=5,*px,*py; px=py; px=&x; py=&y; printf("*px=%d,*py=%d\n",*px,*py); }
2.仔细分析并比较下面两个程序的运行结果。 (1) (2)
#include <stdio.h> void main( ) {
int a1=11,a2=22; int *p1,*p2,*p; p1=&a1; p2=&a2;
printf("%d,%d\n",*p1,*p2); p=p1; p1=p2; p2=p; printf("%d,%d\n",*p1,*p2); printf("%d,%d\n",a1,a2); }
#include <stdio.h> void main() {
int a1=11,a2=22; int *p1,*p2,t; p1=&a1; p2=&a2;
printf("%d,%d\n",*p1,*p2); t=*p1; *p1=*p2; *p2=t; printf("%d,%d\n",*p1,*p2); printf("%d,%d\n",a1,a2); }
3.从键盘输入3个整数,按从小到大的顺序排序并输出。要求用指针变量实现对变量的访问。
4.从键盘输入若干学生的成绩,直到输入-1为止,求其中的最高分并输出。要求用指针变量实现对变量的访问。
正在阅读:
大一C语实验08-20
2012新建筑面积计算规则06-08
走遍法国REFLET第二册课文翻译(DOSSIER 1-12)01-02
电梯门洞过门石铺设漏浆处理措施01-31
明德校园解说词01-17
2015年各地高考英语试题15套word版(含答案)06-09
最新教学参考资料:八上《生活中的透镜》导学案 - 图文12-27
土壤学复习题-20100615(1)11-23
- 2012诗歌鉴赏讲座 师大附中张海波
- 2012-2013学年江苏省苏州市五市三区高三(上)期中数学模拟试卷(一)
- 市政基础设施工程竣工验收资料
- 小方坯连铸机专用超越离合器(引锭杆存放用)
- 荀子的学术性质之我见
- 氩弧焊管轧纹生产线操作说明
- 小学科学六年级上册教案
- (商务)英语专业大全
- 外汇储备的快速增长对我国经济发展的影响
- 幼儿园中班优秀语言教案《小猴的出租车》
- 第七章 仪表与显示系统
- 身份证号码前6位行政区划与籍贯对应表
- 单位(子单位)工程验收通知书
- 浅谈地铁工程施工的项目成本管理
- 沉积学知识点整理
- 前期物业管理中物业服务企业的法律地位
- 2014微量养分营养试卷
- 地质专业校内实习报告范文(通用版)
- 内部审计视角下我国高校教育经费支出绩效审计研究
- 高次插值龙格现象并作图数值分析实验1
- 大一
- 实验