Untitled Document

一：选择题
1． 要声明一个有10个int型元素的数组，正确的语句是____。
a. int a[10];
b. int a[2,5];
c. int a[];
d. int *a[10];
2． 合法的数组初始化语句是____。
a. char a = "string";
b. int a[5] = {0,1,2,3,4,5};
c. int a[] = "string"
d. char a[] = {0,1,2,3,4,5};
3． 在下述对C++语言字符数组的描述中，有错误的是____。
a. 字符数组可以存放字符串
b. 字符数组中的字符串可以进行整体输入输出
c. 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
d. 字符数组的下标从0开始
4． 若用数组名作为函数调用时的实参，则实际上传递给形参的是____。
a. 数组首地址
b. 数组的第一个元素值
c. 数组中全部元素的值
d. 数组元素的个数
5．.已知：
int i,x[3][3] = {1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是____。
for(i = 0;i < 3;i ++)
printf("%d ",x[i][2-i]);
a． 1 5 9
b． 1 4 7
c． 3 5 7
d． 3 6 9
6．在C++语言中，引用数组元素时，其数组下标的数据类型允许是____。
a.只能整型常量
b.只能整型表达式
c.整型常量或整型表达式
d.任何类型的表达式
7． 以下对二维数组a的正确声明是____。
a.int a[3][]
b.float a(3,4)
c.double a[1][4]
d.float a(3)(4)
8．已知：int[3][4]，则对数组元素引用正确的是____。
a.a[2][4]
b.a[1,3]
c.a[1+1][0]
d.a(2)(1)
9． 在C++语言中，二维数组元素在内存中的存放顺序是____。
a.按行存放
b.按列存放
c.由用户自己定义
d.由编译器决定
10． 下面程序的运行结果是____。
char c[5] = {'a','b','\0','c','\0'};
printf("%s",c);
a.'a''b'
b.ab
c.ab c
d.以上三个答案均有错误

二：程序填空题
1．程序读入20个整数，统计非负数个数，并计算非负数之和。
#include <stdio.h>
void main(void)
{
int i,a[20],s,count;
s = count = 0;
for(i = 0;i < 20;i ++)
scanf("%d", );
for(i = 0;i < 20;i ++)
{
if(a[i] < 0)
;
s += a[i];
count ++;
}
printf("s = %d\t count = %d\n",s,count);
}
2． 函数index(char s[],char t[])检查字符串s中是否包含字符串t，若包含，则返回t在s中的开始位置（下标值），否则返回-1。
int index(char s[],char t[])
{
int i,j,k;
for(i = 0;s[i] != '\0';i ++)
{
for(j = i,k = 0; &&s[j] == t[k];j ++,k ++);
if( )
return i;
}
return -1;
}
3． 以下程序将数组中的数据按逆序存放。
#include<stdio.h>
void main()
{
int a[12],i,j,t;
for(i=0;i<12;i++) scanf("%d",&a[i]);
i=0;j=12;
while( )
{ t=a[i]; ; ;i++;j ;}
for(i=0;i<12;i++)printf("%3d",a[i]);
printf("\n");
}

三：编程题
1． 编写3×3矩阵转置程序。
2．编程实现两字符串的连接，要求使用字符数组保存字符串(要求不使用库函数)。
3．写统计输入的正文中有多少单词的程序，这里的单词指的是用空白符分隔开的字符串。
4．编写程序实现一个简单的加密器，实现英文字符串的加密。加密规则如下：将字符替换成它后面的第二个字符。比如'a'替换成'c'，'C'替换成'E'，'z'替换成'|'。"Panda"替换成"Rcpfc"。
5．编程实现对分查找。当数组很大时，循环查找很费时。如果程序已对数组进行升序和降序排序，就可用对分查找。对分查找是每一次查找操作都把要检查的数值个数对半分。对查找不到的数，输出－1。