二级C语言分类模拟题517
(总分55.5, 做题时间90分钟)
选择题
1. 
数据库系统的内部结构体系中,索引属于______。
A 模式
B 内模式
C 外模式
D 概念模式
    分值: 2.5
答案:B
[解析] 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。
2. 
若有以下程序:
#include <stdio.h>
main( )
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i+ +)
c[s[i]]+ +;
for(i=1;i<5;i+ +)
printf("%d",c[i]);
printf("\n");
}
则程序的运行结果是______。
A 2 3 4 4
B 4 3 3 2
C 1 2 3 4
D 1 1 2 3舞蹈家金星个人资料
    分值: 2.5
答案:B
[解析] 在for(i=0;i<12;i++)c[s[i]]++;语句中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。因此B选项正确。
3. 
下面描述中,不属于软件危机表现的是______。
A 软件过程不规范
B 软件开发生产率低
C 软件质量难以控制
D 软件成本不断提高
    分值: 1.5
答案:A
[解析] 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开
发生产率的提高赶不上硬件的发展和应用需求的增长。因此本题答案为A。
4. 
一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是( )
A 有零个或多个输入
B 有零个或多个输出
C 有穷性
D 可行性
    分值: 1
答案:B
[解析] 算法应具有的5个特性:有穷性,确定性,可行性,有零个或多个输入,有一个或多个输出。
5. 
若fp是指向某文件的指针,且已读到文件的末尾,则表达式feof(fp)的返回值是______。
A EOF
B -1
C 非零值
D NULL
    分值: 1
答案:C
[解析] 因为fp的值就是1,故选项A和选项B皆不是正确答案。当文件读到结尾时,feof(fp)为非零值,否则为0。
6. 
若有定义语句int b=2;,则表达式(b<<2)/(3||b)的值是______。
A 4
B 8
C 0
D 2
    分值: 1
答案:B
[解析] 2的二进制数为010,移两位后的二进制数为01000,转成十制数为8,(3||2)为真即1,8/1=8,所以结果为8。
7. 
有以下程序
#include <stdio.h>
void fun(char **P)
火车票儿童票标准{
++p;
printf("%s\n",*p);
}
main()
{
char *a[]={"Morning","Afternoon","Evening","Night"};
fun(a);
}
程序的运行结果是______。
A Afternoon
B fternoon
C Morning
D orning
    分值: 1
答案:A
[解析] fun函数将第二个字符串输出,所以输出Afternoon,答案选择A。
8. 
若变量已正确定义并赋值,则错误的赋值语句是______。
A a+=a+1;
B a=sizeof(double);
C a=d||c;
D a+1=a;
    分值: 1
答案:D
[解析] 赋值号“=”的左边必须是一个变量名,不可以是表达式。
9. 
以下结构体类型说明和变量定义中正确的是______。
A typedef struct{ int n;char c;} REC;REC t1,t2;
B struct REC;{ int n;char c;};REC t1,t2;
C typedef struct REC;{ int n=0;char c="A";} t1,t2;
D struct{ int n;char c;} REC;REC t1,t2;
    分值: 1
答案:A
[解析] B选项和C选项中,REC后不应加分号,D选项,没有typedef,REC不能作为类型名。所以答案选择A。
10. 
以下选项中,能用作用户标识符的是______。郑元畅身高
A _0_
修改路由器密码B 8_8
C void
D unsigned
    分值: 2
答案:A魔幻电影推荐
[解析] C语言中的标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B选项中以数字8开头,所以错误。C选项与D选项中用的是关键字void与unsigned,所以错误。
11. 
有以下程序:
void ss(char *s,char t)
{ while(*s)
{if(*s==t)*s=t-"a"+"A";
S++;}}
main()
{ char strl[100]="abcddfefdbd",c="d":
ss(strl,c);printf("% s\n" ,strl);}
程序运行后的输出结果是()。
A ABCDDEFEDBD
B abcDDfeDbD
C abcAAfefAbA
D Abcddfefdbd
    分值: 2
答案:B
[解析] 在内存中,字符数据以ASCⅡ码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCⅡ码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。在函数SS(char*s,char t)中,当*s==t时,*s通过运算变为大写,因此答案选择B) 。
12. 
有以下程序:
#include<stdio.h>
#define N 4
void fun(int a[][N], int b[])
梁小友{ int i;
for(i=0; i<N; i++) b[i]=a[i][i]-a[i][N-1-i]};
}
main()
{int x[N][N]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}, y[N], i;
fun(x, y);
for(i=0; i<N; i++) printf("%d, ", y[i]); printf("n");
}
程序运行结果为______。