C程序设计 第四章课后习题

1.什么是算术运算?什么是关系运算?什么是逻辑运算?

答:1.算术运算就是指加减乘除和整数的模运算(即取余数运算)。

           2.关系运算就是比较运算,将两个数值进行比较,判断其比较结果是否符合给定的条件。

           3.逻辑运算指两个条件进行运算,有逻辑与、逻辑或、逻辑非三种。

2.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?

答:C语言中用“0”表示“假”,“1”表示“真”;

       “0”即为假,“非0”为真;

3.写出下面逻辑表达式的值。设a=3,b=4,c=5。

(1)0

(2)1

(3)1

(4)0

(5)1

4.有三个整数a,b,c,由键盘输入,输出其中最大的值。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>//a,b,c 输出最大值
int main()
{
	int a, b, c, max;
	scanf("%d%d%d",&a,&b,&c);
	max = a;
	if (b > max)
		max = b;
	else if (c > max)
		max = c;
	printf("max is %d\n",max);
	
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>//a,b,c 输出最大值
int main()
{
	int a, b, c, temp,max;
	printf("请输入三个数:");
	scanf("%d%d%d",&a,&b,&c);
	temp = (a > b) ? a : b;
	max = (temp > c) ? temp : c;
	printf("3个数中的最大数是%d\n",max);
	return 0;
}

5.从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据之后先对其进行检查是否为小于1000的正数。若不是,则要求重新输入。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#define M 1000
int main()
{
	int  i, k;
	printf("请输入一个小于%d的正数i:",M);
	scanf("%d",&i);
	while (i > M) 
	{
		printf("输入的数不符合要求,请重新输入一个小于%d的正数i:", M);
		scanf("%d",&i);
		k = sqrt(i);
	}
	printf("%d的平方根的整数部分是%d\n",i,k);
	return 0;
}

 6.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int x, y;
	printf("enter data:\n");
	scanf("%d", &x);
	if (x < 1)
	{
		y = x;
	}
	else 
	{
		if (1 <=x < 10) 
		{
			y = 2 * x - 1;
		}
		else
			y = 3 * x - 11;
		
	}
	printf("输出值是%d", y);
	return 0;
	

	
}

7. 略过

8.给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	float score;
	char grade;
	printf("请输入学生成绩:");
	scanf("%f", &score);
	while (score > 100 || score < 10)
	{
		printf("\n输入有误,请重新输入");
		scanf("%f", &score);
	}
	switch ((int)(score / 10))
	{
	case 10:
	case 9: grade = 'A'; break;
	case 8: grade = 'B'; break;
	case 7: grade = 'C'; break;
	case 6: grade = 'D'; break;
	case 5:
	case 4:
	case 3:
	case 2:
	case 1:
	case 0: grade = 'E'; break;

	}
	printf("成绩是%5.1f,相应的等级是%c\n", score, grade);
	return 0;
	
	

	
}

9.略

10.(1)if语句编写程序

(2)switch语句编写程序

(1)#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i;
	double bonus, bon1, bon2, bon4, bon6, bon10;
	bon1 = 100000 * 0.1;
	bon2 = bon1 + 100000 * 0.075;
	bon4 = bon2 + 100000 * 0.05;
	bon6 = bon4 + 100000 * 0.03;
	bon10 = bon6 + 400000 * 0.015;
	printf("请输入利润i:\n");
	scanf("%d",&i);
	if (i <= 100000)
		bonus = i * 0.1;
	else if (i <= 200000)
		bonus = bon1 + (i - 100000) * 0.075;
	else if (i <= 400000)
		bonus = bon2 + (i - 200000) * 0.05;
	else if (i <= 600000)
		bonus = bon4 + (i - 400000) * 0.03;
	else if (i <= 1000000)
		bonus = bon6 + (i - 600000) * 0.015;
	else 
		bonus = bon10 + (i - 1000000) * 0.01;
	printf("奖金是:%10.2f\n", bonus);
	return 0;

}
(2)#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int i;
	double bonus, bon1, bon2, bon4, bon6, bon10;
	int branch;
	bon1 = 100000 * 0.1;
	bon2 = bon1 + 100000 * 0.075;
	bon4 = bon2 + 100000 * 0.05;
	bon6 = bon4 + 100000 * 0.03;
	bon10 = bon6 + 400000 * 0.015;
	printf("请输入利润i:\n");
	scanf("%d",&i);
	branch = i / 100000;
	if (branch > 10) branch = 10;
	switch (branch)
	{
	case 0:bonus = i * 0.1; break;
	case 1:bonus = bon1 + (i - 100000) * 0.075; break;
	case 2:
	case 3:bonus = bon2 + (i - 200000) * 0.05; break;
	case 4:
	case 5:bonus = bon4 + (i - 400000) * 0.03; break;
	case 6:
	case 7:
	case 8:
	case 9:bonus = bon6 + (i - 600000) * 0.015; break;
	case 10:bonus = bon10 + (i - 1000000) * 0.01; break;
	}
	printf("奖金是%10.2f\n", bonus);
	return 0;


}

11.输入四个数,要求按由大到小的顺序输出。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int a, b, c, d, t;
	printf("请输入四个数:");
	scanf("%d,%d,%d,%d",&a,&b,&c,&d);
	printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
	if (a > b)
	{
		t = a; a = b; b = t;
	}
	if (a > c)
	{
		t = a; a = c; c = t;
	}
	if (a > d)
	{
		t = a; a = d; d = t;
	}
	if (b > c)
	{
		t = b; b = c; c = t;
  
	}
	if (b > d)
	{
		t = b; b = d; d = t;
	}
	if (c > d)
	{
		t = c; c = d; d = t;
	}
	printf("排列结果如下:\n");
	printf("%d %d %d %d ", a, b, c, d);
	return 0;

}

12.

#include<stdio.h>
int main()
{
	int h = 10;
	float x1 = 2, y1 = 2, x2 = -2, y2 = 2, x3 = -2, y3 = -2, x4 = 2, y4 = -2, x, y, d1, d2, d3, d4;
	printf("请输入一个点(x,y):");
	scanf_s("%f,%f", &x, &y);
	d1 = (x - x4) * (x - x4) + (y - y4) * (y - y4);
	d2 = (x - x1) * (x - x1) + (y - y1) * (y - y1);
	d3 = (x - x2) * (x - x2) + (y - y2) * (y - y2);
	d4 = (x - x3) * (x - x3) + (y - y3) * (y - y3);
	if (d1 > 1 && d2 > 1 && d3 > 1 && d4 > 1)
		h = 0;
	printf("该点最高度为%d\n", h);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值