浙江省2002年7月高等教育自学考试计算机基础与程序设计试题
课程代码:02275
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题中的括号内。每小题1分,共20分)
1.下列软件中属于应用软件的是( )
A. Ms-Dos
B. Windows2000
C. WPS2000字处理软件
D. C语言处理程序
2.在计算机硬件设备中能用作输入设备是( )
A. 显示器
B. 键盘
C. 绘图仪
D. 打印机
3.在DOS系统中可以用文件扩展名表示文件类型,其中批处理文件的扩展名是( )
A. .OBJ
B. .C
C. .BAT
D. .BAK
4.结构化程序的三种基本结构是顺序结构、选择结构和( )
A. 循环结构
B. 递归结构
C. 转移结构
D. 嵌套结构
5.下列程序段的输出结果是( )
char *c[3]={“China”,“America”,“England”};
printf(“%s”,c[1]);
A. America
B. A
C. merica
D. 语法有错
6.以下叙述中正确的是( )
A. C语言程序总是从第一个函数开始执行
B. 在C语言程序中,要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
7.下列while循环,将执行( )次。
i=5;
do
{printf(“%d”,i+1);
}
while(i--);
A. 4
B. 5
C. 6
D. 无限次
8.if(!a)中的表达!a等价于( )
A. a==0
B. a==1
C. a!=0
D. a!=1
9.下列运算符中自右向左结合的是( )
A. ||
B. ==
C. >>
D. ++
10.若a=9;b=8,则表达式(a=++b)?++a:++b的值是( )
A. 8
B. 9
C. 10
D. 7
11.将两个字符串s1和s2连接起来,需使用( )
A. strcpy(s1,s2)
B. strcmp(s1,s2)
C. strlen(s1,s2)
D. strcat(s1,s2)
12.以下程序的输出结果是( )
main()
{int i=012,j=22,k=0x10;
printf(“%d,%d,%d\n”,i,j,k);
}
A. 12,22,10
B. 10,22,10
C. 12,22,16
D. 10,22,16
13.合法的数组定义是( )
A. int a[]="china”
B. int a[5]={0,1,2,3,4,5}
C. char a="china"
D. char a[]={0,1,2,3,4,5}
14.对于以下宏定义:
#define M(x) x*x
#define N(x,y) M(x)+M(y)
宏调用N(2*5,2+5)执行后值为( )
A. 17 B. 117 C. 149 D. 140
15.执行下列程序段后,i的值是( )
int i=1,a=2;
switch(a)
{ case 1: i*=2;
case 2: i*=3;
case 3: i*=4;
default: i*=5;
}
A. 120
B. 3
C. 60
D. 以上程序段有语法错误
16.若a=4执行下列语句后,b的值为( )
if(a>=3) if(a!=3) b=3;else b=2;else b=1;
A. 0
B. 1
C. 2
D. 3
17.定义如下变量和数组,则下面语句的输出结果是( )
int i;
int x[3][3]={1,2,3,4,5,6,78,9};
i=0;
while(i<3)
{printf(“%d ”,x[2-i][i]);
i++;}
A. 9 5 1
B. 7 4 1
C. 7 5 3
D. 9 6 3
18.以下程序执行后输出结果是( &来源:91考试 网nbsp; )
f(int a)
{int b=0;
static int c=3;
a=a+b+c;
c++;
retrun(a);
}
main()
{int a=2,i,k;
for(i=0;i<2;i++)
k=f(a+i);
printf(“%d”,k);
}
A. 3
B. 7
C. 5
D. 4
19.下列赋值语句中正确的是( )
int x[5]={1,2,3,4,5},*p;
A. p=&x
B. *p=x
C. *(p+2)=x;
D. p=x+2
20.C语言既能把字符又能把数字输出到指定的文件中,可调用的函数是( )
A. fputs()
B. fputc()
C. fscanf()
D. fprintf()
二、填空题(每空2分,共30分)
1.计算机的硬件由五部分组成,它们分别是输入设备、输出设备、存储器、_____________和_________。
2.位运算中的 ∧是________运算符,~是________运算符。
3.用for循环将整型数组a(int a[100])按5个一行输出,其语句应为:
for(i=0;i<100;i++)
{ _________;
_________;}
4.对于int *p,*q,i=5,j=6;执行:
p=&i;
q=p;
p=&j;
后(*p)=__________。
5.设int a=012,b=11,c=3;
则表达式a表达式a<<(c%b)的值是________。
6.下列程序段的输出结果是:________
int a=5,b=6;
if( a<5 && b>5)
++a;
printf("a=%d,b=%d",a,b);
7.用下列for循环将大写字母顺序输出(从’A’到‘Z’)
for (i=0;i<26;i++) putchar(’A’+_________);
8.写出下列程序段的输出结果________
#define AA(x,y) x+y
int x,y;
x=2*AA(2,5);
y=2+AA(2,5);
printf("%d,%d”,x,y);
9.下列程序段执行后,i=_______
int i;
i=9&3;
10.head,p为指向以下结构的链表指针,统计链表中所有x域值之和s的程序段为:
struct list{ int x;
struct list *next;}*head,*p;
long s;
for(p=head,s=0;_______;p=p->next)
s+=________;
三、阅读题(每小题4分,共 24分)
1.请阅读以下程序,写出下述程序的运行结果_______
#include
main()
{ int a=251;
float b=251;
printf(“a=%d a=% o\n”,a,a);
printf(“b=%f b=%.2f\n”,b,b);
}
2.请阅读以下程序,写出程序的输出结果
#include
main()
{int x=0,y=0,z=0;
if(!y) x=5;
printf(“ %d ”,x);
if(y=0) x=4;
else x=5;
printf(“ %d ”,x);
x=1;
if(z<0)
if(z>0) x=4;
else x=5;
printf(“ %d\n”,x);
}
3.请阅读以下程序,写出程序的输出结果
#include
main()
{int x,i=30;
do
{x=i;
if(--x%2==0)
if(--x%3==0)
if(--x%5==0)
printf(“%d”,x);
i--;
} while(i>2);
}
4.请阅读以下程序,写出下述程序运行后的输出结果。ASCII码文件(文本文件)a1.t
xt中内容:income $100,$300,$28.5,S76.8
#include "stdio.h"
main()
{ FILE *fp;
char ch;
int count;
if((fp=fopen(“a1.txt”,"r"))==NULL)
{
printf("Cannot open this file\n");
exit(0);
}
count=0;
while(! feof(fp))
{
ch=fgetc(fp);
if (ch==’$’)
count++;
}
printf("%d",count);
fclose(fp);
}
5.请阅读以下程序:
#include
char fun(char *s)
{if(*s<='Z'&&*s>='A') *s+=32;
return *s;
}
main()
{ char c[80],*p;
p=c;
scanf(“%s”,p);
for(;*p;p++) putchar(fun(p));
printf(“\n”);
}
若运行时输入Good 〈回车〉,写出运行后的输出结果。
6.请阅读以下程序,写出下述程序运行后的输出结果
include “stdio.h”
struct st
{ int num;
char name[10];
int age;
};
main()
{ struct st s[3]={{1901,"zhang",20},{1902,"Wang",19},{1903,"Zhao",18}};
struct st *p;
p=s+2;
printf(“%s\n”,s[0].name);
printf (“%s\n",p→name);
}