2011年上计算机c试卷
(二级C语言程序设计)
一、单项选择题(每题1分,共40分)
1.计算机可以与象棋大师进行下棋比赛,这属于计算机在_A_方面的应用。
A) 人工智能B) 科学计算C) 数据处理D) 计算机辅助设计2.计算机运算器的主要功能是_D_。
A) 实现算术运算B) 实现逻辑运算
C) 分析指令并进行译码D) 实现算术运算和逻辑运算
3.计算机存储器中1KB表示的是_D_个字节。
A) 128 B) 256 C) 512 D) 1024
4.在计算机系统层次结构中,位于最内层的是_A_。
A) 硬件系统B) 软件系统C) 程序D) 数据
5.Windows启动时将自动执行“程序”菜单中的“_C_”菜单项所包含的应用程序。
A) 程序B) 附件C) 启动D) 游戏
6.计算机正在运行状态下,直接关闭电源可能产生的后果是_D_。
A) 破坏系统设置B) 造成数据丢失
C) 造成下次启动故障D) 以上情况均有可能
7.下列不属于计算机病毒特征的是_C_。
A) 破坏性B) 潜伏性C) 免疫性D) 传染性
8.下列选项中,不属于多媒体计算机硬件的是_B__。
A) 音响设备B) 加密卡C) 音频卡D) 视频卡
9.根据所覆盖的地理范围分类,“中国教育科研网”属于_A_。
A) 广域网B) 城域网C) 局域网D) 企业网
10.将高级语言编写的程序翻译成机器语言程序,采用的两种方式是_B_。
A) 编译和汇编B) 编译和解释C) 编译和链接D) 解释和汇编
11.C语言程序总是从_C_开始执行。
A) 第一条语句B) 第一个函数C) 主函数D) 子程序
12.以下选项中正确的C语言标识符是_C_。
A) a+b B) 3Dmax C) _123D) %d
13.以下选项中正确表示字符型常量的是_A_。
A) '\t'B) "a" C) 'abc' D) '279'
14.以下选项中属于C语言基本数据类型的是_B_。
A) 逻辑型B) 双精度型C) 复数型D) 集合型
15.已知:int a=8,b=5,c;,则执行语句c=a%b+0.3;后,c的值是_C_。
A) 1 B) 1.3 C) 3D) 3.3
16.已知:int a=5,b=6,c=7,d=8,m=2,n=2;,则执行语句(m=a>b)&&(n=c>d);后,n的值为_A_。
A) 0B) 1 C) 2 D) 3
17.已知字符'A'的ASCII码值为十进制数65,则执行语句printf("%c",'A'+2);后,输出结果是_B_。
A) A B) C C) 65 D) 67
18.已知:int i=1;,则执行语句printf("%d",i++);后,输出结果是_A_。
A) 1 B) 2 C) -1 D) -2
19.以下选项中,和语句x*=y+2;等价的是_D_。
A) x=x*y+2; B) y=x*(y+2); C) x=y+2*x; D) x=x*(y+2);
20.以下选项中能正确判断字符变量c不是
..大写字母的表达式是_D_。
A) c<'A' && c>'Z' B) !(c<'A' && c>'Z')
C) c>='A' || c<='Z' D) !(c>='A' && c<='Z')
21.已知:float a=7.0,b=2.5;,则表达式(int)a/(int)b的值是_C_。
A) 2 B) 2.8 C) 3D) 3.5
22.已知:int a,b,c;,若要给变量a、b、c输入数据,以下正确的输入语句是_D_。
A) scanf ("%d,%d,%d",a,b,c); B) scanf ("%d,%d,%d",&a;&b;&c);
C) scanf ("%d,%d,%d",&a&b&c); D) scanf ("%d,%d,%d",&a,&b,&c); 23.已知:int a=1,b=2;,则执行语句printf("%d",a>b?a:b);后,输出结果是_C_。
A) 0 B) 1 C) 2 D) 以上都不正确24.以下选项中叙述正确的是_A_。
A) 在switch语句中,不一定使用break语句
B) break语句必须与switch语句中的case配合使用/*循环中跳出来*/
C) 在switch语句中必须使用default
D) break语句只能用于switch语句中
25.执行以下程序后,输出结果是_B_。
#include
void main()
{ int a=3,b=-1,c=1;
if (ab 不成立*/
if (b<0) c=0;
else c++;
printf("%d\n",c);
}
A) 0 B) 1 C) 2 D) 3
26.已知数学关系式x≥y≥z,以下选项中能正确表示该关系式的C语言表达式是_A_。
A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z) C) x>=y>=z D) (x>=y)||(y>=z) 27.已知:int i=5;,则执行语句while(i<8) i+=2;后,变量i的值是_D_。
A) 5 B) 7 C) 8 D) 9
28.执行以下程序后,输出结果是_D_。
#include
void main( )
{ int n=9;
while(n>6) {n--;printf("%d",n);}
}
A) 987 B) 9876 C) 8765 D) 876
29.执行以下程序后,输出结果是_A_。
#include
void main( )
{ int i,s=0;
for (i=1;i<=6;i++)
{ if(i%3==0) break;
s+=i;
}
printf("%d\n",s);
}
A) 3 B) 6 C) 12 D) 21
30.已知:int x[3][3]={1,2,3,4,5,6,7,8,9};,则执行语句printf("%d",x[1][2]);后,输出结果是_C_。
A) 2 B) 5 C) 6 D) 7
31.以下选项中能实现将两个字符串s1和s2连接起来的语句是_B_。
A) strcpy(s1,s2); B) strcat(s1,s2); C) strcmp(s1,s2); D) strlen(s1,s2); 32.C语言中,关于函数说法正确的是_B_。
A) 函数定义可以嵌套,但函数调用不可以嵌套
B) 函数定义不可以嵌套,但函数调用可以嵌套
C) 函数定义和函数调用均不可以嵌套
D) 函数定义和函数调用均可以嵌套
33.一个C语言源文件中定义的全局变量的作用域是_D_。
A) 本函数的全部范围B) 本程序全部范围
C) 本文件全部范围D) 从定义开始至本文件结束
34.执行以下程序后,输出结果是_B_。
#include
void sub(int x,int y,int *z)
{ *z=y-x; }
void main( )
{ int a;
sub(10,5,&a);
printf("%d",a);
}
A) 5 B) -5 C) 0 D) 不确定
35.已知:int x,*p;,则以下赋值语句中正确的是_A_。
A) p=&x; B) p=*x; C) &x=*p; D) *p=*x;
36.已知:char str[ ]="Hello",*ptr =str;,则表达式*(ptr+5)的值为_B_。
A) 'o' B) '\0' C) 'o'的地址D) 不确定
37.执行以下程序后,输出结果是_C_。
#include
#define F(X) X+X /*机械替换*/
void main( )
{ int a=5;
printf("%d",2*F(a)); /*2*F(a)=2*a+a*/
}
A) 5 B) 10 C) 15 D) 20
38.已知:
struct student
{ int age;
int num;
}stu,*p=&stu;
以下对结构体变量stu中成员age的非法
..引用是_D_。
A) stu.age B) (*p).age C) p->age D) p.age
39.已知:
union
{ char c;
float a;
}test;
则sizeof(test)的值是_B_。
A) 1 B) 4 C) 5 D) 8
40.已知:FILE *fp;,则以下选项中以读写方式打开一个已经存在的文件"file1"的语句是_D_。
A) fp=fopen("file1","a"); B) fp=fopen("file1","w");
C) fp=fopen("file1","r"); D) fp=fopen("file1","r+"); /*读写*/
二、填空题(每空2分,共20分)
1.数学式ac b 42 写成C 语言表达式是_sqrt(b*b-4*a*c)_。
2.已知int a=10,b=15;,则表达式!a
3.已知float x=1.234;,则执行语句printf("%.2f",x);后,输出结果是_____1.23______。
4.已知int a,b,c;,则执行语句a=5+(b=6,c=4);后,变量a 的值是____9_______。
5.已知int x; for(x=10;x>4;x--);,则该循环共执行_____6______次。
6.已知float a[2][3];,则系统为数组a 分配的存储空间是_____24______字节。
7.已知char *p="Good\0Morning!";,则表达式strlen(p)的值是_____4______。
8.设有函数调用语句f(x,(x,y,z));,则该调用语句中实参的个数是_____2______。
9.已知int a[5]={1,3,5,7,9},*p=a;,则表达式*p+3的值是_____4______。/* *p 的内容+3,故为4*/
10.已知int a=4,b;,则执行语句b=a<<2;后,变量b 的值是_____4___。/*左移一位*2,右移一位/2*/
三、阅读理解题(每题4分,共20分)
1. 以下程序的运行结果是_____Saturday______。
#include
void main( )
{
int week=6;
switch(week)
{
case 1: printf("Monday");break;
case 2: printf("Tuesday");break;
case 3: printf("Wednesday");break;
case 4: printf("Thursday");break;
case 5: printf("Friday");break;
case 6: printf("Saturday");break;
case 7: printf("Sunday");break;
default:printf("Error");
}
}
2. 以下程序的运行结果是_____s=-5_______。
#include
void main( )
{
int s=0,f=1,i;
for(i=1;i<=10;i++)
{ s=s+i*f;
f=f*(-1);
}
printf("s=%d",s);
}
3. 以下程序的运行结果是_max=29,r=1,c=2_。
#include
void main( )
{ i nt a[3][3]={{1,23,6},{7,20,29},{14,25,17}};
int i,j,max,r,c;
max=a[0][0], r=0,c=0;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
if (a[i][j]>max) {max=a[i][j]; r=i; c=j; }
printf("max=%d,r=%d,c=%d",max, r, c);
}
4. 以下程序运行结果是__s=10__。
#include
void main()
{
int i,s=0;
for(i=1;i<=3;i++)
{
static int a=0; /*记忆效果,相当于把int a=0放在循环外面*/
a=a+i;
s=s+a;
}
printf("s=%d",s);
}
5. 以下程序运行结果是__s=13__。
#include
int f(int n)
{
if(n<=1)
return 1;
else
return 2*f(n/2); /*递归调用*/
}
void main()
{
int i,s=0;
for(i=1;i<=5;i++)
s=s+f(i);
printf("s=%d",s);
}
四、编程题(第1题6分,第2、3题各7分,共20分)
1.(6分)编程从键盘输入一个正整数,判断其个位数是否为5,若是5则输出"Yes",否则输出"No"。
2.(7分)利用循环语句编写程序,计算s=1+2+3+...+99+100+99+...+3+2+1并输出结果。
3.(7分)设有15位的由0、1组成的字符串(注:字符串中至少含有1个'1')。现统计其中字符'1'的个数,若'1'的个数为偶数,在其后补'0',否则补'1'。
例如:
101100111100101
因为字符'1'的个数等于9,所以补'1',得到新字符串:
1011001111001011
编写函数void OECheck(char s[])完成以上功能。
#include
#include
void OECheck(char s[])
{
}
void main()
{
char s[17]="101100111100101";
OECheck(s);
printf("%s\n",s);
}
(1)#include
{
}