Main第四章 数值计算 修改 2

合集下载

C语言常用算法归纳

C语言常用算法归纳

C语言常用算法归纳应当掌握的一般算法一、基本算法:交换、累加、累乘二、非数值计算常用经典算法:穷举、排序(冒泡,选择)、查找(顺序即线性)三、数值计算常用经典算法:级数计算(直接、简接即递推)、一元非线性方程求根(牛顿迭代法、二分法)、定积分计算(矩形法、梯形法)四、其他:迭代、进制转换、矩阵转置、字符处理(统计、数字串、字母大小写转换、加密等)、整数各数位上数字的获取、辗转相除法求最大公约数(最小公倍数)、求最值、判断素数(各种变形)、数组元素的插入(删除)、二维数组的其他典型问题(方阵的特点、杨辉三角形)详细讲解一、基本算法1.交换(两量交换借助第三者)例1、任意读入两个整数,将二者的值交换后输出。

main(){ int a,b,t;scanf("%d%d",&a,&b);printf("%d,%d\n",a,b);t=a; a=b; b=t;printf("%d,%d\n",a,b);}【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,必须借助第三个空杯子。

假设输入的值分别为3、7,则第一行输出为3,7;第二行输出为7,3。

其中t为中间变量,起到“空杯子”的作用。

注意:三句赋值语句赋值号左右的各量之间的关系!【应用】例2、任意读入三个整数,然后按从小到大的顺序输出。

main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);/*以下两个if语句使得a中存放的数最小*/if(a>b){ t=a; a=b; b=t; }if(a>c){ t=a; a=c; c=t; }/*以下if语句使得b中存放的数次小*/if(b>c) { t=b; b=c; c=t; }printf("%d,%d,%d\n",a,b,c);}2.累加累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。

C语言程序设计__承德石油高等专科学校(5)--期中自测题

C语言程序设计__承德石油高等专科学校(5)--期中自测题

基础篇(一~五单元)自测题一 . 基础知识题1. 按照C 语言规定的用户标识符命名规则,不能出现在标识符中的是()。

A. 大写字母B. 连接符C. 数字字符D. 下划线2. 对于一个正常运行的C 程序,以下叙述中正确的是()。

A. 程序的执行总是从main 函数开始,在main 函数结束B. 程序的执行总是从程序的第一个函数开始,在main 函数结束C. 程序的执行总是从main 函数开始,在程序的最后一个函数中结束D. 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束3. 以下合法的字符型常量是()。

A."x13'B."\018"C."65"D."\n"4. 下列运算符中,优先级最高的是()。

A.++B.%C.* (算术乘法)D.=5. 设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A. k++B. k+=1C.++kD. k+16. 设变量均已正确定义,若要通过scanf("%d%c%d%c",&al,&cl,&a2,&c2); 语句为变量al 和a2赋数值10和20,为变量cl 和c2 赋字符X 和Y。

以下所示的输入形式中正确的是(注:□代表空格字符;对于%c来说,可接受键盘输入的任何符号.) ()。

A.10□X□20□Y<回车>B.10□X20□Y<回车>C.10□X<回车〉D.10X <回车>20□Y<回车> 20Y <回车>7. 有以下程序void main(){ int x=0x2F;printf("%d\n",x);}程序运行后的输出结果是()。

A.47B. 17C.2FD. 0x2F8.以下程序输出结果为()。

MATLAB_数值计算

MATLAB_数值计算

b31 b32 b33

