当前位置:首页 » 操作系统 » 计算机算法基础答案

计算机算法基础答案

发布时间: 2022-04-29 11:20:43

1. 给出一些基本的算法问题并给出答案

C语言算法基础
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。
一、计数、求和、求阶乘等简单算法
此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。
例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。
本题使用数组来处理,用数组a[100]存放产生的确100个随机整数,数组x[10]来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x[1]中,个位是2的个数存放在x[2]中,……个位是0的个数存放在x[10]。
void main()
{ int a[101],x[11],i,p;
for(i=0;i<=11;i++)
x[i]=0;
for(i=1;i<=100;i++)
{ a[i]=rand() % 100;
printf("%4d",a[i]);
if(i%10==0)printf("\n");
}
for(i=1;i<=100;i++)
{ p=a[i]%10;
if(p==0) p=10;
x[p]=x[p]+1;
}
for(i=1;i<=10;i++)
{ p=i;
if(i==10) p=0;
printf("%d,%d\n",p,x[i]);
}
printf("\n");
}
二、求两个整数的最大公约数、最小公倍数
分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)
(1) 对于已知两数m,n,使得m>n;
(2) m除以n得余数r;
(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4) m←n,n←r,再重复执行(2)。
例如: 求 m=14 ,n=6 的最大公约数. m n r
14 6 2
6 2 0
void main()
{ int nm,r,n,m,t;
printf("please input two numbers:\n");
scanf("%d,%d",&m,&n);
nm=n*m;
if (m<n)
{ t=n; n=m; m=t; }
r=m%n;
while (r!=0)
{ m=n; n=r; r=m%n; }
printf("最大公约数:%d\n",n);
printf("最小公倍数:%d\n",nm/n);
}
三、判断素数
只能被1或本身整除的数称为素数 基本思想:把m作为被除数,将2—INT( )作为除数,如果都除不尽,m就是素数,否则就不是。(可用以下程序段实现)
void main()
{ int m,i,k;
printf("please input a number:\n");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<k;i++)
if(m%i==0) break;
if(i>=k)
printf("该数是素数");
else
printf("该数不是素数");
}
将其写成一函数,若为素数返回1,不是则返回0
int prime( m%)
{int i,k;
k=sqrt(m);
for(i=2;i<k;i++)
if(m%i==0) return 0;
return 1;
}

2. 求解计算机算法的题!!!!!

填空1:

设M1的计算速度为x, M2的计算速度为ax,时间是t
则: x * t = 3n1, ax * t = 3n2
则: n1 : n2 = x*t : ax*t = 1 : a
既,填空1的答案是 1:a
填空2:

设M1的计算速度为x, M2的计算速度为ax,时间是t
则: x * t = 3n1², ax * t = 3n2²
则: n1² : n2² = x*t : ax*t = 1 : a

等式两边同时求根号,得到n1:n2的答案。
既,填空2的答案是 1:√a
码子不易,望采纳。

3. 计算机基础试题及答案

