赞
踩
提问:当你面对一个问题时,你解决它的基本步骤是什么?
答曰:理解问题;制定计划;执行计划;回头看。
提问:如何用计算机求解问题?
答曰:问题描述——>对问题进行抽象,数学建模(让计算机理解问题)——>算法设计——>程序设计(用计算机语言)——>求出问题的解。然后,我们查看计算机求得的结果是否正确,还能不能改进等。
【实例】对于买土豆这个问题。我们需要抽象出买多少斤土豆(用x表示),土豆一斤多少钱(用y表示),继而才能计算出买土豆所需的总价格。
建模:t=x*y
算法设计:
step1:输入x,y;
step2:根据公式t=x*y计算总价;
step3:输出总价t
有了算法设计,接下来用程序语言来实现就可以进行问题的求解了。可以看出,算法设计很关键。
前辈说,程序设计是一门艺术,体现在:算法设计是程序的灵魂,结构设计是程序的肉体。Pascal语言的发明者,同时也是图灵奖获得者Wirth教授提出:算法+数据结构=程序。
算法的特性:
有穷性(包含有限的步骤操作);确定性(每一条指令必须有明确的含义,对于相同的输入能得出相同的执行结果);允许没有输入或有多个输入;必须有一个或多个输出。
常用的算法描述方法:
(1)自然语言;通俗易懂,符合人的日常思维习惯,但不易直接转换为程序。
step1:输入x,y;
step2:根据公式t=x*y计算总价;
step3:输出总价t
(2)伪码描述:介于自然语言和计算机语言之间
begin
input x,y
t=x*y
output t
End
(3)流程图:形象直观。描述程序的控制流程和指令执行情况的有向图。
(4)N-S结构化流程图:取消了流程线。
#include<stdio.h>
int main()
{
int x,y,xc;
scanf("%d%d",&x,&y);
xc=x*y;
printf("%d*%d=%d\n",x,y,xc);
return 0;
}
例子1:
单分支:如果满足某种条件,就进行相应的处理。例如,我昨天给月月说:闺女,你要是认真吃饭,待会妈妈让你看两集小猪佩奇。该问题可采用if语句来实现。
if(月月认真吃饭)
妈妈让她看两集小猪佩奇;
单分支只提到月月认真吃饭了该怎么处理,并没有提到月月不认真吃饭该怎么处理。
【编程实例】比较两个数的大小,求出较大的值。
#include<stdio.h>
int main()
{
int x=11,y=22;
int max=x;
if(x<y)
max=y;
printf("max=%d\n",max);
return 0;
}
单分支指的是:在满足x<y的情况下,语句max=y;被执行,并没有提到x>=y的情况该怎么做。所以说,单分支就是要么执行,要么不执行。
双分支:在两个不同的操作中选择其中一个来执行。用if-else语句实现。
例如,我今天又给月月说:闺女,你要是认真吃饭,待会妈妈让你看两集小猪佩奇;否则的话,妈妈带你去游乐场玩。该问题可采用if-else语句来实现。
if(月月认真吃饭)
妈妈让她看两集小猪佩奇;
else
妈妈带她去游乐场玩;
双分支不但提到月月认真吃饭了该怎么处理,也提到了月月不认真吃饭该怎么处理。
【编程实例】比较两个数的大小,求出较大的值。
#include<stdio.h>
int main()
{
int x=11,y=22,max;
if(x<y)
max=y;
else
max=x;
printf("max=%d\n",max);
return 0;
}
再来看一个稍微复杂的双分支结构,不要晕哦。
【编程实例】比较三个数的大小,求出最小值。
#include<stdio.h> int main() { int x=11,y=22,z=33; if(x>y) { if(y>z) printf("min=%d\n",z); else printf("min=%d\n",y); } else { if(x>z) printf("min=%d\n",z); else printf("min=%d\n",x); } return 0; }
多分支:有多个选择,用else if语句实现。
例如,我又给月月说:闺女,你要是认真吃饭,待会妈妈让你看两集小猪佩奇;否则的话,如果你认真洗脸,妈妈就带你去游乐场玩,要是不认真洗脸,就待在家里听妈妈给你讲故事哦。该问题可采用if-else语句来实现。
if(月月认真吃饭)
妈妈让她看两集小猪佩奇;
else if(月月认真洗脸)
妈妈带她去游乐场玩;
else
月月待在家里听妈妈讲故事;
【编程实例】根据输入的学生成绩判断等级:成绩≥90时为A级,80≤成绩<90时为B级,70≤成绩<80时为C级,60≤成绩<70时为D级,成绩<60为E级。
#include<stdio.h> int main() { int score; scanf("%d",&score); if(score<0||score>100) printf("input error!\n"); else if(score>=90&&score<=100) printf("A\n"); else if(score>=80) printf("B\n"); else if(score>=70) printf("C\n"); else if(score>=60) printf("D\n"); else printf("E\n"); return 0; }
上述程序也可以改写单分支结构:
#include<stdio.h> #include<stdlib.h> #include<conio.h> int main() { int score; scanf("%d",&score); if(score<0||score>100) { printf("input error!\n"); exit(1); } if(score>=90&&score<=100) printf("A\n"); if(score>=80&&score<90) printf("B\n"); if(score>=70&&score<80) printf("C\n"); if(score>=60&&score<70) printf("D\n"); if(score>=0&&score<60) printf("E\n"); return 0; }
也可以改写为双分支结构:
#include<stdio.h> #include<stdlib.h> #include<conio.h> int main() { int score; scanf("%d",&score); if(score<0||score>100) { printf("input error!\n"); exit(1); } else { if(score>=70) { if(score<80) printf("C\n"); else if(score<90) printf("B\n"); else printf("A\n"); } else { if(score>=60) printf("D\n"); else printf("E\n"); } } return 0; }
采用嵌套,if选择语句将变得异常灵活。 大家慢慢领悟它的奥秘吧。祝你们愉快,健康!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。