一、实验目的与要求
1. 2. 3. 4. 5. 6.
掌握C语言基本数据类型的概念,理解数据类型与运算的关系。 掌握简单变量的定义,算术表达式和赋值表达式的使用。 掌握基本输出语句的使用。
进一步熟悉C程序的编辑、编译、连接和运行的过程。 掌握简单C程序查错方法,编写几个简单程序。 实验4学时
二、实验内容
1.程序验证或填空
(1) 编译和运行下面程序,查看执行的结果:
#include int si=-1; float f=5; double df=3; printf(\"si = %d, f = %f, df = %lf\\n\ return 0; } 若把输出语句中的格式控制中的格式说明符的顺序改变一下,会有什么结果? 再把%lf修改为%f,运行会有什么结果? Si=-1,f=5.00000,df=3.000000 当顺序变为printf(\"si = %f, f = %lf, f = %d\\n\时 结果为 si=-0.000000 f=0.000000 df=1074266112 当把%lf修改为%f时 即 printf(\"si = %f, f = %f, f = %d\\n\ 结果为 si=-0.000000 f=0.000000 df=1074266112 (2)分析程序,并上机运行验证运行结果 #include “stdio.h” void main( ) { printf(“\*\\n”); printf(“\\\b* * *\\n”); printf(“\\\b\\b * * * * *\\n”); } Tab * 换行 Tab 取消tab * * * 换行 Tab 取消tab 退格 * * * * * 换行 (3) 运行程序,并分析结果。 #include “stdio.h” void main( ) { int a=10,x=5,y=6; a+=a*=6; x=y++; y=++x ; a=x+++y ; printf(“%d,%d,%d\\n”,a,x,y); } 14,8,7 以下绿色部分为对结果的分析 #include “stdio.h” void main( ) { int a=10,x=5,y=6; a+=a*=6; \\\\此步对结果无影响\\\\ x=y++; \\\\x=y y=y+1 此时x=6,y=7\\\\ y=++x ; \\\\x=x+1 y=x 此时 x=7 y=7\\\\ a=x+++y ; \\\\a=x+y x=x+1 此时 x=8 y=7 a=14\\\\ printf(“%d,%d,%d\\n”,a,x,y); } (4)不用第3个变量,实现将二个数进行对调,请填空。 #include “stdio.h” void main( ) { int a,b ; scanf(“%d%d”,&a,&b); printf(“a=%d b=%d\\n”,a,b); a=a+b ; b=a-b ; a=a-b ; printf(“a=%d b=%d\\n”,a,b); } 2.程序改错 改正下面程序中的多处错误。计算某个数x的平方y,并分别以“y = x*x”和“x*x = y”的形式输出x和y的值。x的值由键盘输入。 输出示例(假设x的值为3): 9 = 3*3 3*3 = 9 源程序(有错误的程序) #include int y; y = x*x; printf(\"%d = %d * %d\ /* 输出 printf(\"d * %d = %d\} 答 #include int x,y; scanf(\"%d\ y = x*x; printf(\"%d = %d * %d\ printf(\"%d * %d = %d\ return 0; } 3.一般编程题 编程题1 编写程序,输入二个整数,计算它们的和、差、积、商和余数,并按5+11=16这样的输出格式输出结果。 #include int a,b,m,n,p,q,r; printf(\"请输入两个整数:\\n\"); scanf(\"%d,%d\ m=a+b; n=a-b; p=a*b; q=a/b; r=a%b; printf(\"%d+%d=%d\\n\ printf(\"%d-%d=%d\\n\ printf(\"%d*%d=%d\\n\ printf(\"%d/%d=%d\\n\ printf(\"%d%%%d=%d\\n\} 编程题2 编写程序,输入二个实数,计算它们的和、差、积、商,并按32.24=12.2+20.04这样的输出格式输出结果。实数分别定义为单精度实数或双精度实数。 #include float a,b,m,n,p,q; printf(\"请输入两个实数:\\n\"); scanf(\"%f%f\ m=a+b; n=a-b; p=a*b; q=a/b; printf(\"%.2f=%.2f+%.2f\\n\ printf(\"%.2f=%.2f-%.2f\\n\ printf(\"%.2f=%.2f*%.2f\\n\ printf(\"%.2f=%f.2/%.2f\\n\ } 编程题3 编写程序,从键盘输入一个大写字母,改用小写字母输出。 #include char c1; printf(\"请输入一个大写字母:\"); c1=getchar(); c1=c1+32; printf(\"小 写 字 母 为:%c\\n\} 编程题4 求华氏温度150 ℉对应的摄氏温度。计算公式如下,其中:c表示摄氏温度,f表示华氏温度。 c55f32 99要求输出结果为: fahr = 150,celsius = 66 答: #include float c,f,fahr,celsius; printf(\" fahr=:\"); scanf(\"%f\ c=5*f/9-5*32/9; fahr=f; celsius=c; printf(\"celsius=:%.0f\\n\\n\\n\\n\ } 思考:如果使用公式c5(f32)计算华氏温度150 ℉所对应的摄氏温度,计算结果是 9否一样?为什么? 不一样 结果为65 与精度有关 编程题5 编写程序,从键盘输入学生的三门课成绩,求其平均成绩(保留小数点后1位)。 答: #include float a,b,c,d; printf(\"学生的三门课程成绩(以逗号隔开):\\n\"); scanf(\"%f,%f,%f\ d=(a+b+c)/3; printf(\"%.1f\\n\ } 4.较难编程题 编程题1 当n为三位十进制整数时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 这里增加了一个题目 输出示例: n为整数152时,它的个位数字是2,十位数字是5,百位数字是1 提示:n的个位数字digit1的值是n%10,十位数字digit2的值是(n/10)%10,百位 数字digit3的值是n/100。 #include void main() { int a,b,c,d; printf(\"请输入一个三位整数:\\n\"); scanf(\"%d\ b=a%10; printf(\"个位数字是:%d\\n\ c=a/10%10; printf(\"十位数字是:%d\\n\ d=a/100; printf(\"百位数字是:%d\\n\ } 编程题2 将从键盘输入的实型十进制数分离为整数部分和小数部分后输出。如输入233.55,输出为:233.55=233+0.55。 #include float a,b; int c; printf(\"请输入一个十进制实数\\n\"); scanf(\"%f\ c=(int)a; b=a-c; printf(\"整数部分为:%d\\n\printf(\"小数部分为:%.2f\\n\ printf(\"%.2f=%d+%.2f\\n\ } 编程题3 计算定期存款的本金与利息之和。设银行定期存款的年利率rate为2.25%,存款期为n年,存款本金为money元,具体的数字由键盘输入,编程计算n年后的本金与利息之和(提示,利用pow函数)。 #include int a; printf(\"请输入存款本金额:\\n\"); scanf(\"%d\ int n; printf(\"请输入存款期年数:\\n\"); scanf(\"%d\ float c,d; c=a*pow(1+0.0225,n); 因篇幅问题不能全部显示,请点此查看更多更全内容