大一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为止,求其中的最高分并输出。要求用指针变量实现对变量的访问。

本文来源:https://www.bwwdw.com/article/e33j.html

Top