对于编程语言,矩阵就是二维的数组
2.1 MATLAB的基本计算
数学计算分为数值计算与符号计算,前者 不允许出现未定义变量,后者允许。(Eg 2-1) 常用的基本数学函数表。 (Eg 2-2)
Eg 2-1
三角函数
函数
sin sinh asin cos acos
说明
正弦函数 双曲正弦函数 反正弦函数 余弦函数 反余弦函数
MATLAB数值计算
2.1 MATLAB的基本计算 2.2 MATLAB矩阵和数组 2.3 关系和逻辑运算 2.4 多项式 2.5 稀疏矩阵 2.6 数据分析函数 2.7 数值分析
概述
在M语言中最常用的数据类型表现手段和形
式就是变量和常量
M语言的基本处理单位是数值矩阵或者数值
Eg 2-14 低维数组合成高维数组
建立3阶魔方及帕斯卡数组
将A、B串联成三维数组
cat(1,A,B)=[A;B]
cat(2,A,B)=[A,B]
>> A=eye(4) A= 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 >> A(:,:,2)=eye(4)*10; >> A(:,:,3)=eye(4)*100 A(:,:,1) = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 A(:,:,2) = 10 0 0 0 0 10 0 0 0 0 10 0 0 0 0 10 A(:,:,3) = 100 0 0 0 0 100 0 0 0 0 100 0 0 0 0 100
复数运算函数
函数
abs
பைடு நூலகம்
说明
求复数的模,若参数为实数则求绝对值

计算机二级C语言操作题高频考卷(四)

计算机二级C语言操作题高频考卷(四)

一、程序填空题1 [填空题]函数fun的功熊是:输出a所指数组中的前a个数据,要求每行输出5个数。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】填空1:每行输出5个数,即当下标值能整除5时换行。

填空2:输出换行符'\n'。

填空3:输出数组元素。

二、程序修改题2 [简答题]下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在W所指的数组中。

要求t1和t2所指字符串的长度相同。

例如,当s所指字符串中的内容为“abcdabfabc”,t1所指串中的内容为“ab”,t2所指子串中的内容为“99”时,结果在W所指的数组中的内容应为“abcdabf99c”。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】(1)此处要判断的是值的真假,而不是地址,所以改为while( * w)。

(2)c语言中关键字区分大小写,只需运行程序,就可以根据错误提示找到。

三. 程序设计题3 [简答题]请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。

例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。

注意:部分源程序存放在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。

试题程序:参考解析:【参考答案】【解题思路】函数fun的功能是判断指针t指向的字符串是否是由连续递增的字母构成,返回值为整数,0代表不满足条件。

根据题目要求,字符串长度必须大于等于2,所以首先需要对t指向的字符串进行长度判断,小于2的字符串返回0。

数据结构第四章习题及解答

数据结构第四章习题及解答

Chap4一、选择题1.下面关于串的的叙述中,哪一个是不正确的? BA.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行 concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果为( E )A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( C )A.求子串 B.联接 C.匹配 D.求串长4.已知串S=‘aaab’,其Next数组值为( A )。

A.0123 B.1123 C.1231 D.12115.串 ‘ababaaababaa’ 的next数组为( C )。

A.012345678999 B.012121111212 C.011234223456D.0123012322345ababaabab’ 的nextval 为( A ).字符串‘ababaabab6‘A.(0,1,0,1,0,4,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )7.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为( D )。

A.2n-1 B.n2 C.(n2/2)+(n/2) D.(n2/2)+(n/2)-1 E. (n2/2)-(n/2)-1 F.其他情况8.串的长度是指( B )A.串中所含不同字母的个数 B.串中所含字符的个数C.串中所含不同字符的个数 D.串中所含非空格字符的个数二、判断题1.KMP算法的特点是在模式匹配时指示主串的指针不会变小。

算法设计第四章部分作业

