C程序设计(第五版)谭浩强 第二章复习笔记

第二章 算法----程序的灵魂
2.1 程序=算法+数据结构 (沃思)
一个程序主要包括以下两方面:
1) 对数据的描述。在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式。这就是数据结构
2) 对操作的描述,操作的目的是对数据进行加工处理,以得到期望的结果。
2.2 什么是算法
定义:广义的说,为解决一个问题而采取的方法和步骤称为算法
计算机算法分为:
数值运算算法:求数值解
非数值运算算法:事务管理领域
2.3 简单的算法举例
1)求12345
1】 #include<stdio.h>
int main(){
int i=1,m=2;
while(m<=5){
i=i*m;
m=m+1;
}
printf("%d\n",i);

}
2】#include<stdio.h>
int main(){
int i;
int sum=1;
for(i=1;i<=5;i++){
sum=sumi;
}
printf("1
234的值是:%d\n",sum);

}
2)有50个学生,要求输出成绩在80分以上的学生的学号和成绩。
#include<stdio.h>
int main(){
int i;
int score[50];
for(i=0;i<50;i++){
printf(“请输入第%d个学生的学号和成绩\n”,i+1);
scanf("%d",&score[i]);
}
printf(“成绩高于80分的学生的学号是”);
for(i=0;i<50;i++){
if(score[i]>=80){
printf("%d\n",i+1);
}
}
return 0;
}
3) 判定2000-2500年中的每一年是否为闰年,并将结果输出。
#include<stdio.h>
int main(){
int i,num,a;
num=1;a=1;
for(i=2000;i<2500;i++){
if((i%40&&i%100!=0)||i%4000){
num++;
printf("%d是闰年\n",i);
}else{
a++;
printf("%d不是闰年\n",i);
}
}
printf(“闰年个数为%d\n”,num);
printf(“不是闰年个数为%d\n”,a);
return 0;
}
4)求1-1/2+1/3-1/4+···+1/99-1/100.
#include<stdio.h>
int main(){
//法三(最优)
int i = 0;
double sub = 0;
for (i = 1; i < 101; ++i)
{
if (i % 2 == 0)
sub -= 1.0 / i;
else
sub += 1.0 / i;
}

printf("sub=%f\n", sub);

return 0;
}

5)给出一个大于或等于3的正整数,判断它是不是一个素数
#include<stdio.h>
int main(){
printf(“请输入一个大于或等于3的正整数:”) ;
int a,b,c=0;
scanf("%d",&b);
for(a=2;a<b;a++){
if(b%a0)
c++;
}
if(c
0)
printf(“是素数”);
else
printf(“不是素数”);

return 0;
}

2.4算法的特性
有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性;
2.5 算法的表示
2.5.1 用自然语言表示算法
优点:通俗易懂
缺点:文字冗长,有歧义
2.5.2 用流程图表示算法
优点:直观形象、易于理解

1) 求12345

2) 有50个学生,要求输出成绩在80分以上的学生的学号和成绩。

3) 判定2000-2500年中的每一年是否为闰年,并将结果输出。

4) 求1-1/2+1/3-1/4+···+1/99-1/100.

5) 给出一个大于或等于3的正整数,判断它是不是一个素数

2.5.3三种基本结构和改进的流程图
结构:顺序结构、选择结构、循环结构(while,until)
2.5.4 用N-S流程图表示算法

2.6 结构化程序设计方法
自顶向下、逐步细化、模块化设计、结构化编码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值