这些里面就有简单的转换题目啊,这些都会的话,那么综合应该也就差不多会了哈,这些不难,就是很麻烦就是,很容易弄模糊了,呵呵~~ 有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。个位,N=1;十位,N=2...举例:
110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D
110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D
110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D
2、十进制数转二进制数、八进制数、十六进制数
方法是相同的,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
3、二进制数转换成其它数据类型
3-1二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,
就是一个相应八进制数的表示。
010110.001100B=26.14Q
八进制转二进制反之则可。
3-2二进制转十进制:见1
3-3二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,
不足四位的用0补足,就是一个相应十六进制数的表示。
00100110.00010100B=26.14H
十进制转各进制
要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。
一、十进制转二进制
如:55转为二进制
2|55
27――1 个位
13――1 第二位
6――1 第三位
3――0 第四位
1――1 第五位
最后被除数1为第七位,即得110111
二、十进制转八进制
如:5621转为八进制
8|5621
702 ―― 5 第一位(个位)
87 ―― 6 第二位
10 ―― 7 第三位
1 ―― 2 第四位
最后得八进制数:127658
三、十进制数十六进制
如:76521转为十六进制
16|76521
4726 ――5 第一位(个位)
295 ――6 第二位
18 ――6 第三位
1 ―― 2 第四位
最后得1276516
二进制与十六进制的关系
2进制 0000 0001 0010 0011 0100 0101 0110 0111
16进制 0 1 2 3 4 5 6 7
2进制 1000 1001 1010 1011 1100 1101 1110 1111
16进制 8 9 a(10) b(11) c(12) d(13) e(14) f(15)
可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为:
3为0011,A 为1010,合并起来为00111010。可以将最左边的0去掉得1110102
右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。
二进制与八进制间的关系
二进制 000 001 010 011 100 101 110 111
八进制 0 1 2 3 4 5 6 7
二进制与八进制的关系类似于二进制与十六进制的关系,以八进制的各数为0到7,以三位二进制数来表示。如要将51028 转为二进制,5为101,1为001,0为000,2为010,将这些数的二进制合并后为1010010000102,即是二进制的值。
若要将二进制转为八进制,将二进制的位数由右向左每三位一个单位分隔,将事单位对照出八进制的值即可。

一.在计算机应用中,二进制使用后缀b表示;十进制使用后缀d表示,八进制用Q表示,十六制使用后缀H表示。
二.二进制,十六进制与十进制的计算转换
1.二进制转换为十进制
计算公式:二进制数据X位数字乘以2的X-1次方的积的总和
例:10101011b=( )d

数据
1 0 1 0 1 0 1 1
X-1位
7 6 5 4 3 2 1 0

相应的十进制值即为:27 +25+23+21+20=128+32+8+2+1=171
2.十六进制转换十进制
计算公式:二进制数据X位数字乘以16的X-1次方的积的总和(与二进制转换十制进同理的,将底数换为16)
注意:在十六进制中,10-16依次用A,B,C,D,E,F表示
例:1F3E H=( )d
计算:1*16的3次方+16*16的2次方+3*16的1次方+15*16的0次方=1*4096+16*256+3*16+15*16=4096+4096+48+240=8480

三.十进制与二进制,十六制的计算转换
1.十进制转换为二进制
十进制数据数字除以2的余数的逆序组合
例:404d=( )b
2|404 余0
2|202 余0
2|101 余0
2|50 余1
2|25 余0
2|12 余1
2|6 余0
2|3 余1
2|1
计算结果便是:110101000
2.十进制转换十六进制。。。与上面同理,注意的是10以上的数字用字母表示,除数是16

十六进制与二进制的转换,建议通过十进制来进行中转。
带小数点的十进制转换为二进制时同理,小数店后的数位指数为负指数

一、二进制数转换成十进制数
由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

二、十进制数转换为二进制数
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
回答者:HackerKinsn - 试用期 一级 2-24 13:31

