选择结构程序设计之习题

有3个整数 a,b,c,由键盘输入,输出其中最大的数


//有3个整数 a,b,c,由键盘输入,输出其中最大的数

#include <stdio.h>

int main(void)
{
	int a, b, c;

	scanf("a=%d b=%d c=%d", &a, &b, &c);

	if (a > b)
	{
		int temp = a;
		a = b;
		b = temp;
	}//a < b

	if (a > c)
	{
		int temp = a;
		a = c;
		c = temp;
	}//a < c

	if (b > c)
	{
		int temp = b;
		b = c;
		c = temp;
	}//b < c

	printf("max = %d", c);

	return 0;
}

在VS编译器内会报C4996错误,解决见下文:(下同)

C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 博客园 (cnblogs.com)

运行结果:

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


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

#include <stdio.h>
#include <math.h>

int main(void)
{
	int a;

	printf("请输入小于1000的正数\n");
	scanf("%d", &a);

	while ((a >= 1000) || (a <= 0))
	{
		printf("请重新输入\n");
		scanf("%d", &a);
	}

	double sq = sqrt(a);

	int iSq = (int)sq;

	printf("%d", iSq);

	return 0;
}

运行结果:

有一个函数,当 x < 1 时,y = x;当 x >= 1 且 x < 10 时,y = 2x - 1;当 x >= 10时,y = 3x - 11;写程序,输入 x 的值,输出 y 相应的值


//有一个函数,当 x < 1 时,y = x;当 x >= 1 且 x < 10 时,y = 2x - 1;当 x >= 10时,y = 3x - 11;写程序,输入 x 的值,输出 y 相应的值

#include <stdio.h>

int main(void)
{
	double x;

	scanf("%lf", &x);

	double y;

	if (x < 1)
		y = x;
	else if (x < 10)
		y = 2 * x - 1;
	else
		y = 3 * x - 11;

	printf("y=%lf\n", y);

	return 0;
}

运行结果:

结果一:

  结果二:
  结果三:

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


//给出一百分制的成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’90以上为‘A’[80,89]为‘B’[70,79]为‘C’[60, 69]为‘D’60以下为‘E’

#include <stdio.h>

int main(void)
{
	int a;

	scanf("%d", &a);

	if (a < 60)
	{
		printf("E");
		return 0;
	}

	int i = a / 10;
	switch (i)
	{
	case 6:
		printf("D");
		break;
	case 7:
		printf("C");
		break;
	case 8:
		printf("B");
		break;
	case 9:
	case 10:
		printf("A");
		break;
	}

	return 0;
}

运行结果:

结果一:

  结果二:
  结果三:
  结果四:
  结果五:

给出一个不多于5位的正整数,要求:

  1. 求出它是几位数
  2. 分别输出每一位数字
  3. 按逆序输出各位数字

//求出它是几位数

#include <stdio.h>

int main(void)
{
	int a;

	scanf("%d", &a);

	int i = 0;
	while (a > 0)
	{
		a = a / 10;
		i++;
	}

	printf("是%d位数", i);

	return 0;
}

运行结果:


//分别输出每一位数字

#include <stdio.h>

int main(void)
{
	int a;

	scanf("%d", &a);

	while (a > 0)
	{
		printf("%d\n", a % 10);
		a = a / 10;
	}

	return 0;
}

运行结果:


//按逆序输出各位数字

#include <stdio.h>

int main(void)
{
	int a;

	scanf("%d", &a);

	while (a > 0)
	{
		printf("%d", a % 10);
		a = a / 10;
	}

	return 0;
}

运行结果:


#include <stdio.h>

int main(void)
{
	double I, p;

	scanf("%lf", &I);

	if (I <= 100000)
		p = I * 0.01;
	else if (I <= 200000)
		p = 100000 * 0.01 + (I - 100000) * 0.075;
	else if (I <= 400000)
		p = 100000 * 0.01 + 100000 * 0.075 + (I - 200000) * 0.05;
	else if (I < 600000)
		p = 100000 * 0.01 + 100000 * 0.075 + 200000 * 0.05 + (I - 400000) * 0.03;
	else if (I < 1000000)
		p = 100000 * 0.01 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (I - 600000) * 0.015;
	else
		p = 100000 * 0.01 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (I - 1000000) * 0.01;

	printf("%lf", p);

	return 0;
}

运行结果:

结果一:

  结果二:
  结果三:
  结果四:
  结果五:
  结果六:

输入4个整数,要求按由小到大的顺序输出


//输入4个整数,要求按由小到大的顺序输出

#include <stdio.h>

void swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

int main(void)
{
	int a, b, c, d;

	scanf("%d %d %d %d", &a, &b, &c, &d);

	if (a > b)
		swap(a, b);//a < b

	if (a > c)
		swap(a, c);//a < c

	if (a > d)
		swap(a, d);//a < d

	//至此,a < ...

	if (b > c)
		swap(b, c);// b < c

	if (b > d)
		swap(b, d);//b < d

	//至此,a < b < ...

	if (c > d)
		swap(c, d);//c < d

	printf("%d %d %d %d", a, b, c, d);

	return 0;
}

运行结果:


#include <stdio.h>
#include<math.h>

int main(void)
{
	double x, y, d;

	scanf("%lf %lf", &x, &y);

	if (x < 0)
	{
		if (y < 0)//-2, -2
			d = sqrt(pow(x - (-2), 2) + pow(y - (-2), 2));
		else//-2, 2
			d = sqrt(pow(x - (-2), 2) + pow(y - 2, 2));
	}
	else
	{
		if (y < 0)//2, -2
			d = sqrt(pow(x - 2, 2) + pow(y - (-2), 2));
		else//2, 2
			d = sqrt(pow(x - 2, 2) + pow(y - 2, 2));
	}

	if (d <= 1)
		printf("10");
	else
		printf("0");

	return 0;
}

运行结果: