您的当前位置:首页正文

《C语言程序设计》(江宝钏著)实验二答案

2024-10-18 来源:威能网
2.5 实验二 编写几个简单的C程序

一、实验目的与要求

1. 2. 3. 4. 5. 6.

掌握C语言基本数据类型的概念,理解数据类型与运算的关系。 掌握简单变量的定义,算术表达式和赋值表达式的使用。 掌握基本输出语句的使用。

进一步熟悉C程序的编辑、编译、连接和运行的过程。 掌握简单C程序查错方法,编写几个简单程序。 实验4学时

二、实验内容

1.程序验证或填空

(1) 编译和运行下面程序,查看执行的结果:

#include int main(void) {

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 main(void) {

int y; y = x*x;

printf(\"%d = %d * %d\ /* 输出 printf(\"d * %d = %d\}

#include int main(void) {

int x,y;

scanf(\"%d\ y = x*x;

printf(\"%d = %d * %d\ printf(\"%d * %d = %d\

return 0; }

3.一般编程题

编程题1

编写程序,输入二个整数,计算它们的和、差、积、商和余数,并按5+11=16这样的输出格式输出结果。

#include void main() {

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 void main() {

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 void main() {

char c1;

printf(\"请输入一个大写字母:\"); c1=getchar(); c1=c1+32;

printf(\"小 写 字 母 为:%c\\n\}

编程题4

求华氏温度150 ℉对应的摄氏温度。计算公式如下,其中:c表示摄氏温度,f表示华氏温度。

c55f32 99要求输出结果为: fahr = 150,celsius = 66 答:

#include void main() {

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\ }

思考:如果使用公式c5(f32)计算华氏温度150 ℉所对应的摄氏温度,计算结果是

9否一样?为什么?

不一样 结果为65 与精度有关

编程题5 编写程序,从键盘输入学生的三门课成绩,求其平均成绩(保留小数点后1位)。 答:

#include void main() {

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 void main() {

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 #include int main(void) {

int a;

printf(\"请输入存款本金额:\\n\"); scanf(\"%d\ int n;

printf(\"请输入存款期年数:\\n\"); scanf(\"%d\ float c,d;

c=a*pow(1+0.0225,n);

因篇幅问题不能全部显示,请点此查看更多更全内容