1.二进制与十进制的转换
(1)二进制转十进制<BR>方法:"按权展开求和"
例:
(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
(2)十进制转二进制

· 十进制整数转二进制数:"除以2取余,逆序输出"
例: (89)10=(1011001)2
2 89
2 44 …… 1
2 22 …… 0
2 11 …… 0
2 5 …… 1
2 2 …… 1
2 1 …… 0
0 …… 1
· 十进制小数转二进制数:"乘以2取整,顺序输出"
例:
(0.625)10= (0.101)2
0.625
X 2
1.25
X 2
0.5
X 2
1.0

4. 1、计算机算法必须具备输入、输出和________等特性。 A、可执行性 B、可移植性 C、确定性 D、有穷

选ACD 希望可以帮助你哈~~~
解释:
1.有穷性:一个算法必总是在执行有穷步骤之后结束,并且每一步都可以在有穷时间内完成;
2.确定性:算法的每一条指令必须有确切的含义 ,读者理解时不会产生二义性,并且在任何条件下,算法只有唯一的一条执行路径,对于相同的输入只能达到相同的输出;
3.可行性:一个算法是能行的,就是说算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现;
4.输入:一个算法有零个或者是多个输入,这个输入取决于某个特定的对象集合;
5.输出:一个算法有一个或者多个的输出,这些输出是同输入有着某种特定关系的量;

5. 一个计算机算法的基础题求解答

根据你给出的问题,可以得到以下几个信息:

  1. 每对夫妻肯定是没办法握手的;

  2. 自己和自己没办法握手;

  3. 一共只有20个人

所以,小明得到了19种握手数,那么就是从0到18.

对于握手数是0的人,小红肯定认识;

对于握手数18的人,小红肯定不认识;

因此,小红的握手数是1-17中的一种。

6. 计算机算法的三种基本结构

算法有顺序结构、条件分支结构、循环结构三种基本逻辑结构。

1、顺序结构

序贯结构是最简单的算法结构,在语句之间、框之间自上而下进行。它由依次执行的几个处理步骤组成。

它是任何算法都不能缺少的基本算法结构。方框图中的顺序结构是将程序框从上到下与流水线连接,按顺序执行算法步骤。

2、条件分支结构

条件结构是指通过判断算法中的条件,根据条件是否为真来选择不同流向的算法结构。

如果条件P为真,则选择执行框A或框B。无论P条件是否为真,只能执行A盒或B盒中的一个。不可能同时执行盒子A和B,盒子A和B不执行也是不可能的。一个判断结构可以有多个判断框。

3、循环结构

在某些算法中,经常会出现某一处理步骤按照某一条件从某一地点重复执行的情况。这就是循环结构。重复执行的处理步骤是循环体,显然,循环结构必须包含条件结构。循环结构又称重复结构,可分为两类:

一种是当循环结构,功能是P时形成时给定的条件下,执行一个盒子,一个盒子在执行后,确定条件P,如果仍然设置和执行一个盒子,等等来执行一个盒子,直到一个条件P并不不再执行一个盒子,这个时候离开循环结构。

另一种类型是直到型循环结构,作用是先执行,然后判断给定条件P是否为真。如果P仍然不为真,将继续执行盒子A,直到给定条件P为真一段时间。

(6)计算机算法基础答案扩展阅读:

共同特征

1、只有一个入口和出口

2、结构的每个部分都有执行的机会,即对于每个盒子,应该有一个从入口到出口的路径。如图A所示,从入口到出口没有经过它的路径,这是不符合要求的算法结构。

3、结构中不存在死循环,即没有结束循环。

7. 求《计算机算法设计与分析第5版习题及答案》全文免费下载百度网盘资源,谢谢~

《计算机算法设计与分析第5版习题及答案》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1oxH2d3SdEUN0rx6LJRNBoA

?pwd=8i4l 提取码:8i4l
简介:本书是与“十二五”普通高等教育本科国家级规划教材《计算机算法设计与分析(第5版)》配套的辅助教材和国家精品课程教材,分别对主教材中的算法分析题和算法实现题给出了解答或解题思路提示。为了提高学生灵活运用算法设计策略解决实际问题的能力,本书还将主教材中的许多习题改造成算法实现题,要求学生设计出求解算法并上机实现。本书教学资料包含各章算法实现题、测试数据和答案,可在华信教育资源网免费注册下载。本书内容丰富,理论联系实际,可作为高等学校计算机科学与技术、软件工程、信息安全、信息与计算科学等专业本科生和研究生学习计算机算法设计的辅助教材,也是工程技术人员和自学者的参考书。

8. 谁帮我看看这个几个计算机算法基础...

一、简答题。
1. 某程序根据输入的总分和课程数目计算平均分。写出实现下面输入输出形式的输入和输出语句。
Input total score : 300
Input numbers: 4
The average score is : 75.0
其中,“Input total score :”、“Input numbers:”、“The average score is :”、”75.0”为屏幕输出信息;300、4为从键盘输入的数据。
1.float score;
int n;
printf("Input total score:");
scanf("%f",&score);
printf("Input numbers:");
scanf("%d",&n);
printf("The average score is :%.1f",score/n);
2. 叙述变量名、变量值、变量地址之间有什么关系?
值是存在内存中的
变量名是通俗说相当于一个地址的别名
地址即你存入内存单元的那个值的起始地址
3. 结构化算法的原则是什么?
采取以下方法来保证得到结构化算法
由上而下;
逐步细化;
问题模块化。

4. 写出一组数 84、97、50、37、8、51利用冒泡法排序进行排序的过程(不写算法)。
84 50 37 8 51 97
50 37 8 51 84 97
37 8 50 51 84 97
8 37 50 51 84 97
5. 字符型数据的存储原理是什么?
在内存中char以补码形式存储,最高位位符号位,unsigned无符号位
6. 将下面的语义用C表达式的形式描述。
(1)3个整数a,b,c可以构成一个直角三角形。
(2)数学成绩(math)和语文成绩(Chinese)都高于90分。
(1)(a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)
(2)math>90&&Chinese>90
7. 设day=31,m_count=7,设计输出语句。输出形式为:there are 217 days。其中,“217”由day和m_count计算得到。
printf("there are %d days。",day*m_count);
8. 设主函数main( )调用函数f1( ),函数f1( )调用函数f2( ),f2( )调用函数f3( ),画图表示出这些函数调用的过程及关系。
f3()-f2()-f1()-main(),

9. 画图表示一个二维字符数组(每行最多存储9个字符)存储5个字符串:“China”、“German”、“Russian”、“Japan”、“American”的示意图。
a[5][9]

10. 函数smallest带有3个整型参数x、y、z,返回一个整型结果。写出该函数的首部。
int smallest(int x,int y,int z)
11. 设x=12345,则printf(“%10d\n”,x); 的输出结果是什么?
(有5个空格) 12345(加换行)
12. 从键盘读取两个整数并把读入的整数分别存储在整数变量a、b中,该输入语句是什么?
scanf("%d",&a);scanf("%d",&b);
13. 字符串的结束表示’\0’在字符串使用过程中的作用是什么?
是字符串的一个结束标志,例如输出的话根据判断是否遇到\0
来控制输出

判断是否到字符串结尾。
14. 某程序中有如下定义:
int func(int a , int b , int c)
{
return( 2*a + 4*b/c );
}
在主函数中分别执行语句:k=func(1,2,1)*10; 后,k的取值是多少?
k=100
15. 穷举法解题的好处是什么?适合于解什么类型的题目?
简单,适合列举个数有限且较少情况。
16. 结构化算法中有哪几种基本控制结构,它们的共同点是什么,控制结构之间的连接方式如何?
算法是解决问题所需操作步骤的集合,是程序设计的根本,就如同人们为了完成一件事情必须有一个正确的步骤一样.
算法的表示有三种,自然语言,流程图和伪码.
自然语言:来表示具有表示选择结构或循环结构算法时不方便且不清楚.
流程图:优点是直观容易看懂,不足之处就是比较费事.
伪码:非正式语言,采用文字和图形符号表示,介于自然语言和计算机语言,具备了自然语言的通俗易懂,同时兼备了计算机语言的简明紧凑,因此,编程人员常借助此方法完成算法设计.
顺序,循环,选择。
共同点
只有一个入口
只有一个出口
结构中的每一部分都有机会被执行到
结构内不存在死循环
相互之间通过组合 连接在一起 如 嵌套

二、画出解决下列问题的算法的N-S图。
1. 输入三角形的三条边,判断其能否构成三角形,若能构成,判断它是不是直角
.输入a、b、c三个数——判断a+b>c&&b+c>a&&a+c>b——是则判断是否直角,是则输出是直角三角形,否则输出不是直角三角形——否则不构成三角形。

2. 输出n个数中最小的数。
.输入n个数,并设置min为第一个数——从第一个数到第n个数,如果少于min,则令min等于那个数——输出min

3. 输入n,求n!。
s=1;
for(i=1;i<=n;i++)
s*=i;
输出s

4. 解数学灯谜。已知有以下算式成立,其中 A、B、C 均为一位正整数,求它们各为多少。 A B C - C B = C A

5. 写出折半查找的算法。

6. 输入一个3行4列的整数类型数组a,并按3行4列的形式将其输出。
输入a[3][4]——for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf("%d",a[i][j]);

7. 编写一个算法,实现字符串复制的功能。设目标字符串的名字为str_des,源字符串的名字为str_src。
将源字符串str_scr[0]~strscr[长度-1]分别赋值到str_des[0]~strdes[长度-1]

8. 输入三角形的三条边,判断其能否构成三角形,若能构成三角形判断它是哪种三角形(等边、等腰或一般三角形)

9. 已知一数学函数为:
0 x<0
x 0≤x<10
f(x)= x+10 10≤x<20
-x 20≤x<30
-x-10 x≥30
其中,自变量x为整数。设计双分支算法解决该问题。
if(x<0) f(x)=0;else{
if(0<=x<10) f(x)=x
else{
...}}嵌套选择语句

10. 编写一个人口统计算法,1982 年我国人口为 12 亿,如果按年增长率分别为:2%、1.5%、1%、0.5%计算,各需多少年后,我国人口会翻一番(24亿)
for(p=0.02;p>0;p-=0.005){
s=12;
n=0;
while(s<24){
s*=(1+p);
n++;
}
printf("%d",n);
}

11. 编写算法,输出一个4×4的矩阵a中最小数所在的位置。

12. 按下列规则将电文原文译成密码,将字母‘A’变成‘F’,‘B’变成‘G’,……,‘V’变成‘A’,‘W’变成‘B’,……,‘Z’变成‘E’,即将字母后移5个字母,其余字符不变,输入以‘!’结束。
输入字符串str,i=0;while(ch!='!'){str[i++]=ch;scanf("%c",&ch);}
译码:if(str[i]>='A'&&str[i]<='Z') str[i]='A'+(str[i]-'A'+5)%26

13. 写出冒泡法排序的算法。

14. 输出100以内的所有素数。
for(i=2;i<100;i++){
flag=0;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
flag=1;break;}
}
if(flag==0)printf("%d ",i);
}

15. 输入三角形的三条边,判断其能否构成三角形,若能构成,判断它是不是直角三角形。

16. 求1+2+…+100。
s=0;
for(i=1;i<100;i++)
s+=i;
printf("%d",s);

17. 打印Fibonacci数列的前25项。
利用数组储存a[0]~a[24],a[0]=1;a[1]=1;
for(i=2;i<25;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<25;i++)
printf("%d",a[i]);

18. 写出判断一个数是否是素数的算法。

19. 输出n个数中最大的数。

20. 统计一个字符串中有多少个大写字母。
n=0;
for(i=0;str[i]!=NULL;i++)
if(str[i]>='A'&&str[i]<='Z')
n++;
输出n;

21. 输入一个具有10个元素的一维数组a,并将其打印输出。

热点内容
ui与编程 发布:2024-10-04 23:26:49 浏览:900
google访问ip 发布:2024-10-04 23:19:28 浏览:51
陕西税票服务器地址 发布:2024-10-04 23:04:23 浏览:16
2014访问学者 发布:2024-10-04 22:59:37 浏览:917
c质数的算法 发布:2024-10-04 22:58:32 浏览:521
三星的浏览器在哪个文件夹 发布:2024-10-04 22:57:05 浏览:987
连接line的服务器地址 发布:2024-10-04 22:57:01 浏览:181
衣柜门尺寸简单算法 发布:2024-10-04 22:56:54 浏览:722
有什么软件可以清理缓存垃圾 发布:2024-10-04 22:55:24 浏览:755
手机电脑中配置是指的什么 发布:2024-10-04 22:53:53 浏览:156