1、实验一( 1) C 程序运行环境及简单程序的运行(解答)P23 1编辑、运行简单的 C 程序下面是一个简单的 C 程序,请输入、编译并运行之,观察并记下屏幕的输出结果,最后以文件名 sy1_1.c 存盘。#include main() int a,b,sum,m,f; /*定义整型变量 a,b,sum ,m,f*/float d; /*定义实型变量 d */printf(“Please Input a,b n “); /*输出语句*/scanf(“%d%d“, /*输入语句由键盘输入两个数分别赋予 a 和 b*/sum=a+b; /*赋值语句*/m=a-b;f=a*b;d=a/2.0;prin
2、tf(“%d + %d=%dn“,a,b,sum); /*输出语句*/printf(“%d - %d=%dn“,a,b,m);printf(“%d * %d=%dn“,a,b,f);printf(“%d / %f=%fn“,a,2,d);运行结果:2改错题(1)下列程序的功能为:计算 x*y 的值并将结果输出;请纠正程序中存在错误( 程序中有 8 处错误) ,使程序实现其功能,程序以文件名 sy1_2.c 存盘。#include main / main 改为 main() int x=2;y=3;a / 改为 int x=2,y=3,a;A=x*y / 改为 a=x*y;2print (a=%
3、d“,a); / 改为 printf (a=%d“,a);printf(“n“);改正后源程序:#include main() int x=2,y=3,a;a=x*y;printf(“a=%d“,a);printf(“n“);(2)下列程序的功能为:计算圆面积并将结果输出;请纠正程序中存在错误(程序中有8 处错误) ,使程序实现其功能,程序以文件名 sy1_3.c 存盘。#include stdio.h; main();float r;area;r=5.0;area=3.14159r*r;printf(“area=%dn“,area)改正后源程序:#include main() float r
4、,area;r=5.0;area=3.14159*r*r;printf(“area=%fn“,area);(3)下列程序的功能为:正确使用控制字符(水平制表符);请纠正程序中存在错误,使程序实现其功能,程序以文件名 sy1_4.c 存盘。#include “stdio.h“main()char x,y,z;x=”a”;y=/t;z=”b”;printf(“第 1 行为:%c%c%cn“,x,y,z);printf(“第 2 行为:%c%c%c%cn“,x,y,y,z);3改正后源程序:#include “stdio.h“main()char x,y,z;x=a;y=t;z=b;printf(“
5、第 1 行为:%c%c%cn“,x,y,z);printf(“第 2 行为:%c%c%c%cn“,x,y,y,z);运行结果:实验一( 2) 数据类型、运算符和表达式P261若有定义 “int x,a,b,c;” ,写出顺序执行下列表达式后 x 的值,然后通过程序(程序以文件名 sy1_5.c 存盘) 验证。 要求:先利用操作系统自带的计算器按表达式的运算次序计算下列表达式的结果,然后利用验证程序计算表达式的结果。 x=a=b=10 x=25%(c=3) x*=x+=x-=x x=(a=4%3,a=1)验证程序: #includemain() int x,a,b,c; x=a=b=10; pr
6、intf(“x=%dn“,x); x=25%(c=3); 4printf(“x=%dn“,x); x*=x+=x-=x; printf(“x=%dn“,x); x=(a=4%3,a=1); printf(“x=%dn“,x); 运行结果:2改错题(1)下列程序的功能为:已知圆锥半径 r 和高 h,计算圆锥体积 v。请纠正程序中存在错误(程序中有 7 处错误) ,使程序实现其功能,程序以文件名 sy1_6.c 存盘。#include stdio.hmain(); float r=10,h=5;v=1/3*3.14159*r2*h;printf(“v=%dn“,v)改正后源程序:#include
7、main() float r=10,h=5,v;v=1.0/3*3.14159*r*r*h;printf(“v=%fn“,v);(2)下列程序的功能为:通过键盘输入两个整数分别存放在变量 x、y 中,不借用第 3个变量实现变量 x、y 互换值。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy1_7.c 存盘。#include “stdio.h“main()int x,y;printf(“请输入两个整数n“);scanf(“%d%d“,x, y);printf(“初始状态下的 x:%d y: %dn“);5x=x+yy=x-y;x=x-y;printf(“最终状态下的 x:%d y: %
8、d/n“,x,y);改正后源程序:#include “stdio.h“main()int x,y;printf(“请输入两个整数n“);scanf(“%d%d“,printf(“初始状态下的 x:%d y: %dn“,x,y);x=x+y;y=x-y;x=x-y;printf(“最终状态下的 x:%d y: %dn“,x,y);3程序填空(1) 下列程序的功能为:输出小写字母 a,b,请填写适当的符号,使程序实现其功能,程序以文件名 sy1_8.c 存盘。#include main ()char c1,c2;c1=97; c2=98;printf(“ %c,%c “,c1,c2);(2) 下列
9、程序的功能为: 从键盘输入 3 个整数分别存入变量 a、b、c ,然后,将变量a 的值存入变量 b,将变量 b 的值存入变量 c,将变量 c 的值存入变量 a,输出经过转存后变量 a、b、c 的值。 (提示:使用中间变量) 。请填写适当的符号或语句,使程序实现其功能,程序以文件名 sy1_9.c 存盘。#include main ()int a,b,c, m ;printf(“Please input a,b,c: “);scanf(“%d%d%d“, m=a ;6a=c ;c=b ;b=m ;printf(“a=%d b=%d c=%dn“,a,b,c);4编程题(1) 编写一个程序实现如下
10、功能:从键盘输入三个大写英文字母,把它们转换成小写字母后输出(程序以文件名 sy1_10.c 存盘)。参考程序:(注意输入必须是大写字母)#include main()char c1,c2,c3;scanf(“%c,%c,%c“,c1=c1+32;c2=c2+32;c3=c3+32;printf(“%c,%c,%cn“,c1,c2,c3);(2) 编写一个程序实现如下功能:从键盘输入两个整数 a、b,求 a2+b2 的值并输出(程序以文件名 sy1_11.c 存盘)。参考程序:#include “stdio.h“main()int a,b,c;printf(“请输入两个整数n“);scanf(
11、“%d%d“,c=a*a+b*b;printf(“c=%dn“,c);实验二 设计并运行简单的 C 程序(解答)1改错题(1)下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C= ,输出取 2 位小数。请纠正程序中存在的错误(程序中有 3 处错误) ,使程序实)3(95F现其功能,程序以文件名 sy2_1.c 存盘。7#include main() float c,f;printf(“请输入一个华氏温度:n“);scanf(“%f“,f);c= =(5/9)*(f-32);printf(“摄氏温度为:%5.2fn“c);改正后的程序:#include main()float c
12、,f ;printf(“请输入一个华氏温度:n“);scanf(“%f“,c=(5.0/9)*(f-32);printf(“摄氏温度为:%5.2fn“,c);(2)下列程序的功能为:按下列公式计算并输出 x 的值。其中 a 和 b 的值由键盘输入。x=2ab/(a+b)2请纠正程序中存在的错误,使程序实现其功能,程序以文件名 sy2_2.c 存盘。#include main() int a,b;float x;scanf(“%d,%d“,a,b);x=2ab/(ab)(ab);printf(“x=%dn“,x);改正后的程序:#include main() int a,b;float x;sc
13、anf(“%d,%d“,x=2.0*a*b/(a+b)*(a+b);printf(“x=%fn“,x);8(3)下列程序的功能为:从键盘输入一个大写字母,要求改用小写字母输出。请纠正程序中存在的错误,使程序实现其功能,程序以文件名 sy2_3.c 存盘。#include main()char c1,c2;c1=getchar; /* 输入大写字符 */printf(“%c,%dn“,c1,c1);c2=c1-26; /* 转变为小写 */printf(“%c,%dn“,c2,c2); /* 输出 */改正后的程序:#include main()char c1,c2;c1=getchar();
14、/* 输入大写字符 */printf(“%c,%dn“,c1,c1);c2=c1+32; /* 转变为小写 */printf(“%c,%dn“,c2,c2); /* 输出 */2程序填空(1)下列程序的功能为:给定格式输入数据,按输出要求输出结果,请填写适当的符号或语句,使程序实现其功能,程序以文件名 sy2_4.c 存盘。输入形式 enter x,y:2 3.4输出形式 x+y=5.4#include main() int x;float y;printf (“enter x,y: “);scanf(“%d%f“, printf(“x+y=%.1fn“,x+y); (2) 下列程序的功能为:
15、设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用 scanf 输入数据 r、h,输出计算结果,输出时要求有文字说明,取小数点后位数字。9(周长 l=2 ,圆面积 s= ,圆球表面积 sq= ,圆球体积 vq= ;圆柱体积 vz=r2r24r34r)2h请填写适当的符号或语句,使程序实现其功能,程序以文件名 sy2_5.c 存盘。#include main()float pi,h,r,l, s,sq,vq,vz;pi=3.1415926;printf(“请输入圆半径 r,圆柱高 h:n“);scanf(“%f%f“, ;l= 2*pi*r ;s= pi*
16、r*r ;sq= 4*pi*r*r ;vq= 3.0/4*pi*r*r*r ;vz= pi*h*r*r ;printf(“圆周长为:%.2fn“,l );printf(“圆面积为:%.2fn“, s );printf(“圆球表面积为:%.2fn“, sq );printf(“圆球体积为:%.2fn“, vq );printf(“圆柱体积为:%.2fn“, vz );(3) 下列程序的功能为:通过键盘输入两个整数,分别存入变量 x,y 中,当 x 小于 y 时,通过中间变量 t 互换 x,y 之值,并输出之。 请填写适当的符号或语句,使程序实现其功能,程序以文件名 sy2_6.c 存盘。#inc
17、lude main() int x,y,t;printf(“请输入 x,y:n“);scanf(“%d%d“,scanf(“a=%f,b=%f,c=%f“,disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“x1=%5.2fnx2=%5.2fn“,x1,x2);(2)编写一个程序实现如下功能:在屏幕显示提示信息(“输入一个字符串” ) ,用户输入完成后在屏幕上再现该字符串(程序以文件名 sy2_8.c 存盘)。参考程序:#include void main() char c1,c2,c3;printf(“
18、输入一个字符串n“);c1=getchar();c2=getchar();c3=getchar();putchar(c1);putchar(c2);putchar(c3);putchar(n);(3)编写一个程序实现如下功能:利用 sizeof(),求得所有基本数据类型的长度(程序以文件名 sy2_9.c 存盘)。参考程序:#include void main() int i,j;long s;float a,b;double f1,f2;char ch;printf(“%d, %d, %dn“,sizeof(int),sizeof(i),sizeof(10);printf(“%d, %d,
19、%d,%dn“,sizeof(long),sizeof(s),sizeof(50000),sizeof(10L);printf(“%d, %d, %dn“,sizeof(float), sizeof(b),sizeof(9.8F);printf(“%d, %d, %dn“,sizeof(double), sizeof(f1), sizeof(9.8);11printf(“%d, %d, %d,%dn“,sizeof(char), sizeof(ch), sizeof(a), sizeof(101);实验四 循环结构程序设计 (解答)1改错题(1)下列程序的功能为:求 1100 之和(和值为 5
20、050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名 sy4_1.c 存盘。#include main()int i,sum=0;i=1;while(imain()int i,sum=0;i=1;while(imain()char x;x=z;while(x!=a)printf(“%3d“,x);x+;12改正后的程序:#include main()char x;x=z;while(x!=a-1)printf(“%3c“,x);x- -;(3)下列程序的功能为:输出如下的图形,要求顶端的*定位在第 21 字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名 sy4_3
21、.c 存盘。*#include void main() int i,j;for (i=0;ivoid main() int i,j;for (i=0;imain ()int r, m, n, t ;scanf (“%d%d“,if (mmain()int day,x1,x2;day=0;x1=1020;while( x10 )x2= x1/2-2 ;x1=x2;day+;printf(“day=%dn”,day);14(3)下列程序的功能为:输出 100 以内能被 3 整除且个位数为 6 的所有整数;请填写适当的符号或语句,使程序实现其功能,程序以文件名 sy4_6.c 存盘。#include
22、 main() int i,j;for(i=0; imain()int i, sum=0;for(i=1; imain()int i=0 ;long n=1;float e=0, t=1;while(t1e-5) e+=t;i+;n*=i;15t=1.0/n;printf(“e=%fn“,e);(3)编写一个程序实现如下功能:验证下列结论:任何一个自然数 n 的立方都等于 n个连续奇数之和。例如: 13 =1 ; 23 =3+5 ; 33 =7+9+11 。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为 0 时止(程序以文件名 sy4_9.c 存盘)。参考程序:#i
23、nclude main() int num, a, i; while(1) printf(“输入一个自然数(输入 0 则结束程序) :“);scanf(“%d“, if(!num)break; a=num*num-num+1; /a 为第一个奇数printf(“%d*%d*%d=“,num, num,num);for(i=1; imain()int i;16for(i=900;ivoid main()int n=10,i,sum=0;int a10; /an改为 a10for(i=0;ivoid main( ) char a20=“wel“,b=“come“; /a=“wel“int i,n=
24、0;while(an!=0) n+; /!anfor(i=0;bi!=0;i+)an+i=bi;an+i=0; printf(“%sn“,a);(3)#include void main()int a23,b23,c23,i,j;for ( i = 0; ik)high=mid-1; /1elselow=mid+1; /2if(!find) printf(“%d 未找到n“,k);(2)#define N 20#include#include /添加(#include /添加或者和语句 srand( (unsigned)time( NULL ) )都不要)void main() int aN,
25、i,j,k,t;(srand( (unsigned)time( NULL ) ); /添加或者和#include 都不要)printf(“排序前:n“);for(i=0;i#includevoid main()char line80 ;char ch;int i,j;int len;printf(“输入一行字符 n“);gets(line) ; /1printf(“输入要删除字符 “);ch=getchar();i=0; while(linei!=0 )while( linei!=0 /2len=strlen(line);for(j=i;j19void main() int aN,i,j,k,
26、t,p;printf(“请输入%d 个整数 :n“,N);for(i=0;iaj)k=j;if(k!=i) t=ak; ak=ai; ai=t;printf(“n 排序后:n“);for(i=0;i=0 j-;aj+1=p; /插入printf(“n 插入后:n“);for(i=0;i#includevoid main( ) char s1100,s220; int i,d,n,n1;printf(“输入第一个串:“);scanf(“%s“,s1); printf(“输入第二个串:“);scanf(“%s“,s2);printf(“输入插入位置:“);scanf(“%d“,20n=strlen(s1);n1=strlen(s2);if(dn) strcat(s1,s2);else for(i=n;i=d-1;i-)s1n1+i=s1i;for(i=0;i#include #include void main() int a34;int i,j, nj,p,flag,k;srand( (unsigned)time( NULL ) );for(i=0;ip) nj=j;p=aij;flag=1;for(k=0;kaknj) flag=0;if(flag) printf(“鞍点为第%2d 行,第%2d 列,值为%4dn“,i+1,nj+1,p);