1、C语言程序设计实验指导书答案实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。2.熟悉编译环境Visual C+或者Dev C+或者Turbo C2.0/3.0。3.初步熟悉C语言程序的语法规定。4.了解简单函数的使用方法。实验内容:1.编程且上机运行:求3个整数的和。2.编程且上机运行:求2个数的和、差、积和商。3.编程且上机运行:输入3个数,求最大值。4.编程且上机运行:输入圆的半径,求圆的面积和周长。5.在屏幕上输出:“hello world!”6 输入并编辑本章中给出的C程序例子,在自己用的环境中形成一个C语言源程序文件;对这个源程序进行加工,得到对应的可执行程序,看一看它
2、的效果。实验结果: 1.#include #include main( ) int i,j,k; printf(input i,j,k:);/输入整数数据,以半角逗号间隔,比如:1,2,3 scanf(%d,%d,%d,&i,&j,&k);/不能缺少地址符号“&” printf(%d+%d+%d=%dn,i,j,k,i+j+k); system(Pause); 2.#include #include main( ) int i,j; printf(input i,j(not 0):);/输入整数数据,以半角逗号间隔,j不为0,因为做除数 scanf(%d,%d,%d,&i,&j);/不能缺少地
3、址符号“&” printf(%d+%d=%dn,i,j,i+j); printf(%d-%d=%dn,i,j,i-j); printf(%d*%d=%dn,i,j,i*j); printf(%d/%d=%dn,i,j,i/j); system(Pause); 3. #include #include main( ) int i,j,k; printf(input i,j,k:);/输入整数数据,以半角逗号间隔 scanf(%d,%d,%d,&i,&j,&k);/不能缺少地址符号“&” if(ij) if(jk) printf(max:%d,i); else if(ik) printf(max:
4、%d,i); else printf(max:%d,k); else if(jk) printf(max:%d,k); else printf(max:%d,j); system(Pause); 4. #include #include #define pi 3.14main( ) float r; printf(input r:); scanf(%f,&r);/不能缺少地址符号“&” printf(circle area is:%6.2f,pi*r*r); system(Pause); 5. #include #include #define pi 3.14main( ) printf(he
5、llo world!); system(Pause); 6.略实验二(第3章实验一)实验目的:理解C语言的类型系统。实验内容:写程序测试数据 2在类型char,int,unsigned int,long int,unsigned long int中存储情况。实验过程:实验结果:参见各种类型的存储实现描述。#include #include #include main( ) char c=-2;/1 int i=-2;/4 unsigned int ui=-2;/4 long int li=-2;/4 unsigned long int uli=-2;/4 printf(%dn,sizeof(c
6、har); printf(%dn,sizeof(int); printf(%dn,sizeof(unsigned int); printf(%dn,sizeof(long int); printf(%dn,sizeof(unsigned long int); printf(%c,%d,%u,%ld,%lu,i,i,i,i,i); system(Pause); 实验二(第3章实验二)实验目的:了解混合类型计算中类型的转换规则。实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。注意unsigned int和 int数据运算时类型转换的方向。实验过程:/* 类型转换问题 * 试
7、问下面两个表达式等价吗?*/#include #include int main() unsigned int ui,uj; ui = 1; uj = 2; if (ui uj) printf(n%u %u is true !n, ui, uj); else printf(n%u %u is false !n, ui, uj); if (ui - uj 0) printf(n%u - %u 0 is true !n, ui, uj); else printf(n%u - %u 0 is false !n, ui, uj); system(pause); return 0;实验结果:不等价。结果
8、如下:1 2 is true !1 - 2 0 is false !原因是1-2=-1,-1在unsigned int 中的表示为3123157011111111111111111111111111111111实验二(第3章实验三)实验目的:理解数据溢出现象。实验内容:写程序测试数据溢出,注意分别在16环境和32环境中测试。实验过程:实验结果:参见【例3.3】。实验三(第3章实验四)实验目的:char的符号问题。实验内容:写程序测试你所用的C语言编译器char符号问题的处理方案。实验过程:/* 这个程序验证编译器对 char 的解决方案,是有符号,还是无符号*/#include #includ
9、e int main() char c = -1; int k; k = c; /* k = ? */ if (k = 255) printf(The char is unsigned char.n); else printf(The char is signed char.n); printf(k = %d, %x, k, k); system(pause); return 0;实验结果:TC2.0和DevC+中char是有符号的实验三(第3章实验五)实验目的:自增和自减运算符。实验内容:写程序测试+、- 运算符。实验过程:main() int i=3; printf(i=%dn,i+);
10、printf(i=%dn,i); printf(i=%dn,+i); printf(i=%dn,i);实验结果:i=3i=4i=5i=5实验三(第3章实验六)实验目的:理解输入输出函数。1掌握输入输出函数的使用方法。2掌握格式字符的使用方法。3掌握不同数制间使用格式字符转换数据的方法。实验内容:用getchar、putchar、printf、scanf函数实现各种数据的输入和输出。实验过程:实验结果:例如:/用getchar、putchar、printf、scanf函数实现各种数据的输入和输出。#include #include main( ) printf(input a char c:);
11、 char c=getchar(); putchar(c); int i; printf(ninput a integer:); scanf(%d,&i); printf(i=%dn,i); printf(c=%cn,c); printf(type chars size is %dn,sizeof(char);/1 printf(type ints size is %dn,sizeof(int);/4 system(Pause); 实验四(第4章实验)实验目的:1.学会使用逻辑运算符和逻辑表达式;2.熟练掌握if语句和switch语句。实验内容:1.从键盘输入三个整数a,b,c,输出其中最大的
12、数。2.求方程ax2+bx+c=0的根,其中a,b,c由键盘输入。有以下几种情况: a=0,不是二次方程; b2-4ac=0,有两个相等的实根; b2-4ac0,有两个不等的实根; b2-4ac10) 写一程序,输入整数X,输出Y的值。4.给一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A, 80-89分为B,70-79分为C,60-69分为D,60分以下为E。5.企业发放的奖金根据利润提成。利润(B)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分可提成7.5%;B时,高于20万元的部分按5%提成;B时
13、,高于40万元的部分按3%提成;B时,高于60万元的部分按1.5%提成;B时,高于100万元的部分按1%提成。从键盘输入当月利润B,求应发放奖金总额。6.从键盘任意输入一个不多于五位的正整数, 求它是几位数; 分别输出每一个数字; 按逆序输出各位数字,例如原数为135,应输出531。实验过程:实验结果:1. 见第三版第五章作业5.42. 见第三版教材108页3. 见第三版第五章作业5.54. 见第三版第五章作业5.65. 见第三版第五章作业5.86. 见第三版第五章作业5.7实验五(第5章实验一)实验目的:1掌握循环的概念,学习用循环的思想来思考实际问题。2掌握单循环的使用方法。实验内容:1计
14、算,输出其结果。2使用循环结构输出下列图形。3计算下列公式的和,要求最后一项小于105。提示:通项公式为:。4输入30个字符,分别统计其中数字、字母及字符的个数。5求出Fibonacci(斐波那契)数列的前20项。Fibonacci(斐波那契)数列的规律是:前2项为0和1,其余各项为该项前2项之和,即0,1,1,2,3,5,8,13。 实验过程:实验结果:1. #include #include main() int s=0;/试一下s不赋初值 int i; /循环变量 for (i=1;i=100;i+) s+=i; printf(1+2+.+100=%dn,s); system(Pause
15、); 2.#include #include main() int i,j,k; for(i=0;i=9;i+) for(j=0;j=9-i;j+) printf( ); /画空格 for(k=0;k2*i+1;k+) printf(%d,i);/输出2i+1个数字 printf(n); system(Pause); 3.#include #include #include main() int i=0; float sum=0.0,t; int f=1; t=1.0/(i*i+1); while(t=pow(10,-5) sum=sum+f*t; f=-f; /符号 i+; t=1.0/(i
16、*i+1);/项 printf(sum=%9.6fn,sum); system(Pause); 4.#include #include main() int num=0; int alph=0; int ch=0; int i; char c; for(i=1;i=0&c=a&c=A&c=Z) alph+; else ch+; printf(number has %d,alph has %d,char has %d,num,alph,ch); system(Pause); 5.#include #include main() long fib20 = 0,1; int i; for(i=2;i
17、20;i+) fibi = fibi-1+fibi-2; for(i=0;i20;i+) printf(F%d=%dn, i, fibi); system(Pause); 实验五(第5章实验二)实验目的:1进一步学习循环的使用方法,用循环解决复杂问题。2掌握多重循环的使用方法及其他。实验内容:1分别使用双循环和单循环结构计算,并输出其结果。2编制程序,输出如下所示的九九乘法表。3输出下列所示菱形字符图形。4古代数学家在编写算经时,提出了一个不定方程问题,即著名的“百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?5求s=1+(1+2)+(1+2+3)
18、+,并输出其结果。实验过程:实验结果:1.参见第三版第6章作业6.42.#include #include main() int i,j,k; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%d ,j,i,i*j); printf(n); system(Pause); 3.#include #include main() int i,j,k; for(i=0;i=9;i+) for(j=0;j=8-i;j+) printf( ); for(k=0;k=2*i;k+) printf(*); printf(n); for(i=0;i=9;i+) for
19、(j=0;j=i;j+) printf( ); for(k=0;k=16-2*i;k+) printf(*); printf(n); system(Pause); 4.#include #include main() int i,j,k; for(i=0;i=14;i+=4) j=(100-7*i)/4; k=100-i-j; printf(%d,%d,%dn,i,j,k); system(Pause); 输出结果:0,25,754,18,788,11,8112,4,845.#include #include main() int i,j,t,s=0; for(i=1;i=5;i+) for(
20、t=1;t=i;t+) s=s+t; printf(s=%d,s); system(Pause); 实验六(第6章实验一)实验目的:1掌握数组的定义方法。2掌握一维数组的使用方法。实验内容:1用随机函数产生15个100以内的随机整数存入一维数组,然后分三行输出,每行5个数。2求出n个学生一门课程中的最高成绩和最低成绩及高于平均成绩的人数。3使用数组,求出下列数列的前20项。 1,1,2,4,7,13,4将一个一维数组反序放置。例如: a=(67,89,76,98,66), 反序放置后,a=(66,98,76,89,67)5有10个学生一门课程成绩,使用选择排序法将成绩从高向低排序。实验过程:实
21、验结果:1. /用随机函数产生15个100以内的随机整数存入一维数组,然后分三行输出,每行5个数。#include #include #include int main(void) int i; time_t t; int a15; srand(unsigned) time(&t); printf(Ten random numbers from 0 to 99nn); for (i=1; i=15; i+) ai=rand()%100; printf(%d,ai); if(i%5=0) printf(n); system(Pause); return 0; 2. 求出n个学生一门课程中的最高成
22、绩和最低成绩及高于平均成绩的人数。#include #include #define n 10 /注意,宏定义define 后不带分号结束符。main() int an = 60,100,70,67,90,99,89,40,77,56; int avg=0,num=0,sum=0,max,min; int i; for(i=0;i10;i+) sum+=ai; avg=sum/n; min=a0; max=a0; for(i=0;i10;i+) if(aimax) max=ai; if(aiavg) num+; printf(average=%dn,avg); printf(max=%d,mi
23、n=%d,number of more than avg =%dn, max,min,num); system(Pause); 3. /方法1:使用数组,求出下列数列的前20项。1,1,2,4,7,13,#include #include main() long a20 = 1,1; long sum=0; int i; for(i=3;i20;i+) ai = ai-1+ai-2+ai-3; for(i=0;i20;i+) sum+=ai; printf(1+1+2+4+7+13+.+ =%dn, sum); system(Pause); /方法2:使用数组,求出下列数列的前20项。1,1,
24、2,4,7,13,#include #include main() long a20 = 1,1; long sum=2; int i; for(i=3;i20;i+) ai = ai-1+ai-2+ai-3; sum+=ai printf(1+1+2+4+7+13+.+ =%dn, sum); system(Pause); 4.#include #include #define n 6main() int i,temp; int an=0,1,2,3,4,5; for(i=0;i=(n-1)/2;i+) temp=ai; ai=an-1-i; an-1-i=temp; for(i=0;in;i+) printf(%d ,ai); system(Pause); 5. /有10个学生一门课程成绩,使用选择排序法将成绩从高向低排序。#include #include int main() int i,j,k,t,min; int a10=77,99,69,76,87,9
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1