信息学奥赛初赛天天练-82-NOIP2014普及组-完善程序-机器语言、汇编语言、高级语言、计算机存储、二进制加法、IP地址、整数除法

1 NOIP 2014 普及组 基础题1

1 以下哪个是面向对象的高级语言( )
A 汇编语言
B C++
C Fortran
D Basic

2 TB 代表的字节数是( )
A 2 的10 次方
B 2 的20 次方
C 2 的30 次方
D 2 的40 次方

3 二进制数 00100100 和 00010101 的和是( )
A 00101000
B 001010100
C 01000101
D 00111001

12 下列几个 32 位 IP 地址中,书写错误的是( )
A 162.105.135.27
B 192.168.0.1
C 256.256.129.1
D 10.0.0.1

13 要求以下程序的功能是计算 s=1+1/2+1/3+...1/10

#include <iostream>  
using namespace std;  
int main()  
{ 
    int n;     
    float s;     
    s = 1.0; 
    for(n = 10; n > 1; n--)       
    s = s + 1 / n;     
    cout << s << endl;     
    return 0;   
} 

程序运行后输出结果错误,导致错误结果的程序行是( )
A s = 1.0
B for(n = 10; n > 1; n--)
C s = s + 1 / n;
D cout << s << endl;

2 相关知识点

1) 编程语言

编制程序的过程称程序设计。书写程序用的“语言”叫做程序设计语言即计算机语言。计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。

一般的计算机目前还不能在人类的自然语言上直接操作,用计算机解决实际问题,必须对所要解决的问题周密考虑一个明确的处理方法(算法),再使用计算机能理解的计算机语言编制成程序,然后通过输入设备才能告诉计算机该怎么去做

机器语言

机器语言是指一台计算机全部的指令集合,由“0”和“1”组成的二进制数指令序列,运算效率是所有语言中最高的。机器语言,是第一代计算机语言。

机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行

汇编语言

汇编语言用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串。

比如,用“ADD”代表加法,“MOV”代表数据传递等等。汇编语言,是第二代计算机语言,如:PUSH AX、PUSH BX、POP AX、ADD CX,BX等。

为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码。所以说,汇编语言是一种用助记符表示的仍然面向机器的计算机语言,亦称符号语言。由于汇编语言是面向具体机型的,仍离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同种类的计算机间是互不相通的。汇编语言是低级语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途

高级语言

计算机事业的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接受的语意确定、规则明确、自然直观和通用易学的计算机语言。这种与自然语言相近并为计算机所接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。无论何种机型的计算机,只要配备上相应的高级语言的编译或解释程序,则用该高级语言编写的程序就可以通用。

高级语言普遍的有BASIC、Pascal、C、C++、VC、VB、Delphi、JAVA等。与机器语言、汇编语言相比,高级语言的主要好处包括:

高级语言接近算法语言,易学、易掌握;
高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
自动化程度高,开发周期短

描述客观系统分类

面向过程语言

以“数据结构+算法”程序设计范式构成的程序设计语言,称为面向过程语言。前面介绍的程序设计语言大多为面向过程语言。

面向对象语言

以“对象+消息”程序设计范式构成的程序设计语言,称为面向对象语言。比较流行的面向对象语言有 Delphi、Visual Basic、Java、C++等

2) 计算机存储

比特(bit)

比特是计算机中最基本的存储单元,它代表数字信息的最小单位。比特只能表示两种状态之一,通常用0和1来表示

字节(byte)

字节(byte)是计算机存储容量的基本单位之一,通常用来表示数据的大小或存储空间的大小。一个字节由8个比特组成

千字节(kilobyte) 简称KB,1KB等于1024字节

常用存储单位

1B=8b

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

3) 二进制加法

二进制加法,和十进制加法类似,可以使用竖式进行相加

和十进制加法区别为,十进制是逢十进一,二进制加法是逢二进一

例如

1001+0011=1100

 1001
+0011
-----
 1100

4) IP地址

现在的Internet最早起源于60年代末期美国国防部的ARPANET(阿帕网)。Internet上的每一台机器(包括服务器、PC等)都有自己独立的IP(Internet Position)地址。通过这些IP地址可以对这些机器在Internet进行唯一标识,而计算机的使用者就可以通过这些IP地址对这些计算机进行访问了。

通常一个IP地址共有32位,分为4段,每段8位(也即1个字节)。它的表示方法如下:xxx,xxx,xxx,xxx,其中每段的取值范围为0~255

5) 整数除法

整数除法中,默认是向下取整

例如 5/2=2

#include<bits/stdc++.h>
using namespace std;
/*
  2个整数相除结果也是整数,如果不能整除会向下取整 
*/ 
int main(){
	int a=15,b=2;
	int c=15/2;
	cout<<"15/2为:"<<c<<endl; 
	return 0;
}
/*
输出:
15/2为:7
*/ 

3 思路分析

1 以下哪个是面向对象的高级语言( B )
A 汇编语言
B C++
C Fortran
D Basic

分析

A 汇编语言是一种低级语言,它的语法与计算机的硬件指令非常接近,它不属于面向对象的高级语言。
B C++是一种高级编程语言,它在C语言的基础上增加了面向对象的特性,如类、对象、继承、封装和多态等,C++是一种面向对象的高级语言。
C Fortran是一种高级编程语言,主要用于科学计算和数值分析。虽然它是一种高级语言,但它不是面向对象的编程语言。
D Basic是一种高级编程语言,它的语法简单,易于学习,Basic不是一种面向对象的编程语言
所以选B

2 TB 代表的字节数是( D )
A 2 的10 次方
B 2 的20 次方
C 2 的30 次方
D 2 的40 次方

分析

1TB = 1024 GB
1GB = 1024 MB
1MB = 1024 KB
1KB = 1024 B
1TB = 1024 * 1024 * 1024 * 1024 B 
    = 2^10 * 2^10 * 2^10 * 2^10 B 
    = 2^(10+10+10+10) B
    =2^40 B

3 二进制数 00100100 和 00010101 的和是( D )
A 00101000
B 001010100
C 01000101
D 00111001

分析

根据二进制加法规则,列竖式,逢二进一
 00100100
+00010101
----------
 00111001

12 下列几个 32 位 IP 地址中,书写错误的是( C )
A 162.105.135.27
B 192.168.0.1
C 256.256.129.1
D 10.0.0.1

分析

一个IP地址共有32位,分为4段,每段8位(也即1个字节)。它的表示方法如下:xxx,xxx,xxx,xxx,其中每段的取值范围为0~255
256超出了取值范围
所以选C

13 要求以下程序的功能是计算 s=1+1/2+1/3+...1/10

#include <iostream>  
using namespace std;  
int main()  
{ 
    int n;     
    float s;     
    s = 1.0; 
    for(n = 10; n > 1; n--)       
    	s = s + 1 / n;     
    cout << s << endl;     
    return 0;   
}

程序运行后输出结果错误,导致错误结果的程序行是( C )
A s = 1.0
B for(n = 10; n > 1; n--)
C s = s + 1 / n;
D cout << s << endl;

分析

根据整数除法规则,两数相除不能整除会向下取整
1/10=0
2/10=0
1/n会导致丢失小数,所以选C
posted @ 2024-09-02 17:30  new-code  阅读(3)  评论(0编辑  收藏  举报