算法设计第四章部分作业
int sum;
cout<<"请输入两个乘数:";
cin>>n>>m;
sum=fun(n,m);
cout<<"计算结果为:";
cout<<sum<<endl;
return 0;
}
第8题:
想法:
对于火柴游戏,如果起初所有火柴的数量是5的倍数,那么第一个人是不能赢的,如果要第一个人赢得游戏,那么,要在火柴数量不是5的倍数的情况下进行,不管第二个人拿几根火柴,只要第一个人拿的数量是n%5的模值即可赢得游戏!
int main()
{
int a, b, r,s;//r表示a,b两个数的最大公约数,s表示a,b的最大公倍数
cout<<"请输入两个自然数:";
cin>>a>>b;
r = CommFactor2(a, b);//调用函数求最大公约数
cout<<a<<"和"<<b<<"的最大公约数是:"<<r<<endl;
n = r;
r = m % n;
}
return n;
}
第6题:
想法:
首先要建立一个大根堆,然后实现删除操作,关键是如何实现删除操作,我的想法是将要删除的元素和建立的大根堆的最后一个元素交换,然后再调用建立大根堆的函数将前n-1个函数进行大根堆操作
算法:
输入:要删除的元素的下标
输出:删除后排序好的大根堆
if(a%2==0)//若a为偶数
{
a=a/2;

第四章PIC16F877A功能及其编程

unsigned int j; char k; for (j=0;j<n;j++)
for (k=246;k>0;k--) NOP();
}
以后此程序略,可参见附录:公用子程序。
返回目录
4.3 定时/计数器TMR0 TMR0是个8位计数/定时器
自带可编程预分频器,可对外部脉冲计数或对内部 指令脉冲计数(1:1~1:256)
这就需要在中断时能进行现场保护与恢复。
中断的执行过程
➢ 中断发生:程序执行到某行,突然事件(能够产 生中断的事件)发生,产生中断。
➢ 断点保护:CPU自动将中断时刻即将要执行的下 一条指令的地址压入堆栈。
➢ 中断响应:CPU自动将PC强制设为0X0004,且GIE =0。执行中断服务程序(自动完成现场保护与恢 复,手动清中断标志位)。
RA3=1; NOP(); RA4=0;
4.1.1 端口A
因此,在使用RA口时,除了要设置TRISA外,有 时相关寄存器也要设置。
注意:在上电复位时,与AN有关的端口的默认 设置是作为模拟端口,即ADCON1(见4.6)中默认 值为0b00xx0000,这个值的设置结果是除RA4外的所 有的RA引脚都作为模拟输入。
➢ 一条写IO引脚的指令如RB3=1,实际上是在指令的 开头读入整个B端口,并在指令周期的末尾时刻把 1写入RB端口3的输出锁存器。 如果立即对同一端口操作,如x=PORTB,在指令 周期的开始处,由于前一指令产生在IO口的电平 尚未稳定,读入的可能是引脚的前一个状态而不 是新状态值。
因此连续对同一端口的操作时,最好用一个NOP 指令或者其他不访问该I/O 端口的指令隔开。
RD 并行口
中断 标志
AD转换 中断

第四章程序设计基础

4-3
程序设 计基础
4.2 程序设计语言
程序设计语言=计算机语言
程序设计语言:用于书写计算机程序的语言。
计算机语言:计算机所能够识别的语言。
文章 程序 汉语、英语 计算机语言 字、词、语法结构 数据表示、表达式 语句结构 写文章 编程序
4-4
程序设 计基础
4.2 程序设计语言
计算机语言的分类
通用语言、专用语言 系统程序设计语言、科学计算语言 事务处理语言、实时控制语言 结构化语言 模块化语言 面向对象语言 机器语言 依赖于计算机硬件(低级语言) 汇编语言 高级语言→与计算机硬件基本无关
4-6
程序设 计基础
4.2 程序设计语言
[例题]用Intel 8086指令系统来编写机器语言程序,要 求完成 7+8=?
指令序号 机器语言程序 指令功能 1 10110000 把一加数 7 送到累加器 AL 中 00000111 2 00000100 把累加器 AL 中的内容与另一数 00001000 相加,结果仍存放在 AL 中 3 11110100 停止操作
4-30
程序设 计基础
4.4 Raptor控制结构
[例4-4] 求ax2+bx+c=0方程的根,a、b、c由键盘输入。
[解] 阅读教材相关内容,思考下列问题:假如将选择条件 disc<0 改变为 disc>=0,那么,流程图将如何变化?
(学生思考并回答,停留3分钟) [答案] Yes和No互换, 或选择结构两条分支路径的所有语句互换。
运行结果:
4-34
程序设 计基础
4.4 Raptor控制结构
[例4-6]百钱买百鸡问题。在例3-4 的基础上对流程图进行修改,使它 适应Raptor编程环境。

