计算机存储数据的基本单位是( )。
注意计算机领域当中基本存储单位与最小存储单位是不同的概念基本存储单位是字节 Byte,最小存储单位是 bit,而本题考查的是基本存储单位。
分辨率为 800* 600、16位色的位图,存储图像信息所需的空间为( )。
考察计算机科学基础知识。16 位的位图表示每一个像素单元占用 16位的存储空间,因此800×600 的图片占用空间为937.5KB。
下列不属于面向对象程序设计语言的是( )。
C 语言是面向过程的编程语言,其余三个都是面向对象的编程语言。
向一个栈顶指针为 hs 的链式栈中插入一个指针 s 指向的结点时,应执行( )。
本题考察数据结构基础知识。栈顶为hs,此时s要进栈,由于是链式栈,所以首先将s的下一个节点位置指向hs,然后把hs指向s所指向的地址。
include [HTML_REMOVED]
include [HTML_REMOVED]
using namespace std;
int main()
{
int t[256];
char s[10];
int i;
scanf(“%s”, s);
for(i = 0; i < 256; i) t[i] = 0;
for(i = 0; i < strlen(s); i) t[s[i]];
for(i = 0; i < strlen(s); i)
if(t[s[i]] == 1) {
cout << s[i] << endl;
return 0;
}
cout << “no” << endl;
return 0;
}
输入:xyzxyw
采用分析程序功能的方法来分析此题可得,此程序先统计输入字符串中每个字母出现的次数,然后求这个字符串中第一个仅出现一次的字母。因此对于读入的字符串“xyzxyw”,答案应该为 z。
include [HTML_REMOVED]
using namespace std;
int n, m, i, lbound, ubound, mid, count;
int len[100]; //绳子长度
int main()
{
cin >> n;
count = 0;
for (i = 0; i < n; i) {
cin >> len[i];
①;
}
cin >> m;
if (②) {
cout << “Failed” << endl;
return 0;
}
lbound = 1 ;
ubound = 1000000 ;
while (③) {
mid = ④;
count =0 ;
for (i = 0; i < n; i )
⑤;
if (count < m)
ubound = mid - 1 ;
else
lbound = mid ;
}
cout << lbound << endl;
return 0;
}
本题主要考查二分算法和贪心算法。二分算法中间的for循环使用贪心算法计算能够切割出的绳段个数。
结合第 ①② 空可知,当绳段长度为 11 时可以切出的绳段个数最多,即所有绳子的长度相加,所以输出Failed的条件应该是所有绳子的总长度小于 mm。故用count计算总长度,第 ① 空填count=count+len[i]或count+=len[i],第二空填count[HTML_REMOVED]count。
第 ③④⑤ 空均在二分里,第 ③ 空是二分的结束条件,故应该填lbound[HTML_REMOVED]lbound,即当前二分的区间长度还大于 11 的时候,说明没有确定最终值是多少。第 ④ 空需要特别注意,由于底下ubound是通过mid-1,lbound是通过mid来更新的,所以这空需要填(lbound+ubound+1)/2或(lbound+ubound+1)>>1或(lbound+ubound)/2+1,三者意思相同。
第 ⑤ 空是用来求当确定绳子的切割长度为mid后,最多能切多少段绳段,故应该填count=count+len[i]/mid或者count+=len[i]/mid。