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