谭浩强C程序设计第四版第二章课后答案

1.算法:广义来讲,完成一件事情的方法,狭义来讲,数值算法和非数值算法
2.结构化算法:按照一些基本结构(各种顺序框、判断框),实现了算法结构框,成为结构化算法,能够提高可读性,提高可靠性,可维护性。
3.顺序结构:从上而下简单明了能够直接阅读
选择结构:选择判断执行之后的程序,确保可以继续执行
循环结构:反复执行操作
4.1交换

#include 
#include 

template <typename T>
void Swap(T & a, T & b)
{
	T c;
	c = a;
	a = b;
	b = c;
}

int main()
{
	std::string a = "醋";
	std::string b = "酱油";
	std::cout<<"a = "<< a <<"\t"<<"b = "<< b <<std::endl;
	Swap(a,b);
	printf("交换之后\n");
	std::cout<<"a = "<< a <<"\t"<<"b = "<< b <<std::endl;
	int aa = 23;
	int bb = 24;

	std::cout<<"aa = "<< aa <<'\t'<<"bb = "<< bb <<std::endl;
	Swap(aa,bb);
	printf("交换之后\n");
	std::cout<<"aa = "<< aa <<'\t'<<"bb = "<< bb <<std::endl;
}

4.2求10个输入中的最大值

#include 

int main()
{
	int a,max = -65535;
	for (int i = 0;i < 10;i++)
	{
		scanf("%d",&a);
		max = max > a ? max : a;
	}
	printf("max = %d",max);
	return 0;
}

4.3三个数按大小顺序排列

#include 

template <typename T>
void Swap(T & a, T & b)
{
	T c;
	c = a;
	a = b;
	b = c;
}

int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	if ( a > c)
	{
		Swap(a,c);
	}
	if ( b > c)
	{
		Swap(b,c);
	}
	if ( a > b)
	{
		Swap(a,b);
	}
	printf("按从大到小顺序为:%d\t%d\t%d\n",a,b,c);
	return 0;
}

4.4求1到100和

#include 

int main()
{
	int sum = 0;
	for (int i = 1;i<=100;i++)
	{
		sum += i;
	}
	printf("sum = %d\n",sum);
	return 0;
}

4.5判断一个数能否被3和5同时整除

#include 

int main()
{
	int n;
	scanf("%d",&n);
	if ( !( n % 3 ) &&  !( n % 5 ))
		printf("%d能被3和5同时整除!\n",n);
	else
		printf("%d不能被3和5同时整除!\n",n);
	return 0;
}

4.6将100到200之间的素数输出

#include 
#include 
bool judgePrime(int n)
{
	for (int i = 2;i < sqrt((double)n) + 1;i++)
	{
		if ( n % i == 0)
		{
			return false;
		}
	}
	return true;
}

int main()
{
	for (int i = 100;i <= 200;i++)
	{
		if (judgePrime(i))
		{
			printf("%d是一个素数\n",i);
		}
	}

	return 0;
}

4.7辗转相除法最大公约数

#include 

int yueshu(int a,int b)
{
	while ( b % a)
	{
		int y = b % a;
		b = a;
		a = y;
	}
	return a;
}

int main()
{
	int a,b;
	scanf("%d%d",&a,&b);
	printf("最大公约数为:%d\n",yueshu(a,b));

	return 0;
}

4.8二次方程的解:不完善的答案,需要改改a,b,c类型

#include 
#include 
int main()
{
	double a,b,c,disc,x1,x2,p,q;
	scanf("%lf%lf%lf",&a,&b,&c);
	disc =  b * b - 4 * a * c;
	p = -b/(2.0 * a);
	q = sqrt(disc)/(2.0 * a);
	if (  disc < 0)
	{
		printf("方程无解。\n");
	}
	else if (disc == 0)
	{
		printf("方程有两个相同的解。\n");
		printf("x1 = x2 = %lf\n",p);
	}
	else
	{
		printf("方程有两个不同的解。\n");
		printf("x1 = %lf,x2 = %lf\n",p+q,p-q);
			
	}
	return 0;
}

你可能感兴趣的:(谭浩强C程序设计第四版课后答案)