2006年7月计算机基础与程序设计试题
一、单项选择题(本大题共20小题,每小题1分,共20分)
1.存储量1MB等于( )
A.23字节 B.210字节 C.220字节 D.230字节
2.下面数据中最小数是( )
A.(0.1100)2 B.(0.64)8 C.(0.8125)10 D.(0.D)16
3.在Turbo C 2.0中,寻求在线帮助可按键( )
A.F1 B.F5 C.F9 D.F10
4.设有 int a =3, b=-4, c=0;表达式((a>b)?a:b)&&c<0的值是( )
A.-4 B.0 C.1 D.3
5.若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是( )
(其中
int a, b; scanf(″a=%d, b=%d″,&a,&b);
A.2
3
C.a=2, b=3
6.下面程序段的输出结果是( )
main( )
{ int s, p;
s=p=5;
p=--s;
p++;++p;
printf(″%d/n″,p);
}
A.5 B.6 C.7 D.8
7.关于if语句下面叙述正确的是( )
A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句
B.只有当if语句中表达式的值为假时,才执行if的内嵌语句
C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句
D.只要if语句中表达式的值非0时,就执行if的内嵌语句
8.若执行下面程序时,从键盘输入数据3和4,则程序的输出结果是( )
main( )
{ int a,b,s;
scanf(″%d″, &a,&b);
s=a;
if(a s=b
s=s*s;
printf(″%d″,s);
}
A.9 B.12 C.16 D.25
9.若int x=0; 则while(x= =0); 的循环次数是( )
10.下面程序段的输出结果是( )
for (i=1; i<3;i++)
{for (j=1;j<3;j++)
printf(″%d ″, i+j);
printf(″/n″);}
A.2 3 3 4 B.2 3 4
C.2 3 D.2
3 4 3 4
11.下面程序的输出结果是( )
mian ( )
{ int a[5]={2,4,6,8,10},i;
i=2;
printf(″%d″,a[i++]);
}
12.下面程序的输出结果是( )
main( )
{ int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int i,j,k=0;
for(i=0;i<3;i++)
k=k+a[i][0];
printf(″%d/n″,k);
}
13.以下正确的函数定义形式是( )
A. double fun(int x, int y) B. double fun(int x; int y)
C. double fun(int x, int y); D. double fun(int x, y);
14.关于变量以下不正确的说法是( )
A.在不同函数中可以使用相同名字的变量
B.形式参数是全局变量
C.在函数内定义的变量只在本函数范围内有效
D.在函数内的复合语句中定义的变量是局部变量
15.设有语句int a[4][10],*p=*a;则下列表达式中不是地址表达式的是( )
A.&a[1][2] B.a[3] C.*(p+1*10+2) D.p+1*10+2
16.下面关于结构体类型变量定义不正确的是( )
A. struct score B. struct
{ {
int math; int math;
int Chinese; int Chinese;
}Li, Wang; }Li, Wang;
C. struct score D. struct score
{ {
int math; int math;
int Chinese; int Chinese;
}; };Li, Wang;
struct score Li, Wang;
17.下面各个运算符的优先级从左到右依次降低的是( )
A.& >> | ^ B.~ & >> |
C.>> & ^ | D.~ >> & ^
18.设有说明:int u=1, v=2;表达式:u+v<<2的值是( )
A.-1 B.1 C.9 D.12
19.下面程序段中,不能完成的功能是( )
FILE *fp;
char ch;
fp=fopen(″file1″, ″rb+″);
ch=fgetc(fp);
A.建立文件指针fp与文件file1的联系 B.从file1文件中读一个字符
C.向file1文件中写一个字符 D.打开名为file1的二进制文件
20.在格式:fread(stu,size,n,fp);中,下面说法不正确的是( )
A.stu是内存中存放数据的首地址 B.n表示读n次
C.size是一个数据块的字节数 D.fp表示文件指针
二、多项选择题(本大题共5小题,每小题2分,共10分)
21.微机系统的主机包含的部件有( )
A.输入设备 B.存储器 C.输出设备 D.运算器 E.控制器
22.下面各选项中,能正确进行字符串操作的有( )
A. char s[ ]={′a′, ′b′, ′c′, ′d′, ′e′, ′/0′};
B. char s[10];s=″abcde″;
C.char s[10];strcpy(s, ″abcde″)
D.char s[10];getchar(s);
E.char s[10];gets(s);
23.若有以下定义和语句,则能正确表示数组a首元素地址的表达式有( )
double a[5],*p1
p1=a;
A.a B.p1+1 C.*p1 D.&a[1] E.p1
24.设有说明: int u=1, v=3, w=7;下面表达式的值为3的有( )
A.w>>1&v|u B.u&v&w
C.u|v&w D.w&v<<1
E.v^w|u
25.在C语言中,下面关于文件说法正确的有( )
A.按数据的组织形式,可分为文本文件和二进制文件
B.文件只能是ASCII码文件
C.文件能用fopen( )函数打开
D.文件只能是二进制文件
E.对打开的文件可以进行读或写操作
三、简答题(本大题共4小题,每小题4分,共16分)
26.简述C语言中标识符的命名规则并说明C语言中哪些名是用标识符来标识的?
27.变量有哪几种存储类别?指明它们存储数据的区域。
28.定义char*str=″computer″;是将字符串″computer″赋值给变量str,这种说法对吗?为什么?
29.设有说明:
struct flower {char *part; char * color;} mum;
char*part_of_flower[3]={ ″花″,″茎″,″叶″};
char*seven_color[7]={ ″赤″,″橙″,″黄″,″绿″,″青″,″蓝″,″紫″};
试写出将mum的成员part定义为″花″、成员color定义为″黄″的C语句。
四、阅读分析题(本大题共6小题,每小题5分,共30分)
30.阅读下面程序,写出运行结果。
main( )
{ int a=789, x,y,z;
x=a/100;
y=a/10-10*x;
z=a-10*y-100*x
printf(″%d,%o,%x,%d″, x,y,z,100*z+10*y+x);
}
31.阅读下面程序,并回答问题:
main( )
{ int a,b,x,y;
scanf(″%d,%d″,&a,&b);
x=a*a+b*b
if(x>100)
{y=x/100;printf(″%d″,y);}
else printf(″%d″,a+b);}
(1)若程序运行时,输入6和9,输出结果是什么?
(2)说明程序的功能。
32.阅读下面程序,并回答问题:
main( )
{ int u,v,a,b,t,r;
u=24;v=16;
if(u>v){t=u;u=v;v=t;}
a=u;b=v;
while ((r=b%a)!=0)
{b=a;a=r;}
printf(″a=%d/n″,a);}
(1)程序输出结果是什么?(2)该程序完成什么功能?(3)若将while循环替换为do-while循环,请写出相应的程序段。
33.阅读下面程序,写出运行结果。
int a=5, b=5;
chang1( )
{ int a=4;
printf(″a1=%d,b1=%d/n″,a,b++);
}
chang2(int a, int b)
{ a++; b--;}
main( )
{ chang1( );a++,b++;chang2(a,b);
printf(″a2=%d,b2=%d/n″,a,b);}
34.阅读下面程序,写出运行结果。
#include
#include
main( )
{ char p1,p2,srt[50]= ″abc″, str1[50];
p1=″abc″;p2=″abc″;
puts(str);
strcpy(str1,p1);
p1=str1;
printf(″%s/n″,strcat(p1,p2));
strcpy(str+1,p1);
printf(″%s/n″,str);}
35.设有说明语句int*p; 请分析下面语句的含义:
p=(int *)malloc(sizeof(int));
free(p);
五、程序设计题(本大题共2小题,每小题12分,共24分)
36.从键盘输入n*n个整型数(n≤20),组成n行n列数组,打印出其上三角数组。
37.用循环语句编程打印下列图案,并以ASCII码的形式写到c盘根目录下的1x.dat文件中。(第一行的″$″在第20列)
$
$ $ $
$ $ $ $ $
$ $ $ $ $ $ $
2006年4月计算机基础与程序设计试题
一、单项选择题(本大题共20小题,每小题1分,共20分)
1. CPU处理数据和指令的基本单位是字(Word),一个字的字长是( )
A. 8bits B. 16bits C. 32bits D. 与CPU数据总线有关的bit位数
2. 与十进制1100等值的十六进制数是( )
A. 44A B. 44C C. 54A D. 54C
3. 退出Turbo C 2.0返回系统,在主菜单File项中可选择( )
A. Load B. New C. Save D. Quit
4. 设有int a=3, b=-4, c=5;表达式(a)? a+b: (a-b,b+4,a-=b+4)的值是( )
A. –1 B. 0 C. 3 D. 7
5. 若有下列程序段,欲使a=2、b=3,对应正确的数据输入方法是( )
(其中
int a, b;
scanf(″a=%d b=%d″,&a, &b);
A. 2
3
C. a=2, b=3
6. 下面程序段的输出结果是( )
main()
{ int s, p;
s=p=5;
p=++s;
p++; ++p;
printf(″%d/n″,p);
}
A. 5 B. 6
C. 7 D. 8
7. 下列if语句中,有语法错误的是( )
A. if(x>y);
B. if(x=y) x+y;
C. if(x!=y) scanf(″%d″, &x) else scanf(″%d″,&y)
D. if(x
8. 下面程序段执行后的输出结果是( )
int i=-1;
if(i<=0) printf(″* * * * /n″);
else printf(″%%%%/n″);
A. **** B.%%%%
C. %%%%c D. ****c
9. 下面程序段的循环次数是( )
int k=2;
while(k==0) printf(″%d″,k);
k--; printf(″/n″);
A. 0次 B. 1次 C. 2次 D. 无限次
10. 下面程序段的输出结果是( )
a=100;
while(a>120);
a=a+1;
printf(″%d″,a);
A. 100 B. 101 C. 120 D. 121
11. 下面程序执行后,i的值是( )
main( )
{ int a [5]={1,2,3,4,5},i=2
printf(″%d″,a[i++]);
}
A. 1 B. 2
C. 3 D. 4
12. 下面程序的输出结果是( )
main( )
{ int i, x[3][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<4;i+=2) printf(″%d″, x[i][1]);
}
A. 5 1 B. 5 2
C. 8 2 D. 9 3
13. 在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是( )
A. 由系统自动指定对应实参和形参是否共用存储单元
B. 对应实参和形参各占一个独立的存储单元
C. 对应实参和形参共用一个存储单元
D. 可以由用户指定对应实参和形参是否共用存储单元
14. 下面叙述中不正确的是( )
A. 不同函数中可以使用相同名字的变量
B. 形式参数是局部变量
C. 在一个函数内部定义的变量只能在本函数范围内有效
D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效
15. 设有语句int a[4][10],*p=*a;则下面表达式中属于地址表达式的是( )
A. a[1][2] B. a[1]
C. *(p+1*10+2) D. *(a[1]+2)
16. 下面定义不正确的是( )
A. struct star B. struct star
{ {
int id int id;
char *name; char *name;
} star1={1001, ″Moon″}; }; star1={1001, ″Moon″};
C. struct D. struct star
{ {
int id; int id;
char *name; char *name;
} star1={123, ″Sun″}; } star1;
17. 下面各个位运算符的优先级从左到右依次升高的是( )
A. | ^ & >> B. ^ >> & ~
C. << | ^ ~ D. ~ | & >>
18. 设有说明:int u=1, v=14;表达式u+v>>2的值是( )
A. 0 B. 3
C. 5 D. 7
19. 如果将文件指针fp指向文件末尾,正确的语句是( )
A. feof(fp); B. rewind(fp); C. fseek(fp,0L,0); D. fseek(fp,0L,2);
20. 下面程序段中,不能完成的功能是( )
FILE *fp;
char ch =′v′;
fp=fopen(″boy″, ″rb+″);
fputc(ch,fp);
A. 建立文件指针fp与文件boy的联系 B. 从boy文件中读取一个字符
C. 向boy文件中写一个字符 D. 打开名为boy的二进制文件
二、多项选择题(本大题共5小题,每小题2分,共10分)在每小题列出的五个备选项中有二至五个是符合题目要求的。
21. 总线是连接微机CPU、内存和外设之间传送信号的公共通道,微机的总线包括有
A. 电源线 B. 数据线 C. 地址线 D. 控制线 E. 网络线
22. 若定义 char c[11]; 可将字符串″I am a boy″ 赋给数组c,下面正确的选项有
A. c=″I am a boy″; B. getchar(c);
C. gets(c); D. scanf(″%s″,c);
E. for(i=0;i<10;i++) scanf(″%c″,&c[i];c[10])=’/0’;
23. 若有如下定义和语句,则能正确表示数组a首元素地址的表达式有
int a[10], *p;
p=a;
A. a[0] B. a C. p+1 D. p E. *p
24. 设有说明:int x=1, y=3; 下面表达式的值为2的有( )
A. y&~x B. x^y C. x|y D. y|x>>1 E. x<<1|y>>2
25. 在C语言中,关于符号FILE下面说法正确的有( )
A. FILE是C的关键字
B. FILE表示一种关于文件参数的结构体类型
C. FILE表示一种关于文件参数的结构体变量
D. FILE*可以用来说明文件指针
E. 文件指针指向的变量的数据类型是FILE
三、简答题(本大题共4小题,每小题4分,共16分)
26.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?
27.什么是“直接递归调用”?什么是“间接递归调用”?
28.判断下面两程序段正确与否,并说明原因。
(1)char str[12]; str=″program″;
(2)char *str; str=″program″;
29.设有说明:
struct language {long spearer; char country[20];} chinese;
试写出对chinese的成员spearer和country分别赋值1250000000和”China”的C语句。
四、阅读分析题(本大题共6小题,每小题5分,共30分)
30.阅读下面程序,写出运行结果(已知A的ASCII码为65,a的ASCII码为97)。
#include ″stdio. h″
main( )
{ int k=100;char m;
m=k; putchar(m);
printf(″,%d,%c,%o, ″k,m-32,m);
}
31.阅读下面程序,并回答问题:
main()
{ int x, y, z, c;
scanf(″%d%d%d″,&x, &y, &z);
if(x
if(x
if(x
printf(″%d, %d, %d″, x, y, z);
}
(1)若程序运行时,输入3、2和5,则输出结果是什么?
(2)写出程序所实现的功能。
32.阅读下面程序,并回答问题:
main( )
{ int m, n;
m=65;
n=14;
while(m!=n)
{ while(m>n)m-=n;
while(n>m)n-=m;
}
printf(″m=%d/n″, m);
}
(1)程序输出结果是多少?
(2)外循环执行完一次时,m和n的值分别是多少?
(3)将while(n>m)n-=m;语句删除后,程序运行情况如何?
33.阅读下面程序,并回答问题:
gcd(int x, int y)
{ int temp;
while (y){temp=x%y; x=y; y=temp;}
return x;
}
main()
{ int a, b, y;
scanf(″%d, %d″, &a, &b);
y=gcd(a,b);
printf(″最大公约数是:%d″, y);
}
(1)gcd函数的返回值类型是什么?
(2)若将return x写成return y会得到什么样的结果?
34.阅读下面程序,写出运行结果。
mian( )
{ char * str[ ]={″Pascal″, ″C Language″, ″Dbase″, ″Cobol″};
int k;
for(k=0; k<4;k++)
printf(″%s/n″, str[k]);}
35.阅读下面程序段,写出输出结果。
struct num
{ float f1;
int j;
}u={5.6,8},*p=&u;
printf(″%.2f,%d/n″,u.f1, u.j);
printf(″%.2f,%d/n″, (*p).f1,p->j);
五、程序设计题(本大题共2小题,每小题12分,共24分)
36.若有n行n列数组,试编写一程序,分别求出两条对角线元素之和。(从键盘输入n*n个整型数,n≤20)
37.若在c:/tclt路径下有一个名为zz.dat的文本文件,它包括10个按升序排列的整数,且每两个数之间用逗号隔开,现要插入一个整数使该序列仍保持升序,并把新序列写入到c:/tclt路径下名为zzz.dat的文本文件中。
2005年4月计算机基础与程序设计试题
一、单项选择题(本大题共20小题,每小题1分,共20分)
1.与二进制数1011.01等值的十进制数是( )
A.7.25 B.11.05
C.11.25 D.19.25
2.Unix是( )
A.单用户、单任务的操作系统 B.单用户、多任务的操作系统
C.多用户、单任务的操作系统 D.多用户、多任务的操作系统
3.下面数据中最大的数是( )
A.(1010001.101)2 B.(121.3)8
C.(97.6)10 D.(51.5)16
4.断电后会使存储器失去信息的是( )
A.CD-ROM B.RAM
C.ROM D.硬盘
5.一个二进制数位也称为一个( )
A.word B.byte
C.KB D.bit
6.下面转义字符中,表示字符串结束的是( )
A./ r B./ n
C./ 0 D./ f
7.在Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是( )
A.1个 B.2个
C.4个 D.8个
8.设有int x=2,y,z;执行z=y=x--;后,变量z的值是( )
A.0 B.1 C.2 D.3
9.以十六进制形式输出整数的格式说明符是( )
A.%u B.%ld
C.%x D.%o
10.下面合法的if语句是( )
A.if(a=b) c++; B.if(a= c++;
C.ifi(a< >b) c++; D.if(a=>b) c++;
11.结束while(表达式)循环的条件是( )
A.当表达式的值为0时 B.当表达式的值不为0时
C.当表达式的值为1时 D.当表达式的值为非1时
12.若有定义int a[3][5];则数组a在内存中占用的字节数是( )
A.8 B.15
C.16 D.30
13.在C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是( )
A.char B.float
C.long D.int
14.若有说明:int *p,m=5,n;以下正确的程序段是( )
A.p=&n; B.p=&n;
scanf(〃%d〃,n); scanf(〃%d〃,*p);
C.scanf(〃%d〃,&n); D.p=&n;
P=n; *P=m;
15.变量的指针,其含义是指该变量的( )
A.值 B.地址
C.名 D.一个标志
16.结构体是C提供的一种专门处理彼此相互有联系,数据类型( )
A.不一致的多个数据的数据结构 B.不一致的单个数据的数据结构
C.一致的多个数据的数据结构 D.一致的单个数据的数据结构
17.下面列出的位运算符中,表示按位与操作的是( )
A.~ B.& C.^ D.|
18.设有说明:int x=0x03,y=3;表达式x&~y的值是( )
A.0 B.1 C.2 D.3
19.设有说明:int u=1,v=3,w=2;表达式(v>>1|u<<2)&w的值是( )
A.0 B.1 C.3 D.5
20.设有说明:FILE *fp;char *filename=〃paper〃;
对于fp=fopen(filename,〃rb+〃);语句,下面说法正确的是( )
A.打开名为filename的文件读写 B.打开名为paper的文件读写
C.打开名为filename的文件只读 D.打开名为paper的文件只读
二、多项选择题(本大题共5小题,每小题2分,共10分)在每小题列出的五个备选项中有二至五个是符合题目要求的。
21.设有int a=3,b=-5;下面表达式值不等于1的有( )
A.a<0&&b<0 B.a=fabs(b)-(a+1)
C.a D.(a,2,-5)= =(b,2,a)
E.! (a>0&&b<0)
22.若有定义int a[5];,则对a数组元素或地址的引用错误的有( )
A.&a[5] B.a[2]
C.a++ D.*a
E.a[0]
23.若有定义及赋值:int *p,a[4],i;p=a,则可以表示数组元素值的形式是( )
A.*(a+i) B.a+i
C.&a[i] D.a[i]
E.*(p+i)
24.设有说明:int u=1,v=3;下面表达式的值为3的是( )
A.v|u B.u&v
C.u ^ v|1 D.v|u>>1
E.v&~u
25.设有关于结构体类型的定义:( )
struct food
{
char name[20];
int kind;
}myfood,*p;
下面各个选项中语句都正确的是
A.p=&myfood; B.p=&myfood;
p->kind=5; strcpy(p->name,〃rice〃);
C.p=&myfood; D.strcpy(myfood. name, 〃pie〃);
p.kind=7; p=&myfood;
E.p=&myfood,p->kind=6;
strcpy(myfood.name, 〃apple pie〃);
三、简答题(本大题共4小题,每小题4分,共16分)
26.在C语言的switch语句中,switch后面的“表达式”可以是哪些类型的表达式?
27.设有程序如下:
main( )
{
char ch='A';
while(ch<='E')
{
printf(〃%c〃, ch);
ch++;
}
printf(〃/n〃);
}
(1) 该程序的运行结果是什么?(2分)
(2) 如果要将给定程序的运行结果按相反的顺序输出,请写出相对应的程序。(2分)
28.什么是变量的作用域?什么是局部变量?什么是全局变量?
29.设从ASCII码文件〃DATA2. TXT〃中读取100个整型数据存放在数组array_y中。其说明语句为:
int array_y[100],j;
FILE *fp;
请写出打开文件;用100次每次读一个整型数据的方法,将100个整型数据读入存放在数组array_y中;以及关闭文件的有关语句。
四、阅读分析题(本大题共6小题,每小题5分,共30分)
30.请阅读分析下面程序,然后写出运行结果。
main( )
{
int x=8,y=-5;
printf(〃x= %d,y= % d / n〃,x,y);
x=x+y;y=x-y;x=x-y;
printf(〃x= %d,y= %d / n〃,x,y);
}
31.请阅读分析下面程序,然后写出运行结果。
main( )
{
int x=156,a,b,c;
if(x>100)
{
a=x/100;
x=x%100;
}
if(x>10)
{
b=x/10;
c=x%10;
}
printf(〃%3d%3d%3d%3d〃,a, b, c, a*b*c);
}
32.请阅读分析下面程序,然后写出运行结果。
main( )
{
int k=4,i;
for(i=0;i<4;i++)
{
switch(k)
{
case 4:
printf(〃#〃);
case 3:
printf(〃*〃);
default:
printf(〃/n〃);
break;
case 2:
printf(〃$〃);
case 1:
printf(〃@〃);
}
k--;
}
}
33.请阅读分析下面程序,然后写出运行结果。
f( )
{
int a=3;
static int b=4;
a=a+1;
b=b+1;
printf(〃a= %d,b= %d/n〃,a,b);
}
main( )
{
f( );
f( );
f( );
}
34.请阅读分析下面程序,然后写出运行结果。
main( )
{
int i,j, *p[4],a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
p[0]=&a[0];
p[1]=&a[3];
p[2]=&a[6];
p[3]=&a[9];
for(i=0;i<4;i++)
{
for(j=0,j<3;j++)
printf(〃%4d〃,p[i][j]);
printf(〃/ n〃);
}
}
35.请阅读分析下面程序,然后写出运行结果。
# include 〃stdio.h〃
# include 〃string.h〃
struct stu
{
char name[20];
int chinese;
int math;
struct stu *next;
};
void main(void)
{
char *str[ ]={〃Zhang〃,〃Wang〃,〃Liu〃};
int aver,x[3][3]={{80,75,85},{60,56,73},{90,83,76}};
struct stu s;
strcpy(s.name,str[1]);
s.chinese=x[1][0];
s.math=x[1][1];
aver=s.chinese+s.math;
printf(〃%s/t%d/t%d/t%6.2f/n〃,s.name,s.chinese,s.math.aver/2.0);
}
五、程序设计题(本大题共2小题,每小题12分,共24分)
36.从键盘上输入10个整数,并将其存放在一数组中,求出该数组中所有大于零且为偶数的数的平均值。
37.从键盘上输入10个整数,用冒泡法将它们按从小到大的次序排列出来,并把排列的结果以ASCII码的形式写到c盘根目录下的文件zm1.dat中。
2004年7月计算机基础与程序设计试题
一、单项选择题。
1.( )是用助记符来表示指令的符号语言。
A.机器语言 B.汇编语言 C.高级语言 D.语言处理程序
2.-123的原码是( )。
A.11111011 B.10000101 C.01111011 D.0000101
3.下面四个选项中,均是合法整型常量的选项是( )。
A.160 -0xffff 011
B.-0xcdf 01a 0xe
C.-01 986,012 0668
D. -0x48a 2e5 0x
4.叙述中不正确的是( )。
A.表达式a &=b等价于a=a & b B.表达式a|=b等价于a=a|b
C.表达式a!=b等价于a=a!b D.表达式a∧=b等价于a=a∧b
5.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )。
注:u表示空格。
int a1,a2;
char c1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
A.10Au20B
C.10uA20B
6.以下printf语句的输出是( )。
printf(“%%d\”%d%s”,123,“123”);
A.%123\”%d123 B.%%d\”123123
C.%d”123123 D.上述语句语法有错
7.以下if语句语法正确的是( )。
A.if(x>0)printf(“%f”,x) B.if(x>0){x=x+y;printf(“%f”,x);}
else printf(“%f”,-x); else printf(“%f”,-x);
C.if (x>0) {x=x+y;printf(“%f”,x);}; D.if(x>0){x=x+y;printf(“%f”,x)}
else printf(“%f”,-x); else printf(“%f”,-x);
8.若运行以下程序段时,从键盘输入2473
int c;
while ((c=getchar())!=’\n’)
switch(c-‘2’)
{case 0:
case 1:putchar(c+4);
case 2:putchar(c+4); break;
case 3:putchar(c+3);
default: putchar(c+2);break;
}
A.668977 B.668966 C.66778777 D.6688766
9.下面程序段的运行结果是( )。
int a=1,b=10;
do {b-=a;a++;} while(b--<0);
printf(″a=%d,b=%d\n″,a,b);
A.a=3,b=11 B.a=2,b=8 C.a=1,b=-1 D.a=4,b=9
10.以下程序段的运行结果是( )。
for(y=1;y<10;) y=((x=3*y,x+1),x-1);
printf(“x=%d,y=%d”,x,y);
A.x=27,y=27 B.x=12,y=13
C.x=15,y=14 D.x=y=27
11.以下能对一维数组a进行正确初始化的语句式( )。
A.int a[10]=(0,0,0,0,0); B.int a[10]={ };
C.int a[ ]={0}; D.int a[10]={10*1};
12.设变量定义为char s[]=″hello\nworld\n″;则数组s中有( )个元素。
A.12 B.13 C.14 D.15
13.以下正确的函数定义形式是( )。
A.float fun(int x,int y) B.float fun(int x;int y)
C.float fun(int x,int y); D.float fun(int x,y)
14.以下程序段的运行结果是( )。
char *s=″china″;
printf(″%s,%c,%c\n″,s,*s,s[3]);
A.c,c,n B.china,china,i C.china,c,n D.china,china,n
15.设int *p1,*p2,i=1;p1=&i;p2=p1;表示( )。
A.把i值赋给p2 B.p1指向p2 C.p2指向i D.p2指向p1
16.说明一个结构体变量时系统分配给它的内存是( )。
A.各成员所需内存量的总和 B.结构体中第一个成员所需内存量
C.成员中占内存最大者所需的容量 D.结构体中最后一个成员所需内存量
17.以下对结构体变量stu中成员age的非法引用是( )。
struct student
{int age;
int num;
}stu,*p;
p=&stu;
A.stu.age B.student.age C.p->age D.(*p).age
18.以下程序段的运行结果是( )。
int a=3,b=10;
printf(“%d”,a<<2|b>>1);
A.1 B.5 C.12 D.13
19.以下程序段的运行结果是( )。
# define MIN(x,y) x
int i=10,j=15,k;
k=10*MIN(i,j);
printf (“%d\n”,k);
A.10 B.15 C.100 D.150
20.下列语句中,将c定义为文件型指针的是( )。
A.FILE c; B.FILE *c; C.file c; D.file *c;
二、填空题(每小题2分,共20分)
1.______是规则的非空有穷集,具体地说,是解某一特定类型问题的一组规则。
2.按数据的组织形式,文件可分为______和______。
3.条件“2
4.以下程序段的运行结果是______。
int x,y,z;
x=1;y=2;z=3;
x=y--<=x‖x+y!=z;
printf(“%d,%d”,x,y);
5.执行以下程序段后,v的值是______。
# define WIDTH 80
# define LENGTH WIDTH+40
int v;
v=LENGTH*20;
6.下面程序段将输出computer,请填空。
int i,j;
char c[]=“It’s a computer”;
for (i=0;i<=7;i++)
{ ______;
printf(“%c”,c[j]);
}
7.以下程序的运行结果是______。
main()
{ increment();
increment();
increment();
}
increment()
{static int x=0;
x+=10;
printf (“%5d”,x);
}
8.下面程序段的运行结果是______。
char *s1=”AbcdEf”,*s2=”aB”;
s1++;
t=(strcmp(s1,s2)>0);
printf(“%d\n”,t);
9.以下程序段对输入的一个小写字母,将字母循环后移5个位置后输出。
如‘a’变成‘f’,‘w’变成‘b’。
char c;
c=getchar();
if(c>=’a’&& c<=’u’) c=c+5;
else if(c>=’v’&& c<=’z’)______;
putchar(c);
10.下面程序段的运行结果是______。
int x=7;
do
{printf(“*”);
x--;
}while(!(x%2));
三、阅读题(每小题4分,共16分)
1.下列程序的输出结果是______。
# include ″stdio.h″
# define N 3
void main()
{ int j,k;
int f=1,s=0;
for(k=1;k<=N;k++)
{for(j=1;j
f=f*k;
s=s+f;
printf(″%d# ″,s);
}
}
2.下列程序的输出结果是______。
int fun(int n)
{int t;
if((n==0)‖(n==1)) t=3;
else t=n*fun(n-1);
return t;
}
void main()
{printf(”%d\n”,fun(4));}
3.写出以下程序的运行结果______。
void main()
{ int x,y=1,z;
if(y!=0) x=5;
printf(“%5d”,x);
if(y==0) x=4;
else x=5;
printf(“%5d”,x);
x=1;
if(y<0)
if(y>0) x=4;
else x=5;
printf(“%5d”,x);
}
4.写出以下程序的运行结果______。
void main()
{ int a=1,b=2,c=3,*p;
p=&b;
pp(a,p,&b);
printf(“%d %d %d\n”,a,b,*p);
}
void pp(int a,int *b,int *p)
{ int c=4;
*p=*b+c;
a=*p-c;
printf(“%d %d %d#”,a,*b,*p);
}
四、程序填空题(每小题6分,共24分)
1.下面程序的功能是检查一个二维数组是否对称,请填空。
(即:对所有i和j都有a[i][j]=a[j][i])。
main()
{ int a[4][4]={1,2,3,4,2,2,65,6,3,5,3,7,4,6,7,4};
int i,j,found=0;
for(j=0;j<4;j++)
for(______;i<4;i++)
if(a[j][i]!=a[i][j])
{______;break;}
if(found) printf(″No″);
else printf(″Yes″);
}
2.在平面直角坐标系中,输入10个点的坐标,输出其中距原点最近的点的距离。
# include “math.h”
main()
{int i;
float z,min;
scanf(“%d,%d”,&x,&y);
______;
for(i=1;i<=9;i++)
{______;
z=sqrt(x*x+y*y);
if(z
}
printf(“min=%f\n”,min);
}
3.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10
岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。
# include
age(int n)
{ int c;
if(n==1)c=10;
else c=______;
return c;
}
main()
{ int n=5;
printf(“age:%d\n”,______);
}
4.创建一个链表。
# include ″stdio.h″
# include “malloc.h”
# define node struct list
struct list
{ int data;
struct list *next;
};
void main()
{ node *p,*head;
int num,i;
p=______;
p=head;
printf(″please input 5 numbers==>\n″);
for(i=0;i<=4;i++)
{scanf(″%d″,&num);
p->data=num;
p->next=(node*)malloc(sizeof(node));
if(i==4)p->next=NULL;
else ______;
}
p=head;
while(p!=NULL)
{printf(″The value is==>%d\n″,p->data);
p=p->next;
}}
五、编程题(第1小题8分,第2小题12分,共20分)
1.输入m和n(m≥n≥0)后,计算下列表达式的值并输出。
要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。
2.从键盘输入30个学生的数据,数据项为:学号、姓名、平均分。
要求:
(1)将30个学生的数据写入文件“student.dat”;(2)输出其中最高平均分。
2004年4月计算机基础与程序设计试题
一、单项选择题(本大题共20小题,每小题1分,共20分)
1.微机一般是16位机或32位机,它指的是机器的( )。
A.速度 B.容量 C.系列号 D.字长
2.若当前路径为C盘TC子目录,仅将A盘根目录下的文件名第3个字符为P,扩展名为C的所有文件复制到C盘TC子目录下,一定成功的命令是( )。
A.COPY A:/*P*.C B.COPY A:/??P*.C C:
C.COPY A:/??P*.C D.COPY ??P*.C C:/TC
3.在C程序中,main函数的位置是( )。
A.必须作为第一个函数 B.必须作为最后一个函数
C.可以放在任意位置 D.必须放在它所调用的函数之后
4.设int a=3;下列哪一个表达式的值等于0( )。
A.a&&(a>0) B.!a||a C.a%=a D.a>=a
5.如果a=5,b=2,c=3,d=4,则表达式a>b? a:c>d? c:d的值是( )。
A.2 B.3 C.4 D.5
6.在C程序中,设一表达式中包含有int, long, char和unsigned类型的变量和数据,这四种类型数据的转换规则是( )。
A.int->unsigned->long->char B.char->int->long->unsigned
C.char->int->unsigned->long D.int->char->unsigned->long
7.设有说明:int a=11, b=10;执行表达式a%=b+(a&&b)后,a的值为( )。
A.0 B.1 C.11 D.22
8.下面程序段的运行结果是( )。
main()
{
int x=1,y=2,z=3,s=0;
if(y>x)
if(y>z) s=1;
else s=2;
else s=3;
printf(”% d/ n”,s);
}
A.0 B.1 C.2 D.3
9.设有说明:int x=1, y=2;执行条件表达式(x=y)? ++x:--x后,x的值为:( )。
A.0 B.1 C.2 D.3
10.若k为整型变量,则下面while循环( )。
k=10;
while(k==0)k=k-1
A.执行0次 B.执行1次
C.执行10次 D.执行无限次
11.关于for(;;);语句,下面说法正确的是( )。
A.有语法错误 B.循环一次也不执行
C.循环只执行一次 D.循环执行无限次
12.以下对一维数组a的正确定义是( )。
A.int a(10); B.int n=10, a[n];
C.int n; D.#define SIZE 10
scanf(”%d”, &n); int a[SIZE];
int a[n];
13.以下一维数组初始化语句中,正确的是( )。
A.int a[5]={1,2}; B.int a[5]={};
C.int a[5]={5*2} D.int a[]=(1,2,0,0,0);
14.若定义字符数组char s[5]=”BOOK”;则输出该串正确的函数调用是( )。
A.puts(s[10]); B.puts(s);
C.printf(”%c”,s); D.printf(”%s”,&s);
15.下列定义不正确的是( )。
A.#define PI 3.1415926 B.static char c;
C.int max(x,y); D.int *p[5];
int x,y;
{}
16.下列哪种数据不是存放在动态存储区中( )。
A.局部自动变量 B.局部静态变量
C.函数调用时的现场保护数据 D.函数形参变量
17.设有char s[]=”top”,*p=s;p[1]=‘a’;则下面说法不正确的是:( )。
A.s[0]存放字符t B.s[1]存放字符0
C.s[1]存放字符a D.s[2]存放字符p
18.定义一个指向具有5个元素的一维整型数组的指针变量的正确定义为( )。
A.int *p[5]; B.int *p; C.int (*p)[5]; D.int *p[][5];
19.下面程序的运行结果是( )。
#define SQR(x)((x)*(x))
#include
main()
{ float v=3.0;
printf(”sqr=%. 2f/n”, SQR(v)+1);}
A.sqr=3.0 B.sqr=9.0 C.sqr=10 D.sqr=10.00
20.feof函数用来判断文件是否结束,如果文件没有结束,则返回值是( )。
A.-1 B.0 C.1 D.EOF
二、多项选择题(本大题共5小题,每小题2分,共10分)
在每小题列出的五个备选项中有二至五个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。
21.下面哪些软件属于操作系统范畴?( )。
A.DOS B.Foxpro C.Turbo C
D.UNIX E.Windows
22.在下列各说法中,正确的说法有( )。
A.与while结构相比,do…while结构至少要执行一次循环。
B.for结构和do…while结构类似,也是“先判断后执行”。
C.do…while结构是“先执行后判断”。
D.进入do…while循环的条件是:条件表达式为1。
E.退出while循环的条件是:条件表达式为1。
23.若有如下定义和赋值( )。
int a=3, *p, *q;
p=&a; q=p;
则能够输出变量a的地址值的语句是:
A.printf(”%d/n”,p); B.printf(”%d/n,*q”); C.printf(”%d/n”,a);
D.printf(”%d/n”,*p); E.printf(”%d/n”,q);
24.设有定义int x[4][5],*p;以及赋值p=*x;则非法的表示x数组元素的形式是( )。
A.x[4][5] B.x[1] C.*(x[1]+2)
D.x[2][3] E.p[20]
25.表达式~0<<2的值可以是( )。
A.-4 B.-3 C.0xfffc
D.0177774 E.65531
三、填空题(本大题共10小题,每小题1分,共10分)
请在每小题的空格中填上正确答案。错填、不填均无分。
26.用一字节表示十进制-7在机内的存储形式是___________。
27.C语言中的函数应由___________和函数体两部分组成。
28.在格式输出语句中,用于字符串输出的格式符是%___________。
29.设有int x=10;则执行while(x^x) ++x;后,x的值是___________。
30.设i,y,s均为int型变量,则执行下面for循环后,y的值为___________。
for(i=0, y=0; i<4;){s=i*i;y=y+s;i++;}
31.设有int y[2][3]={5,4,6,7,8,9};则y[1][1]的值为___________。
32.定义在函数内部的变量和函数的形参都是___________变量。
33.若p为指针变量,则(*p)++表示先取指针p指向的对象再使对象的___________。
34.已知定义:union{long x;int y;}data;
则变量data占用内存的字节数是___________。
35.字符串读函数fgets()的格式是fgets(str,n,fp);它的功能是从与fp有联系的文件中读___________个字符。
四、简答题(本大题共4小题,每小题3分,共12分)
36.简述字符常量与字符串常量的差异。
37.在C语言的if语句中,用作条件判断的“表达式”可以是什么类型的表达式?
38.用字符串指针变量处理字符串与用字符数组处理字符串有何不同?
36.简述fread函数的作用,其使用格式如下:
fread(stu,size,n,fp);
其中fp为文件指针,size为字节数,n为整数,stu为内存地址。
五、阅读分析题(本大题共7小题,每小题4分,共28分)
40.阅读下列程序并写出运行结果。
#include ”stdio.h”
#include ”string.h”
main()
{ char str[]=”department”,*p=s;
printf(”the length of srt is %d”,strlen(p));
prinft(”/n%s”,p);
}
41.阅读下列程序并写出运行结果。
main()
{ int i=3, b;
b=(i--)+(i--)+(i--);
printf(”%d,%d/n”,b,i);
}
42.阅读下列程序,并回答问题。
main()
{int s=0, k;
for(k=4;k>=0;k--)
{ switch(k)
{ case 1:
case 4: s++;break;
case 0:
case 2: break;
case 3: s+=2;break;
}
} printf(”s=%d/n”,s); }
试回答switch语句共执行多少次并写出运行结果。
43.阅读下列程序并写出运行结果。
main()
{ int y[2][3]={5,4,6,7,8,9};
int m[2],k,j;
for (k=0;k<2;k++){
m[k]=y[k][0];
for(j=1;j<3;j++)
if(y[k][j]
} k=0; printf(”%d/n”,m[k]); }
第44题、第45题请参阅下面程序,并回答相关问题:
main()
{int i,j,x=0;
for(i=0;i<2;i++)
{x++;
for (j=0;j<=3;j++)
{ if(j%2) continue;
x++;} x++;} printf(”x=%d/n”,x);}
44.if(j%2) continue;语句的作用是什么?continue语句执行了多少次?
45.程序输出结果是多少?
46.设指向单向链表的头结点指针head是一个全局指针变量,且有如下程序:
void display( )
{ struct food *p=head;
while (p!=NULL)
{ printf(”%s/n”, p->name);
printf(”%d/n”, p->product);
p=p->next;
}
}
设程序已经提供了关于food结构体的全部信息,试写出结构体food的定义。
六、程序设计题(本大题共2小题,第47题8分,第48题12分,共20分)
47.对下面的3行3列的二维整型数组x:
int x[3][3]={1,2,3,4,5,6,7,8,9};
编程求每一行中元素的累加和并输出之。
48.从键盘输入一些字符,逐个把它们送到磁盘上并统计这些字符的个数,直到输入一个“#”为止。设磁盘ASCII码文件名为ab.txt。
2003年4月计算机基础与程序设计试题
一、单项选择题(本大题共20小题,每小题1分,共20分)
1.按冯·诺依曼的设计思想,计算机采用的数制是( )
A.二进制 B.八进制 C.十进制 D.十六进制
2.若机器的当前系统提示符为A,欲将C盘TC子目录下文件名第二个字符为T,扩展名为C的所有文件删除,应采用的操作命令是( )
A.DEL ?T*.C B.DEL C:/TC/*T*.C
C.DEL /TC/? T*.C D.DEL C:/TC/?T*.C
3.下面哪一个是合法的指数型实数( )
A.E5 B.-1.0e-5 C.1.2e+5.1 D.e8
4.以下正确的C语言标识符是( )
A.%d B.a+b C.-123 D.3D
5.设有int i;char c; float f;下面结果为整型的表达式是( )
A.i+f B.i*c C.c+f D.i+c+f
6.以下使i的运算结果为4的表达式是( )
A.int i=0,j=0;(i=3,(j++)+i);
B.int i=1,j=0;j=i=(i=3)*2);
C.int i=0,j=1;(j==1)?(i=1):(i=3);
D.int i=1,j=1;i+=j+=2;
7.下面程序段的运行结果是( )
main()
{ int a,b,c;
a=(b=(c=3)*5)*2-3;
printf(″%d,%d,%d/n″,a,b,c);
}
A.27,15,3 B.3,15,27 C.-1,15,3 D.15,27,3
8.对下述程序,正确的结论是( )
#include
main()
{ int x,y;
scanf(″%d,%d″,&x,&y);
if(x>y)
x=y;y=x;
else
x++;y++;
prinft(″%d,%d″,x,y);
}
A.有语法错误,不能通过编译 B.若输入数据3和4,则输出4和5
C.若输入数据4和3,则输出3和4 D.若输入数据4和3,则输出4和4
9.以下程序的输出结果是( )
main()
{ int a=10;
a>10? a--;a++;
a+=a;
printf(″%d/n″,a);
}
A.-22 B.11 C.22 D.-11
10.在C语言中,由do-while语句构成的循环中结束循环的条件为( )
A.1 B.true C.0x10 D.0
11.以下程序的输出结果是( )
main()
{ int i,x=0;
for(i=0;i<=2;i++)
x++;
prinft(″x=%d″,x);
}
A.x=3 B.x=8 C.x=6 D.x=4
12.对下面程序段进行语法分析,正确的说法是(各行前的数字是附加的行号)
①float a[3]={2.0};
②int i;
③scanf(″%f″,&a[1]);
④for(i=1;i<3;i++)a[0]+=a[i];
⑤printf(″%f/n″,a[0]);
A.没有错 B.第一行有错 C.第四行有错 D.第五行有错
13.下列程序的运行结果是( )
main()
{ char ch[7]={″43ab21″};int i,s=0
for (i=0;ch[i]>`0'&&ch[i]<=`9';i+=2)
s=10*s+ch[i]-`0';
printf(″%d/n″,s);
}
A.12ba34 B.4321 C.4 D.42
14.以下程序的运行结果是( )
main()
{ char c[5];int i=0;
c[]0=`a';c[1]=`b';
c[2]=`/n';c[3]=`c';c[4]=`/0';
for (;i<5;i++) printf(″%c″,c[i]);
}
A.a B.a C.ab D.abc
b b c
c
15.下面关于main函数的说法中,不正确的是( )
A.程序的执行从mian()函数开始 B.程序的执行在main()函数中结束
C.main()函数可以调用其它函数 D.其它函数可以调用main()函数
16.变量包括数据类型和存储类别两种属性,其中存储类别属性主要用来决定( )
A.变量的存储长度 B.变量的作用范围
C.变量的生存期 D.变量的取值范围
17.下面程序的运行结果是( )
void fun(int *p1,int *p2)
{ printf(″%d,%d/n″,*p1,*p2);
}
int x=11,y=19;
main()
{
fun(&x,&y);
}
A.12,19 B.11,19 C.11,20 D.12,20
18.若有定义int *p[5];则其含义是( )
A.p是一个数组,有5个元素,每个元素都是整型量
B.p是一个指针,指向含有5个整型数据的数组
C.p是一个数组,有5个元素,每个元素都是指向整型变量的指针
D.p是一个指针,指向一个整型数据
19.下面程序的运行结果是( )
#define MIN(x,y)(x)<(y)?(x):(y)
#include
main()
{ int u=1,v=2,w=3,t;
t=MIN(u+v,v+w);
printf(″%d/n″,t);
}
A.3 B.5 C.1 D.2
20.随机定位函数的函数名是( )
A.fopen B.fgetc C.seek D.fseek
二、多项选择题(本大题共5小题,每小题2分,共10分)
21.下面结构化N—S图为:
22.若所用变量已正确定义,以下各程序段执行后,变量x值一定等于10的有( )
A.x=0; B.x=0;i=0; C.int i,x;
for(i=0;i<5;i++) while(1) for(i=0;i<5;i++)
x+=2 { i++;x+=2; x+=2;
if(i>5) break;
}
D.for(x=0,i=0;i<5;i++) E.x=0;i=0;
x+=2; while(1)
{ i++;x+=2
if(i==5) break
}
23.若有如下定义及赋值:
int a[5]={1,2,3,4,5},*p;p=a;
则可以输出元素值为3的语句是
A.printf(″%d/n″,a+2); B.printf(″%d/n″,p+2);
C.printf(″%d/n″,p[2]); D.printf(″%d/n″,*(p+2));
E.printf(″%d/n″,a[3]);
24.设有:struct cjb
{long bh;int xq;char xm[9];}x,*p;
下面各项中C语句全正确的是( )
A.p=&x; B.x.bh=123; C.p=&x;
(*p).bh=12; x.xm=″Wang″; p->bh=123;
p->xm=″Li″;
D.p=&x; E.p=&x.bh;
x.bh=123; *p=123;
printf(″%1d″p->bh);
25.设有int y,w=1,x=16;下列各项中能使y值为1的是( )
A.y=(x∧x)|w; B.y=x>>4; C.y=x&15;
D.y=w|w; E.y=x<<4;
三、填空题(本大题共10小题,每小题1分,共10分)
26.用一字节表示十进制数-123的补码是_____________。
27.C语言程序从_____________开始执行。
28.在使用字符输入输出函数时,要求在程序的开头处写上的编译预处理命令是_____________。
29.执行下列程序段后,x的值为_____________。
x=100;a=10;b=20;0k1=5;0k2=0;
if(a
if(b!=15)
if(! 0k1)x=1;
else if(0k2) x=10;
30.若所有变量都己正确定义,则程序段中for循环的循环次数为_____________。
a=2;b=10;
for(i=b;i<=a;i--,a++)printf(″%3d″,i);
31.下面程序的输出结果是_____________。
main( )
{ int a[3][4]={2,4,5,8,6,3,7,1,4,9,0,6);
int i=1,j=2;
printf(″%d/n″,a[i][j]);
}
32.在函数外部定义的变量统称为全局变量,它们的作用域从_____________开始,直到本源文件或程序结束。
33.若指针变量p存放的是int型变量的地址1000,则p+n表示地址_____________。
34.设有:union reg
{char al;char ah;int ax;}regs;
则共用体类型变量regs的首地址,整数变量ax的首地址,char型变量al,ah的首地址_____________。
35.设有FILE *fp;int ch;则用fgetc函数从fp所联系文件中读取一个字符并赋给变量ch的C语句是_____________。
四、简答题(本大题共4小题,每小题3分,共12分)
36.简述Turbo C 2.0系统中,在主菜单File下选用Quit命令的作用。
37.请用if…else if…结构写出下面函数所对应的C语句程序段。
38.定义char str[12]=″programming″;可以写成char str[12];str=″programming″;吗?为什么?
39.简述fgetc和fgets函数的作用。它们的使用格式如下:
fgetc(fp);/*fp为文件指针*/
fgets(str,n,fp);/*str为字符串首址,n为整型数,fp为文件指针*/
五、阅读分析题(本大题共7小题,每小题4分,共28分)
40.阅读下面程序,写出运行结果:
main()
{ int i=3,k;
k=i+i+i;
printf(″k=%d,i=%d″,k,i);
}
41.阅读下面程序,写出运行结果:
main()
{ int x,a=0,b=0;
x=3;
switch(x)
{ case1:a++;b++;
case2:++a;++b;
case3:a+=;b+=1;
case4:a+=b;
}
printf(″a=%d,b=%d/n″,a,b);
}
42.阅读下面程序,写出程序运行结果:
main()
{ int j,k;
for (j=0;j<=2;j++)
{ printf(″%2d″,j+1);
for(k=0;k
printf(″%2d″,(j+1)*(k+1));
printf(″/n″);
}
}
43.阅读下面程序,写出运行结果:
long sum(n)
int n;
{
if(n==1) return 1;
else return(n+sum(n-1));
}
main()
{
printf(″y=%d/n″,sum(3));
}
44.阅读下面程序,写出运行结果:
int m=1;
void f()
{ int n=0;
static int s=0;
s++;n++;m++;
printf(″%d,%d,%d/n″,m,n,s);}
main()
{f();m=3;f();}
45.阅读下面程序,写出运行结果:
main{}
{ int a[5]={1,2,3,4,5},* p,s=0;
p=a;p++;
while(*p<=a[3])
{ s+=*p;
printf(″%3d″,*p++);}
printf(″/n″);
printf(″s=%d″,s);}
46.阅读下面程序,并回答相关问题:
struct number
{ int num;
struct number *next;
}*head=NULL;
void create()
{
struct number *ptr;
int x;
scanf(″%d″,&x);
while(x)
{
ptr=(struct number *)malloc(sizeof(struct number);
pty->num=x;ptr->next=head;head=ptr;
scanf(″%d″,&x);
}
}
请说明ptr=(struct number*)malloc(sizeof(strct number))的作用。
六、程序设计题(本大题共2小题,第47题8分,第48题12分,共20分)
47.输入20个整数,计算正数的平均值以及负数的和,并输出结果(设正数的个数大于零)。
48.设有5×5浮点型数组y(5×5表示5行5列)。要求:
(1) 从键盘输入25个浮点数对数组y赋初值。
(2)查找该数组中数值最大的元素和其行、列下标。
(3)依次将数组y中的数据、最大值、最大值元素的行下标和列下标写到当前目录下的二进制文件abc.txt中。
2002年4月计算机基础与程序设计试题
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.计算机能够自动按照人们的意图进行工作的最基本思想是( )
A.采用逻辑部件 B.存储程序和数据
C.控制代码 D.总结结构
2.若要显示C盘TC子目录下名为EXAM.C的内容一定成功的命令是( )
A.TYPE C:/TC/EXAM B.TYPE EXAM.C
C.COPY CON C;/TC/EXAM.C D.COPY C:/TC/EXAM.C CON
3.编辑程序的功能是( )
A.修改并建立源程序 B.将源程序翻译成目标程序
C.调试程序 D.命令计算机执行指定的程序
4.设int a=2,b;则执行b=a&&1;语句后,b的结果是( )
A.0 B.1 C.2 D.3
5.逗号表达式(a=3*5,a*4),a+15的值是( )
A.15 B.60 C.30 D.75
6.在C程序中,设一表达式中包含有int,long, unsigned和char类型的变量和数据,则表达式最后的运算结果类型是( )
A.int B.char C.unsigned D.long
7.下面程序段的运行结果是( )
main ( )
{int a=11,b=10,c=0;
a/=b+(b&&c);
printf(″%d/n″a);}
A.0 B.1 C.1.1 D.11
8.两次运行下面程序,如果从键盘上分别输入6和4,则程序的输出结果是( )
main ( )
{int x;
scanf(″%d″,&x);
if(x++>5) printf(″%d″,x);
else printf(″%d/n″,x-1);}
A.7和5 B.6和3 C.7和4 D.6和4
9.表达式y<3? -1.0∶1的值的类型应是( )
A.不确定 B.实型 C.整型 D.无符号整型
10.语句while(!e);中,条件!e等价于( )
A.e=0 B.e!=0 C.e!=1 D.e=0
11.下面程序的运行结果是( )
main( )
{int i=1,sum=0;
lop:sum=sum+i ;
i=i+2;
if(i<6)goto lop;
printf (″sum=%d/n″,sum);}
A.suu=4 B.sum=9 C.sum=16 D.sum=25
12.若定义int x[10];则Turbo C编译系统为该数组分配( )个字节存储单元。
A.10 B.11 C.20 D.21
13.以下对一维数组a中的所有元素进行正确初始化的是( )
A.int a[10]==(0,0,0,0); B.int a[10]={ };
C.int a[ ]={0}; D.int a[10]={10*2};
14.若有定义:char c[10];从键盘输入“LiFang”,则正确的函数引用是( )
A.scanf(″%c″,&c[10]); B.gets(c);
C.scanf(″%s″,&c); D.gets(c[10]);
15.若有如下函数定义:
add(float x, float y)
{……}
则下列说法正确的是( )
A.函数返回值类型不确定 B.函数返回值是float型
C.函数返回值是int型 D.函数返回值是void型
16.下面程序的运行结果是( )
fun(a,b)
int a,b;
{static c=1;
if (c==1)
a=b+c;
else
a=b-c
c++;
printf(″a=%d,b=%d/n″,a,b);}
main( )
{int a=3, b=5;
fun(a,b);
fun(a+1,b-1);}
A.a=6,b=5 B.a=5,b=5 C.a=6,b=5 D.a=6,b=6
a=5,b=5 a=4,b=4 a=2,b=4 a=5,b=3
17.若输入5和2后,下面程序的运行结果是( )
void swap(x1,x2)
int *x1, *x2;
{int *x;
x=x1;x1=x2;x2=x;}
main( )
{int a,b,*p1,*p2;
scanf(″%d,%d″,&a,&b);
p1=&a,p2=&b;
if(a>b) swap(p1,p2);
printf(″%d,%d/n″,*p1,*p2);}
A.5,2 B.5,5 C.2,5 D.2,2
18.若有定义int *x[3],b[10];则正确的赋值语句是( )
A.x=b[0]; B.x=b; C.x[0]=b[0]; D.x[0]=&b[0];
19.下面程序的运行结果是( )
#define ADD(x) x+x
void mian( )
{int a=2,b=1;
prinft(″%d/n″,3*ADD(a+b));}
A.9 B.10 C.12 D.18
20.则FILE *fp;char ch;ch=fgetc(fp);可以推知fgetc函数的原型可以是( )
A.void fgetc( ); B.char fgetc( )
C.char fgetc(int); D.int fgetc(FILE *fp);
二、多项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的五个选项中有二至五个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。多选、少选、错选均无分。
21.下面哪些是组成MS—DOS操作系统的模块( )
A.COMMAND.COM B.IO.SYS C.MSDOS.SYS
D.Turbo C E.BOOT
22.与十进制141等值的数是( )
A.(10001101)2 B.(10001110)2 C.(215)8
D.(8D)16 E.(8E)16
23.设a=1,b=-3,c=0,下面表达式为0的是( )
A.b>a&&a
D.!a&&b‖a&&(c+1) E.(1,2,5)==(1,3,3)
24.在下列各说法中,正确的说法有( )
A.break语句只能用于循环语句
B.break语句只能用于switch语句和循环语句
C.break语句可用于switch语句
D.break语句可用于循环语句
E.break语句不能用于switch语句
25.若有如下定义及赋值( )
int x=9,*p,*p1;
p=&x;p1=p;
则可以输出变量x的地址的语句是
A.printf(″%d/n″,x) B.printf(″%d/n″,*p);
C.printf(″%d/n″,p1); D.printf(″%d/n″,&x);
E.printf(″%d/n″,*p1);
26.有函数定义如下:( )
void ss(x)
int *x;
{……}
则主函数中引用函数ss的正确形式是
A.main( ) B.main( ) C.main( )
{int a[5]; {int a[5].*p=a; {int a[5];
… … …
ss(a); ss(p); ss(a[0]);
… } … } … }
D.main( ) E.main( )
{int a[5],*p=a; {int a[5],*p=a;
… …
ss( p[0]); ss(*p);
… } … }
27.若有定义int x[4][5],(*p)[5];及赋值p=x;则下列表示数组地址的形式中,地址值相等的是( )
A.*(x+1) B.x+1 C.x[2]
D.P+1 E.*(p+1)
28.设有定义int a[3][6],*p;则正确的指向数组元素的指针赋值是( )
A.p=*a; B.p=a[0]; C.p=a
D.p=a+1; E.p=*(a[0]+1);
29.有以下定义和语句:( )
struct stud {char name [10];
int age;}
struct stud s, *ps;
ps=&s;
则下面正确的语句是
A.s={″Mary″,30} B.(*ps)->age=30 C.s.name=″Mary″;
D.scanf(″%d″,&ps->age); E.strcpy(ps->name,″Mary″);
30.设有int a=123;a^0xff00可以使a的( )
A.低字节取反 B.高字节取反 C.低字节不变
D.高字节不变 E.高低字节都取反
三、填空题(本大题共10小题,每小题1分,共10分)
31.设字长为八位,十进制—100在机内的存储形式是______。
32.C语言程序由main( )函数开始执行,应在______函数中结束。
33.在格式输出语句中,用于带符号的十进制长整型输出的格式符是______。
34.当a=2,b=3,c=1时,执行以下程序段后,输出结果是______。
if(a>b)
if(a>c)
printf(″%d/n″,a);
else
printf (″%d/n″,b);
printf(″end/n″);
35.设i,n,p均为int型变量,则执行以下程序段后,p的值为______。
p=1;n=4;
for(i=1;i<=n;i++)
p=p*i;
36.以下程序的输出结果是______。
main ( )
{int a[3][3]={1,2,3,4,5,6,7,8,9},i,s=0;
for(i=0;i<=2;i++) s=s+a[i][i];
printf (″s=%d/n″,s);}
37.所谓变量的______就是可引用变量的范围,通常取决于变量被定义的位置。
38.设p1,p2为同类型的指针变量,若有p1==p2,则说明p1与p2指向______。
39.在union std
{int fjh;
char addr [30];
} wang;
中,wang是具有″union std″共用体类型的______。
40.字符串写函数fputs( )的格式是fputs(str,fp);它的功能是______。
四、简答题(本大题共4小题,第41、42题每小题2分,第43、44题每小题3分,共10分)
41.描述一个C程序开发过程的流程图。
42.将下列条件语句逻辑关系写得更清晰一些(必要时可把if嵌套的有关部分写成复合语句)。
if(a
if(a
if(a
x=5;else x=6;
43.定义char *str=″program″;和定义char str[]=″program″;是等价的吗?为什么?
44.简述feof函数返回值的含义。
五、阅读分析题(本大题10小题,每小题2分,共20分)
45.阅读下列程序,写出运行结果。
main( )
{unsigned a;
int b=-1;
a=b;
printf(″%u/n″,a);
printf(″a=%x″,a);}
46.阅读下列程序,并回答问题:
main( )
{int x=1,y=0,a=0,b=0;
switch(x)
{case 1: switch(y)
{case 0; a++;break;
case 1: b++;break;}
case 2:a++;b++;break;
case 3:a++;b++;}
printf(″a=%d,b=%d/n″,a,b);}
请分析该程序的执行过程并写出运行结果。
第47、48、49题请参阅下面程序,并回答相关问题:
#define N 8
main( )
{int a=1,b-1,i;
for (i=1,i<=N/2;i++)
{printf(″%5d %5d″,a,b);
if(i%2==0) printf(″/n″);
a=b+a;b=a+b;}}
47.printf(″/n″);语句执行多少次?
48.程序输出结果是什么?
49.若把if(i%2==0)print(″/n″);语句删除,程序输出效果与48题有何不同?
第50、51、52题请参阅下面程序,并回答相关问题。
main( )
{int num;
scanf(″%d″,&num);
if(prime(num))
printf(″%d is prime number″,num);
else
printf(″%d is not a prime number″,num);}
int prime(num)
int num;
{int flag =1,n;
for(n=2;n
if(num%n==0) flag=0;
return (flag);}
50.prime 函数的功能是什么?
51.当输入23时,程序运行结果是什么?
52.flag变量的作用是什么?
第53、54题请参阅下面程序,并回答相关问题。
struct node {int x;
struct node * next;};
void print(struct node * head)
{struct node *p;
p=head;
while (p!=NULL)
{printf(″%d/n″,p->x);
p=p->next;
}
}
53.函数print完成的功能。
54.语句p=p->next;的作用。
六、程序设计题(本大题共2小题,第55小题8分,第56小题12分,共20分)
55.将26个英文字母按aAbBcCdD……zZ先小写后大写的顺序逐个打印出来。
56.编程实现将字符串str2连接到字符串str1的末尾并输出str1串。(不得使用C中的strcat标准库函数)
浙江省2003年7月计算机基础与程序设计试题
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共20分)
1.计算机硬件系统中最核心的部件是( )。
A.微处理器 B.主存储器 C.CD-ROM D.输入/输出设备
2.下列四个数中,最小的一个数是( )。
A.(51)16 B.(85)10 C.(123)8 D.(01010110)2
3.表示关系x<=y<=z的C语言表达式为( )。
A.(x<=y)&&(y<=z) B.(x<=y)AND(y<=z)
C.(x<=y<=z) D.(x<=y)&(y<=z)
4.设整型变量m,n,a,b,c,d均为1,执行″(m=a>b)&&(n=c>d)″后,m,n的值为( )。
A.0,0 B.0,1 C.1,0 D.1,1
5.执行下列语句时,输入( ),则a和b的值都是10。
int a,b;
scanf(″a=%d,b=%d″,&a,&b);
A.10 10 B.10,10 C.a=10 b=10 D.a=10,b=10
6.已知字符a的ASCII值为97,则执行以下语句后输出( )。
char ch=′a′;
int k=12;
printf(″%x,%o″,ch,ch,k);
printf(″K=%%d″,k);
A.因变量类型与格式描述符的类型不匹配输出无定值
B.输出项与格式描述符个数不符,输出为0或不定值
C.61,141,k=%d
D.61,141,k=%12
7.以下程序段输出结果是( )。
int m=5;
if(m++>5)printf(″%d/n″,m);
else printf(″%d/n″,m--);
A.7 B.6 C.5 D.4
8.当键盘上输入hello#时,输出结果为( )。
int v1=0,v2=0;
char ch;
while((ch=getchar( ))!=′#′)
switch(ch)
{case ′a′:
case ′h′:
default: v1++;
case ′o′:v2++;
}
printf(″%d,%d″,v1,v2);
A.3,1 B.5,5 C.4,5 D.4,1
9.设k为整型,以下do--while循环( )。
k=10;
do
{k=k-1;
}while(k=1);
A.执行10次 B.执行1次 C.无限循环 D.一次也不执行
10.执行下列语句后,变量i的值是( )。
int i;
for(i=1;i++<4;);
A.3 B.4 C.5 D.不定
11.在C语言中,二维数组元素在内存中的存放顺序是( )。
A.按行存放 B.按列存放 C.由用户自己定义 D.由编译器决定
12.若有下列定义和语句,则结果是(注:u代表空格)( )。
char s[10];
s=″abcd″;
printf(″%s/n″,s);
A.输出abcd B.输出a C.输出abcduuuuu D.编译不通过
13.C程序中,若对函数类型未加说明,则函数的隐含类型为( )。
A.int B.double C.void D.char
14.若用数组名作为函数调用的实参,传递给形参的是( )。
A.数组首地址 B.数组第一个元素的值
C.数组中全部元素的值 D.数组元素的个数
15.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,( )是正确的。
A.p2=p1; B.p2=**p1; C.p2=&p1; D.p2=*p1;
16.变量的指针,其含义是指该变量的( )。
A.值 B.地址 C.名 D.一个标志
17.对于以下的变量定义,表达式( )是不正确的。
struct node{
int j,k;
}x,*p=&x;
A.p->k=2 B.(*p).k=2 C.x.k=2 D.x->k=2
18.执行下列语句后,变量z的值是( )。
#define SQ(x) x*x
#define DD(x,y) SQ(x)-SQ(y)
int z;
z=DD(2*3,2+3);
A.11 B.43 C.25 D.以上均不是
19.执行下列语句后,变量y值是( )。
int y,a1=7,a2=1;
y=(a1<<1)&(a2<<2);
A.0 B.1 C.4 D.以上都错
20.打开文件名为file.dat的文件进行读操作的正确写法为( )。
char fname[]=″file.dat″;
A.fopen(file.dat,″r″) B.fopen(fnane,″w″)
C.fopen(fname,″r″) D.fopen(″fname″,″r″)
二、填空题(每题2分,共22分)
1.高级语言翻译成机器语言的翻译方式有_______和________。
2.下列程序段的输出结果是________。
float a;
int b=5;
a=5/2;
b=b/2*a;
printf(″%f,%f/n″,a,(float)b);
3.若k为int变量,则以下语句输出为________。
k=8567;
printf(″|%-6d|/n″,k);
4.以下if语句执行后,a、b、c中的值分别为________。
int a=1,b=2,c=3;
if(a>c)b=a;a=c;c=b;
5.下列程序段的输出是________。
main()
{int k;
for(k=0;k<5;k++)
{if(!(k%2))printf(″*″);
else continue;
printf(″#″);
}
}
6.下面程序段的运行结果是________。
char ch[]={″6543ab21″};
int i,s=0;
for(i=0;ch[i]>=′0′&&ch[i]<=′9′;i+=2)
s=10*s+ch[i]-′0′;
printf(″%d″,s);
7.对于以下递归函数f,计算f(3)的值________。
int f(int k)
{return (k<0?(k*=2):f(k-2)+k);}
8.下列程序段的输出结果是:________。
char*c[3]={″FIRST″,″SECOND″,″THIRD″};
printf(″%s″,*(c+1));
9.若有以下说明和语句,己知int和double类型分别占2和8个字节,则sizeof(st)的值为________。
struct st{char a[10];
union{int i;
double y;
};
}
10.写出下列程序段的输出结果________。
#defineF(x) x-2
#defineD(x) x*F(x)
printf(″%d,%d″,D(3),D(D(3)));
11.函数fseek(fp,30L,0)的功能是________。
三、阅读题(每小题3分,共15分)
1.阅读下列程序,当输入为:ab*AB%cd#CD$时,
写出程序运行的输出结果:________。
# include
void main()
{char c;
while((c=getchar())!=′$′)
{if(′A′<=c&&c<=′Z′)putchar(c);
else if(′a′<=c&&c<=′z′)putchar(c-32);
}
}
2.若输入3 1 2 3<回车>,则以下程序输出的结果是________。
# include
void main( )
{ int i,j,n,a[10];
scanf(″%d″”,&n);
for(i=0;i
for(i=0;i
for(j=0;j
printf(″%3d″,a[(i+j)%n]);}
3.以下的C程序的输出结果是________。
# include
void main()
{char a[]={′*′,′*′,′*′,′*′,′*′};
int i,j,k; for(i=0;i<5;i++)
{printf(″/n″);
for(j=0;j printf(″%c″,′′);
for(k=0;k<5;k++) printf(″%c″,a[k]);
} }
4.下列程序输出的结果是________。
# include
char rech(char s[],int n)
{
return s[n]+10;
}
void main()
{ char s[]=″ABCDEFGH″;
int i=0;
while(s[i])
{ putchar(rech(s,i));
i++;
}
putchar(′/n′);
}
5.以下程序的输出结果是________。
# include
int z;
void p(int*x,int y)
{ ++*x;
y--;
z=*x+y+z;
printf(″%d,%d,%d#″,*x,y,z);
}
void main()
{ int x=1,y=5,z=9;
p(&x,y);
printf(″%d,%d,%d#″,x,y,z);
}
四、程序填空题(每小题6分,共24分)
1.输入以-1结束的一批整数,输出其中的最大值。
例如:输入-3、-8、-10、-1后,输出:max=-3。
# include
void main()
{ int max,x;
scanf(″%d″,&x);
if(x!=-1)
{max=x;
while( )
{if(max
________;
}
printf(″max=%d/n″,max);
}
}
2.函数sort使用交换排序法将一维整型数组a[10]中各元素按值从大到小排序。
void sort(________)
{ int i,j,k,temp;
for(i=0;i
{k=i;
for(j=i+1;j
if(________)k=j;
temp=a[k];a[k]=a[i]; a[i]=temp;
}
}
3.在函数f()中将一长整型的数逆序,并返回逆序后的数;
在主函数中输入该长整型数、并输出它逆序后的数。
________
{ int t;
long y=0;
while(________)
{t=x%10;
y=y*10+t;
x=x/10;
}
return y;
}
main()
{long x,y;
scanf(″%ld″,&x);
y=f(x);
printf(″%ld″,y);
}
4.下面是统计链表head中结点个数的函数。
struct link
{char data;
struct link*next;
};
int fun(struct link*head)
{struct link*p;
int n=0;
p=head;
while(________)
{n++;
________;
}
return n;
}
五、编程题(共19分,第1小题7分,第2小题12分)
1.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
2.编一函数prime(int n),判断n是否素数,若是返回″1″,否则,返回″0″;
在主函数中,把3——100之间的所有孪生素数存入文件″file.dat″。
注:孪生素数是指它们的差是2的二个素数.
如:5,7;11,13是孪生素数
而13,17不是