第二章 课后习题
用流程图表示求解以下问题的算法:
1、有两个瓶子 A和 B,分别盛放醋和酱油,要求将它们互换。
2、有 3个数 a,b,c,要求按大小顺序把它们输出。
3、求 1+2+3+….+100 。
4、判断一个数 n是否能同时被 3和 5整除。
5、求两个数 m和 n的最大公约数。
1、解题算法如下:
( 1)另取一个空瓶 C;
( 2)将瓶 A中的醋倒入 C中;
( 3)将瓶 B中的酱油倒入瓶 A中;
( 4)最后将瓶 C中的醋倒入瓶 B中;
( 5)算法结束。
2、解题算法如下:
ab
从键盘输入 3个数,放入 a,b,c中
a>b?
a>c?
b>c?
no
yes
开始
yes
no
ac
yes
no
bc
输出 a,b,c
3、解题算法如下:
算法开始定义整型变量 i=1,sum=0
Sum=sum+i;
i=i+1
输出 sum的值算法结束
i<=100
yes
no
4、解题算法如下:
从键盘输入一个整型数 n
n%3=0
是 否
n%5=0
是 否输出成功,n
可以被整除。
输出失败,n不能被 3整除。
输出失败,n能被 3整除但是不能被 5整除。
5、解题算法如下,算法开始输入两个整数 n和 m,定义变量 i=1
n>=m
i>=1
m%i=0 && n%i=0
输出 i
i=m i=n
i=i -1
no
yes
算法结束
yes
no
习题 4.9:输入一个华氏温度,输出一个摄氏温度。
main()
{
float c,f;
printf("\ninput f:");
scanf("%f",&f);
c=5*(f-32)/9;
printf("the c=%.2f",c);
}
第四章 课后习题习题 5.3
( 1) a+b>c成立但是 b==c不成立,所以表达式的值为 0
( 2)等价于 a||((b+c)&&(b-c)),a=3成立,所以值为 1
( 3)值为 1
( 4)值为 0
( 5)等价于 ((!(a+b))+c-1)&&(b+c/2),值为 1
第五章 课后习题习题 5.5
main()
{ int x,y;
scanf(“%d”,&x);
if (x<1)
y=x;
else
if (x<10)
y=2*x-1;
else
y=3*x-11;
printf(“x=%d,y=%d”,x,y);
}
X<1 否
y=x
1<=x<10
是是 否
y=
2x-1
y=
3x-11
习题 5.6
main()
{ float s; char c; int i;
printf("\ninput a score:");
scanf("%f",&s);
i=(int)(s/10);
switch(i)
{ case 10:
case 9,printf("A"); break;
case 8:printf("B"); break;
case 7:printf("C"); break;
case 6:printf("D"); break;
default,printf("E"); }
}
习题 5.9
main()
{ int a[5],x,i;
printf("\ninput 4 numbers:");
scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4]);
x=a[1]; i=1;
if(x>a[2]) /*若 x大于 a[2],则将 x中的改
{ x=a[2];i=2; } 为 a[2]的值 */
if(x>a[3]) /*若 x大于 a[3],则将 x中的改
{ x=a[3];i=3; } 为 a[3]的值 */
if(x>a[4]) /*若 x大于 a[4],则将 x中的改
{ x=a[4];i=4; } 为 a[4]的值 */
(总之,保证 x中是四个数中最小的数的值)
if(i!=1) /*若 i的值不等于 1,则说明 x中的
{ a[i]=a[1]; 不再是 a[1]的值,将 a[1]的值与
a[1]=x; } 四个数中最小值相交换 */
x=a[2];i=2;
if(x>a[3]) /*从 x=a[2]开始,依次与 a[3]和
{ x=a[3];i=3; } a[4]比较,保证 x中存放三个数
if(x>a[4]) 中的最小值。将 x的传给 a[2] */
{ x=a[4];i=4; }
if(i!=2)
{ a[i]=a[2];a[2]=x; }
x=a[3];i=3;
if(x>a[4]) /*从 x=a[3]开始,与 a[4]比较,
{ x=a[4];i=4; } 使 x中存放 a[3] 和 a[4]中的
if(i!=3) 最小值。将 x的传给 a[3] */
{ a[i]=a[3],a[3]=x; }
printf("a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d",a[
1],a[2],a[3],a[4]);
}
用流程图表示求解以下问题的算法:
1、有两个瓶子 A和 B,分别盛放醋和酱油,要求将它们互换。
2、有 3个数 a,b,c,要求按大小顺序把它们输出。
3、求 1+2+3+….+100 。
4、判断一个数 n是否能同时被 3和 5整除。
5、求两个数 m和 n的最大公约数。
1、解题算法如下:
( 1)另取一个空瓶 C;
( 2)将瓶 A中的醋倒入 C中;
( 3)将瓶 B中的酱油倒入瓶 A中;
( 4)最后将瓶 C中的醋倒入瓶 B中;
( 5)算法结束。
2、解题算法如下:
ab
从键盘输入 3个数,放入 a,b,c中
a>b?
a>c?
b>c?
no
yes
开始
yes
no
ac
yes
no
bc
输出 a,b,c
3、解题算法如下:
算法开始定义整型变量 i=1,sum=0
Sum=sum+i;
i=i+1
输出 sum的值算法结束
i<=100
yes
no
4、解题算法如下:
从键盘输入一个整型数 n
n%3=0
是 否
n%5=0
是 否输出成功,n
可以被整除。
输出失败,n不能被 3整除。
输出失败,n能被 3整除但是不能被 5整除。
5、解题算法如下,算法开始输入两个整数 n和 m,定义变量 i=1
n>=m
i>=1
m%i=0 && n%i=0
输出 i
i=m i=n
i=i -1
no
yes
算法结束
yes
no
习题 4.9:输入一个华氏温度,输出一个摄氏温度。
main()
{
float c,f;
printf("\ninput f:");
scanf("%f",&f);
c=5*(f-32)/9;
printf("the c=%.2f",c);
}
第四章 课后习题习题 5.3
( 1) a+b>c成立但是 b==c不成立,所以表达式的值为 0
( 2)等价于 a||((b+c)&&(b-c)),a=3成立,所以值为 1
( 3)值为 1
( 4)值为 0
( 5)等价于 ((!(a+b))+c-1)&&(b+c/2),值为 1
第五章 课后习题习题 5.5
main()
{ int x,y;
scanf(“%d”,&x);
if (x<1)
y=x;
else
if (x<10)
y=2*x-1;
else
y=3*x-11;
printf(“x=%d,y=%d”,x,y);
}
X<1 否
y=x
1<=x<10
是是 否
y=
2x-1
y=
3x-11
习题 5.6
main()
{ float s; char c; int i;
printf("\ninput a score:");
scanf("%f",&s);
i=(int)(s/10);
switch(i)
{ case 10:
case 9,printf("A"); break;
case 8:printf("B"); break;
case 7:printf("C"); break;
case 6:printf("D"); break;
default,printf("E"); }
}
习题 5.9
main()
{ int a[5],x,i;
printf("\ninput 4 numbers:");
scanf("%d%d%d%d",&a[1],&a[2],&a[3],&a[4]);
x=a[1]; i=1;
if(x>a[2]) /*若 x大于 a[2],则将 x中的改
{ x=a[2];i=2; } 为 a[2]的值 */
if(x>a[3]) /*若 x大于 a[3],则将 x中的改
{ x=a[3];i=3; } 为 a[3]的值 */
if(x>a[4]) /*若 x大于 a[4],则将 x中的改
{ x=a[4];i=4; } 为 a[4]的值 */
(总之,保证 x中是四个数中最小的数的值)
if(i!=1) /*若 i的值不等于 1,则说明 x中的
{ a[i]=a[1]; 不再是 a[1]的值,将 a[1]的值与
a[1]=x; } 四个数中最小值相交换 */
x=a[2];i=2;
if(x>a[3]) /*从 x=a[2]开始,依次与 a[3]和
{ x=a[3];i=3; } a[4]比较,保证 x中存放三个数
if(x>a[4]) 中的最小值。将 x的传给 a[2] */
{ x=a[4];i=4; }
if(i!=2)
{ a[i]=a[2];a[2]=x; }
x=a[3];i=3;
if(x>a[4]) /*从 x=a[3]开始,与 a[4]比较,
{ x=a[4];i=4; } 使 x中存放 a[3] 和 a[4]中的
if(i!=3) 最小值。将 x的传给 a[3] */
{ a[i]=a[3],a[3]=x; }
printf("a[1]=%d,a[2]=%d,a[3]=%d,a[4]=%d",a[
1],a[2],a[3],a[4]);
}