P14
1.什么是程序? 什么是程序设计?
(1)一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。
(2)为了使计算机系统实现各种功能,设计需要的程序。
2.为什么需要计算机语言? 高级语言有何特点?
(1)是人和计算机交流信息的需要,创造一种计算机和人都能识别的语言。
(2)接近人们习惯使用的自然语言和数学语言,使人容易理解和使用,更易学习。
3.正确理解以下名词及其含义:
(1)源程序:高级语言写的程序;目标程序:机器指令的程序;
可执行程序:可在操作系统存储空间中浮动定位的二进制可执行程序。
(2)编辑:编写代码,制作C语言的源文件。
编译:是由编译程序将C语言源文件转换成二进制中间文件,对文件内部的语法语义做处理,如果编译出错,无法进行后续动作。
连接:将编译中生成的中间文件组合成二进制可执知行文件,这一步会对文件之间的关联做检查,如果出错,将不会生成可执行文件,也就无法执行。
(3)程序模块:可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令。
程序文件:在质量管理体系中质量手册的下一级文件层次,规定某项工作的一般过程。存储的是程序,包括源程序和可执行程序。
(4)函数:是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口。
主函数:程序执行的起点。
被调用函数:由一个函数调用另一个函数,则称第二个函数为被调用函数。
库函数:将函数封装入库,把一些常用到的函数编完放到一个文件里,供不同的人进行调用。
(5)程序调试:将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。
程序测试:对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。
4.编写一个C程序,运行时输出
Hello World!
#include<stdio>
int main()
{
printf("Hello World!");
return 0;
}
P35
1.什么是算法?试从日常生活中找3三个例子,描述它们的算法。
广义讲,为解决一个问题而采取的方法和步骤,成为“算法”。
例:做菜需要按照一些步骤进行加工。从某地到另一地方去,运输的过程。参加一项活动,报名、录取、参加、结束的步骤。
2.什么叫结构化的算法?为什么要提倡结构化的算法?
定义:由一些基本结构顺序组成,流程的转移只存在于一个基本的结构范围之内。
优点:便于编写,阅读,修改和维护。减少程序出错的机会,提高程序可读性。
3.试述3种基本结构的特点,请另外设计两种基本结构(要符合基本结构的特点)。
(1)顺序结构:执行按照简单的链式结构进行。
选择结构:选取结构或分支结构,必包含一个判断框,判断对给定条件是否满足,从而选择下一步。
循环结构:重复结构,反复执行某一部分的操作。
基本结构:
4.用传统流程图表示求解以下问题的算法。
(1)有两个瓶子A和B,分别存放醋和酱油,要求将它们互换(即A瓶原来盛醋,现改盛酱油,B瓶则相反。
找一个空瓶C作为过渡,
7.什么叫结构化程序设计?它的主要内容是什么?
结构化程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。
主要内容:把一个复杂问题的求解过程分段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。
8.用自上向下、逐步细化的方法进行以下算法的设计:
(1)输出1900--2000年中是闰年的年份,符合下面两个条件之一的年份是闰年:【1】能被4整除但不能被100整除:【2】能被100整除且能被400整除。
写法1:
int main()
{
int i = 1900;
while (i <= 2000)
{
if (i % 4 == 0 && i % 100 != 0)
{
printf("%d\t", i);
}
else if (i % 100 == 0 || i % 400 == 0)
printf("%d\t", i);
i = i + 1;
}
return 0;
}
写法2:
int main()
{
int i;
for (i = 1900; i <= 2000; i++)
{
if (i%100==0||i % 400 == 0)
printf("%d\n", i);
else if (i % 4 == 0)
{
int m = i % 100;
if (m && 5)//if的真假数判断
{
printf("%d\n", i);
}
}
}
return 0;
}
(2)求ax^2+bx+c=0的根。分别考虑d=b^2-4ac大于0、等于0和小于0这3种情况。
#include<math.h>
int main()
{
float a, b, c, d, s, x1, x2;
printf("请分别输入ax^2+bx+c=0的系数a、b、c:");
scanf_s("%f %f %f", &a,&b,&c);
d = b *b- 4*a*c;
s = sqrt(d);
if (d > 0)
{
x1 = (-b + s) / 2;
x2 = (-b - s) / 2;
printf("x1=%f\tx2=%f", x1, x2);
}
else if (d ==0)
{
x1 = (-b) / 2*a;
printf("x1=%f", x1);
}
else if (d < 0)
{
printf("该函数无实数解");
return 0;
}
return 0;
}
(3)输入10个数,输出其中最大的一个数。
int main()
{
int arr[10];
int Max=0;
printf("请输入十个数: \n");
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &arr[i]);//循环输入,每输入一个数都需要Enter一次。
if (Max < arr[i])
{
Max = arr[i];
}
}
return 0;
}
int Max();// 声明
int main()
{
printf("最大值是%d\n", Max());//函数调用
return 0;
}
int Max()//函数定义
{
int arr[10];
int Max = 0;
printf("请输入十个数: \n");
for (int i = 0; i < 10; i++)
{
scanf_s("%d", &arr[i]);//循环输入,每输入一个数都需要Enter一次。
if (Max < arr[i])
{
Max = arr[i];
}
}
return Max;
}