C程序设计第1-7章部分习题参考答案

课后习题解答(第1-7章)第一章1_1.1_1_2判断正误:即使两个整型数据未超出该数据的取值范围,它们的和也可能会超出该数据取值范围。

正确。

1_1_4判断正误:一个C程序可以有多个函数,其中主函数必须在程序的最开头。

错误。

其它函数如果要在主函数中使用的话,必须先在主函数之前定义或者声明。

1_1_6判断正误:若有定义“float x=1.3;”,则表达式(int)x的值为1,因此可以说x中存放的值就是1。

错误。

(int)x表达式的值与x的值是不一样的,前者是对x取整后的数值,而取整运算对x 自身的值不会产生影响。

1_1_8判断正误:若有命令行“#define N 1000”,则N++是不合法的表达式。

正确。

N为符号常量,不能对符号常量进行修改。

1_1_10 C程序是由函数构成的,一个C程序必须有一个主函数。

1_1_12以下变量中不合法的是②、④、⑥,合法的是①、③、⑤、⑦、⑧。

①name ②double ③Int ④if ⑤for_1 ⑥2k ⑦a12345678 ⑧_a1_1_14下面程序段的输出结果是1,1.000000int a; double b;a=b=123/100%2;printf("%d,%f", a, b);1_1_16 a*a*a*b*b/(c-d)1_1_20假设圆柱体的底面半径为r(=2.5),高为h(=3.5),请按下面给定的步骤编写求体积(体积=底面积X高)的程序。

①定义变量r,h,v(存放体积值),注意变量的数据类型。

②给变量r,h赋值。

③计算体积,并将结果存放在v中。

④输出r,h,v的值。

程序如下:#include <stdio.h>#define PI 3.1415926main(){float r, h, v;r=2.5;h=3.5;v=PI*r*r*h;printf("r=%f, h=%f, v=%f\n", r, h, v);}1_1_22编写输出以下图形的程序。

c2


2.变量的初始化
C语言允许在说明变量的同时对其初始化 int sum=0; float pi=3.1416; char c='w'; 也可以对说明的变量的一部分初始化 int i, sum=0,j;
2.2 整型数据在计算机中的存储方式
计算机中,内存储器的最小存储单位称为“位”(bit),每一 个位中或存放0,或存放1,因此称为二进制位。大多数计算机把8 个二进制位组成一个“字节”(byte),并给4个字节分配一个地 址。若干字节组成一个“字”(word),用一个字来存放一条机器 指令或一个数据。一个字含多少个字节随机器而不同。如果计算机 系统字长为4个字节(一个字节为8个二进制位),就称这台计算机 的字长为 32位。 一个字节有8个二进制位,本书中把最右边的一位称为最低位, 把最左边的一位称为最高位,用以存放整数的符号。所以也称之为 符号位。若是正整数,最高位置0;若是负整数,最高位置1。因此, 从最高位就立刻能判别出存放的一个整数是正整数还是负整数。
(2)在需要改变一个常量时能做到“一改全改”。例如在程序中 处用到某物品的价格,如果价格用常数表示,则在价格调整时, 就需要在程序中作多处修改,若用符号常量PRICE代表价格,只需 改动一处即可。如: # define PRICE 35 在程序中所有以PRICE代表的价格就会一律自动改为35。
2.1.2 变量
变量指在程序运行中,其值可以发生变化的量。变量 在内存中占据一定的存储单元,该存储单元中存放变量的 值。变量通常用来保存程序运行中的输入数据,计算获得 的中间结果和最终结果。一个变量应该有一个名字,以便 被引用,变量的命名规则和用户标识符相同,给变量取名 时,为了便于理解程序,一般都采用“见名知意”的原则。
6.符号常量
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档