1、全国2011年4月自学考试计算机基础与程序设计试题 一、单项选择题 (本大题共20小题,每小题1分,共20分) 1.计算机处理信息时,CPU一般是以一组二进制数码为单位进行处理的,这组二进制数码称 为( ) A.word B.MB C.KB D.bit 2.下列不属于计算机硬件系统的是 ( ) A.操作系统 B.控制器 C.存储器 D.运算器 3.下面转义字符中,表示换页的是 ( ) A.\0 B.\n C.\r D.\f 4.在Turbo C 2.O中,保存源程序在主菜单File项中可选
2、择( ) A.Load B.New C.Save D.Quit 5.下面表达式结果为3的是 ( ) A.(-7)%4 B.(-7.O)%4.0 C.7%(-4) D.7.O%4.O 6.设有int x=2,y,z;执行z=y=x++;后变量z的值是 ( ) A.0 B.1 C.2 D.3 7.下面不正确的关系表达式是 ( ) A.a=3 B.a<3 C.a>=b>c D.a>b>c 8.设有声明int x=1,y=2,z;执行z=x>y?x+2:
3、y-2后变量z的值是 ( ) A.0 B.1 C.2 D.3 9.设有int b=-1;则执行printf("%u\n”,b);后的输出是 ( ) A.-1 B.ffff C.177777 D.65535 10.下面程序段的输出结果是 ( ) main() { int a=3,b=5,c; c=a+b;a=b;b=c; printf("%d,%d",a,b);} A.3,5 B.5,3 C.5,8 D.8,13 11.设有声明int x=-1;执行if(x<0)x=-x-1
4、后变量x的值是 ( ) A.-1 B.0 C.1 D.2 12.关于break语句,以下说法不正确的是 ( ) A.它可以用于循环语句中 B.它可以用于switch语句中 C.可以从最内层循环结构中直接跳出最外层循环结构 D.可以从当前switch结构中跳出 13.下面能正确将字符串"Boy"进行完整赋值操作的语句是( ) A.char s[3]={′B′,′o′,′y′}; B.char s[]="Boy"; C.char s[3]={"Boy"}; D.char s[3]; s[O]=′B′;s[1]=′o
5、′;s[2]=′y′; 14.下列函数中向文件一次读一串字符的函数是 ( ) A.fgetc B.fgets C.fputc D.fputs 15.在一个c源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是 ( ) A.extern B.register C.auto D.static 16.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 ( ) A.地址传递 B.单向值传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定方式 17.设有声
6、明语句int a[2][3],(*p)[3]=a;则对a数组元素正确引用的是 ( ) A.(p+1)[O] B.*(*(p+2)+1) C.*(p[1]+1) D.p[1]+2 18.设有下面的结构体和结构变量定义: ( ) struct car { long id: char*name; }; struct car carl; 关于结构体类型变量赋值不正确的是 A.carl.id=10101; B.carl.name="BlueSky"; C.carl.* name="BlueSky"; D.carl.id=123456L;
7、 19.设有声明和语句: ( ) unsigned int x=1,y=2; x<<=y+1; 则x的值是 A.1 B.4 C.5 D.8 20.设有下面程序: ( ) #include"stdio.h" void main(void) { unsigned x=1,y=3,z=5; printf("%d\n",x y); } 该程序的运行结果是 A.1 B.3 C.5 D.7 二、多项选择题 (本大题共5小题,每小题2分,共10分) 在每小题列出的五个备选项中至少有两个是符
8、合题目要求的, 请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。 21.与十进制10.625等值的数有 ( ) A.(10.101)2 B.(1010.101)2 C.(12.101)8 D.(12.5)8 E.(A.A)16 22.下面合法的C语言用户定义的标识符有 ( ) A.auto B._123 C.ABC D.Turbo_c E.int 23.下面属于Turbo C 提供的数学函数有 ( ) A.acos B.tan C.puts
9、D. sqrt E.exp 24.自定义函数有n1,n2,n3三个形式参数且为整型,函数正确的定义形式有( ) A.int fun(int nl,n2,n3) {…} B.int fun(int nl,int n2,int n3){…} C.int fun(nl,n2,n3) int nl,n2,n3;{…} D.int fun(n1,n2,n3) {int nl,n2,n3;…} E.int fun(nl,n2,n3) {int n1,int n2,int n3;…} 25.设有关于结构体类型的定义:( ) struc
10、t mankind { char name[20]; int age; float weight: }person,*p; 下面各个供选项中语句都正确的有 A.person.name="Li"; person.age=15; B.strcpy(person.name,"Wang"); Person->age=15; C.p=&person; p->age=25; D.strcpy(person.name,"Tom"); p=&person; E.strcpy(person.name,"Tom"),p=&person; p->weight=97.
11、2; 三、简答题 (本大题共4小题,每小题4分,共16分) 26.设有下面程序: void main(void) { int x: x=1: while(x<20){ printf("x=%d\n",x); x+=2: } } 请把程序改写为for结构。 27.声明语句char s[20]="computer"; 能用下面的语句替代吗?为什么? char s[20]; s="computer"; 28.设有说明: struct node{ int num; char name[12]; char sex; float
12、 income; }a,*ptr=&a; 写出对ptr所指成员num,name,sex,income分别赋值123,"zhang",′m′,654.25的赋值语句。 29.设有说明:unsigned x=10;试写出通过仅对x进行移位操作的表达式,使表达式的值为 16。 四、阅读分析题 (本大题共6小题,每小题5分,共30分) 30.阅读下列程序并写出运行结果。 void main(void) { int x=1,y=2; char ch=′a′: x++;y-=2;++ch; printf("%c,%d,%d\n",ch,x,y); } 31.阅读下列程序
13、并写出运行结果。 void main(void) { int x=11; switch(x-1){ case O: printf("x=%d\n",x++); break: case 10: printf("x=%d\n",x*2); case 20: printf("x=%d\n",x*4); default: printf("x=%d\n",x); } } 32.阅读下列程序,当依次输入11,l2,l3,14,16这5个数时,请写出程序的运行结果。 void main(void) { int x,i,s=O; for(i=O;i<5;i++){ sc
14、anf("%d",&x); if(x%2)continue; printf("%d\t",x); s+=x; } printf("\n"); printf("s=%d\n",s); } 33.阅读下列程序并写出运行结果。 void main(void) { int x=3,y[7]={1,3,5,8,9,11,12}; int t=O,b=7,f=O,m; m=(b+t)/2; while(b-t>=O) if(y[m]==x){f=1; printf("\ny[%d]=%d\n",m,y[m]); break; } else if(y[m]>x) {
15、 b=m-1;printf("%d\t",y[m]); m=(b+t)/2;} else{ t=m+1;printf("%d\t",y[m]); m=(b+t)/2;} if(! f) printf("\n not find!\n"); 34.阅读下列程序序并写出运行结果。 int fun(int y); void main(void) { int x[4]={3,5,7,O},s=0,i=0; while(x[i]){ s+=fun(x[i]); i++; printf("s=%d\n",s); } } int fun(int y) { static
16、int a=O; a=a+y; return a; } 35.阅读下列程序并写出运行结果。 void f1(char*t,char*s); void main(void) { char s1[20]="abcdl2345",t1[20]="xyz"; printf("%s\n%s\n",s1,t1); f1(t1,s1); printf("%s\n",t1); } void f1(char*t,char*s) { while((*t=*s)!=′\0′){ t++; s++; } } 五、编程题 (本大题共2小题,每小题12分,共24分) 36.从键盘
17、输入20个整数存放到数组a 中,计算数组a中下标为奇数的所有元素的和。 37.从键盘上输入20个字符存放到一个字符数组s中。对数组s中的元素按升序(由小到大)排序,再将排序后的结果写到c:\abc.dat文本文件中。 第6页第7页为2011年4月份答案 全国2011年7月自学考试计算机基础与程序设计试题 课程代码:02275 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下列存储设备中,属于主机范畴的是( ) A.光盘
18、 B.硬盘 C.内存 D.U盘 2.下列属于计算机软件系统的是( ) A.内存储器 B.操作系统 C.显示器 D.CPU 3.在Turbo C2.0中,在主菜单File项中选择Os Shell后,要重新回到Turbo C2.0,应使用的命令是( ) A.Return B.Exit C.Quit D.New 4.下面合法的C语言标识符是( ) A.int_ B.int C.π D.file.c 5.若有int a,b;下面正确使用变量a,b的表达式是( ) A.7.0%
19、3.0 B.(a+b)++ C.7++ D.a+′a′+b 6.下面几种运算符中,优先级最低的是( ) A.| | B., C.= D.?: 7.设有int a=3,b=-4,c=5;表达式(a>b)?a&&c<0:b的值是( ) A.0 B.1 C.3 D.-4 8.设有int x=2,y,z;执行z=y=x++;后变量y的值是( ) A.0 B.1 C.2 D.3 9.若有int a=8,b=5;语句printf(“%d”,a>b);的执
20、行结果是( ) A.0 B.1 C.5 D.8 10.下面程序的输出结果是( ) main( ) {int a=3,b=5; a+=b;b+=a; printf(“%d,%d”,a,b);} A.3,5 B.5,3 C.8,13 D.13,21 11.若有int a=8,b=12,max,min;执行语句 if(a>b){max=a;min=b;} else{max=b;min=a;} 的结果是( ) A.max的值是8,min的值是12 B.max的值是8,min的值是
21、8 C.max的值是12,min的值是8 D.max的值是12,min的值是12 12.执行下面程序段后,a的值是 int a=100; do {a++;}while(a>120);( ) A.100 B.101 C.120 D.121 13.若有定义int ch[5][4];则数组ch中的元素的个数是( ) A.9 B.12 C.15 D.20 14.若有定义char str[20];能使数组str得到字符串"I am a boy"的正确输入方法是( ) A.gets(str); B.
22、str=getchar( ); C.scanf("%c",str); D.scanf("%s",str); 15.若主函数调用funl函数,而funl函数调用fun2函数,这种逐级调用称为( ) A.直接递归调用 B.间接递归调用 C.并行调用 D.嵌套调用 16.下面关于函数参数的说法中,不正确的是( ) A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式 C.实参可以是数组元素或数组名 D.形参应与其对应的实参类型一致 17.若有定义int b[2][3] ={0},(*p)[3]=
23、b;对b数组第i行第j列(设i,j已正确说明并赋 值)元素的不正确的引用是( ) A.*(*(p+i)+j) B.*(p[i]+j) C.*(p+i)+j D.(*(p+i))[j] 18.设有下面的结构体和结构变量定义: Struct tea { char*name; float price,weight; }; struct tea teal={"green_tea",2.0,28.5}; struct tea *p_struct=&teal; 语句: printf("%s,%.1f ",p_struct—>name,p_struct—>pri
24、ce*p_struct—>weight); 的输出结果是( ) A.57.0 B.57.0,green_tea C.green_tea,57.0 D.green_tea 19.若有定义int x=5,y=6;下面表达式值为0的是( ) A.x^x B.x&y C.x|y D.y>>2 20.下列函数中向文件一次读一个字符的函数是( ) A.fgetc B.fputc C.fgets D.fputs 二、多项选择题(本大题共5小题,每小题2分,共10分) 在每小题列出的五个备选项中至少有
25、两个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。 21.与十进制100等值的数有( ) A.(1100100)2 B.(1011011)2 C.(144)8 D.(64)16 E.(5F)16 22.下面合法的C语言常量有( ) A.′tc′ B.3e2.5 C.0xfde D.1e8 E.′\n′ 23.下面属于C语言中输入或输出函数的有( ) A.scanf B.printf C.putchar D.main E.pow 2
26、4.下面关于函数的说法中,不正确的有( ) A.定义函数时,形参的类型说明可以放在函数体内 B.return后边的值不能为表达式 C.如果函数值的类型与返回值类型不一致,以函数值类型为准 D.如果形参与实参的类型不一致,以实参类型为准 E.形参与实参的对应关系由形参名和实参名决定 25.设有关于结构体类型的定义: struct database { char name[20]; float speed; }dbl={"Oracle",125600.56},db2,*p=&db2; 下面选项中语句正确的有( ) A.p=&dbl; B.p=dbl
27、 C.strcpy(p—>name,"Sybase"); D.p—>speed=dbl.speed; E.strcpy(p—>name,dbl.name) 三、简答题(本大题共4小题,每小题4分,共16分) 26.下面是求1到100之和的程序 main( ) { int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("%d\n",sum); } 问如何修改循环体,使其仅求前10个数之和。 27.若有下面定义: int num[10]={0,1,2,3,4,5,6,7,8,9),*p=num; 设数组num
28、的首地址是65484。 问:(1)表达式p+8表示什么?其值是多少? (2)表达式*(p+8)表示什么?其值是多少? 28.设有说明:unsigned x=0x1234;下面表达式(1)、(2)的运算结果的十六进制值是什么? (1)(x&0xff00)>>8|(x&0xff)<<8 (2)x&0xff00>>8|x&0xff<<8 29.设有说明: struct island {int id;char name[10]; float area;}a,*p=&a;写出对p所指的成员id、area分别赋值101、34521.65,使p所指的指针成员name指向"Wan
29、g"的C语句分别是: 四、阅读分析题(本大题共6小题,每小题5分,共30分) 30.阅读下列程序并写出运行结果。 main( ) { int a=55,x,y; x=(int)(a/8.0); y=a-8*x; printf("%d,%d\n",x,y); } 31.阅读下列程序并写出运行结果。 main( ) { float x;int a=0; scanf("%f ",&x); switch(x/10-5) { case 7: a++; case 6:a++;printf("%d,",a); case 5:a++;break; case
30、4:a++; default:a++;printf("%d,",a); case 1:a+=2: } printf("%d\n",a); } (1)当程序运行后输入115.5后,写出程序的执行结果。 (2)当再次运行程序后输入45后,写出程序的执行结果。 32.阅读下列程序并写出运行结果。 main( ) { int s=0,k=1,i; for(i=0;i<10;i++) { k=k+i; s+=k; if(i>3) break; s+=2*k: printf("s=%d\n",s); } printf("s=%d\n",s); } 33.阅读下列程序
31、并写出运行结果。 main( ) { int a[4][4],i,j; for( i=1;i<=3;i++) for( j=1;j<=3;j++) a[i][j]=i+j; for(i=1;i<4;i++){ for(j=1;j<=i;j++) printf("%3d",a[i][j]); printf("\n"); } } 34.阅读下列程序并写出运行结果。 int sum1; main( ) { int sum2=0,i,f1(int),f2(int); for(i=1;i<=5;i++) sum1+=f1(i); for(i=1;i<=5;i++)
32、sum2+=f2(i);
printf("sum1=%d\n",sum1);
printf("sum2=%d\n"sum2);
}
int f1(int a)
{ static int s1=1;
s1*=a;
return s1;
}
int f2(int a)
{ auto int s2=1;
s2*=a;
return s2;
}
35.阅读下列程序并写出运行结果。
main( )
{ char s[]="abcdel2345",*q=s;
int a=0;
for(;q
33、ntf("\na=%d\n",a); } int f(char*p) { int x=0; while(*p++!=′\0′) x++; return x; } 五、编程题(本大题共2小题,每小题12分,共24分) 36.从键盘上输入30个整数,输出其中能被3整除的数,并求出所有能被3整除的数之和。 37.从二进制文件c:\abc.dat中读出10个float型数据存放于数组a中,然后将数组a中的数据按从小到大的次序输出在屏幕上。 2011.7计算机基础与程序设计试题答案 1 2 3 4 5 6 7 8 9 10 C B B A D B
34、 A C B C 11 12 13 14 15 16 17 18 19 20 C B D A D B C C A 1 2 3 4 5 ACD CDE ABC ABC ACDE 三、简答题 26、main( ) { int i,sum=0; for(i=1;i<=10;i++) sum+=i; printf("%d\n",sum); } 27、(1)65484+16 (2)8 29、p->id=101;p->area=345212.65;strcpy(p->name,
35、wang”); 13 31、(1)12 (2)13 32、S=3 S=9 S=21 S=42 S=53 33、 2 3 4 4 5 6 34、Sum1=153 Sum2=15 35、abcde a=10 36、 #include "stdio.h" main() { int a[30],i,sum=0; printf("input 30 nubmers:"); for(i=0;i<=29;i++) scanf("%d",&a[i]); for(i=0;i<=29;i++) if(a[i]%
36、3==0) { printf("%5d",a[i]); sum=sum+a[i]; } printf("\n%d",sum); getch(); } 37、 #include "stdio.h" main() { FILE *fp; float a[10] ,x; int i=0,j=0; if((fp=fopen("c:\abc.dat","r")==NULL) exit(0); while(fscanf(fp,"%f ",&a[i++])!=EOF); fclose(fp); for(i=0
37、i<=9;i++) for(j=0;j<=i;j++) if(a[j]>a[j+1]) { x=a[j]; a[j]=a[j+1]; a[j=1]=x; } for(i=0;i<=9;i++) printf("%f ",a[i]); } 2012年4月高等教育自学考试 计算机基础与程序设计试题 课程代码:02275 一、单项选择题 (本大题共20小题,每小题1分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在
38、题后的括号内。错选、多选或未选均无分。 1.存储容量1KB等于 ( ) A.23字节 B.210字节 C.220字节 D.230字节 2.下面哪种设备是输出设备? ( ) A.扫描仪 B.键盘 C.鼠标 D.显示器 3.设有int a=3,b=-4,c=5;表达式++a-c+b++的值是 ( ) A.-6 B.-5 C.-4 D.-3 4.设有int x,y;表达式y=(x=1,++x,x+2)的值是 ( ) A.1 B.2 C.3 D.4 5.以十六进制形式输出整型数的格式说明符是 ( ) A.%x B.
39、%u C.%o D.%d
6.下列语句中,有语法错误的是 ( )
A.if(x>y); B.if(x= =y)x+y;
C.if(x!=y) scanf(″%d″,&x)else scanf (″%d″,&y);
D.if(x 40、printf (″\n″);
A.0次 B.1次 C.2次 D.无限次
9.下面程序段的输出结果是( )
for(i=1;i<3;i++)
for(j=1;j<3;j++)
printf(″%d”,i+j);
A.2 3 3 4 B.2 3 4
C. D.
10.若有定义int a[4]={1,2,3,4};则表达式a[a[2]- 3*a[0]+1]的值是( )
A.1 B.2 C.3 D.4
11.在C语言程序中,关于函数的定义和调用,以下描述正确的是( )
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B 41、.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的调用均可以嵌套
12.关于main函数,以下说法中正确的是 ( )
A.C语言程序总是从有定义的函数起顺序执行,在main函数中结束
B.在C语言程序中,被调用的函数必须在main()函数中定义
C.C语言程序中的main()函数必须放在程序开始部分
D.C语言程序总是从main()函数开始执行
13.若要定义一个长整型的变量a和一个指向变量a的指针变量q,下面正确的定义语句是( )
A.long a,*q=a; B.long a,*q=&a; 42、 C.long*q=&a,a; D.long a,q=&a;
14.若有说明long int x[5];下面能正确表示数组元素地址的是( )
A.&x[3] B.&x C.&x+1 D.*x
15.下面关于结构体类型的定义正确的是( )
A.struct ABC B.struct ABC
{ {
int a int a;
char b char b;
char *p char 43、 *p;
} }
C.struct ABC D.struct ABC
{ {
int a; int a,
char b; char b,
char *p; char *p,
}; };
16.下面列出的位运算符中,表示按位与操作的是 ( )
A.~ B.! C.& D.^
17.下面各个位运算符优先级从左到右依次升高 44、的是 ( )
A.> > | & ~ B.| > > & ~ C.| & > > ~ D.~ | & > >
18.设有说明:int u=1,v=3;表达式:u<<=v的值是( )
A.0 B.1 C.3 D.8
19.如果将文件指针fp指向文件末尾,正确的语句是 ( )
A.feof(fp); B.rewind(fp); C.fseek(fp,0L,0); D.fseek(fp,0L,2);
20.若要在C盘TC目录下,建立一个a1.dat的文本文件,正确使用打开文件的函数是( )
A.fopen(″C:\\ TC \\ 45、a1.dat″,″r″) B.fopen(″C:\ TC \ a1.dat″,″r″)
C.fopen(″C:\\ TC \\ a1.dat″,″w″) D.fopen(″C:\ TC \ a1.dat″,″w″)
二、多项选择题 (本大题共5小题,每小题2分,共10分)
在每小题列出的五个备选项中至少有两个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。
21.下面属于合法的C语句的有 ( )
A.表达式语句 B.函数调用语句 C.子程序调用语句 D.空语句 E.循环语句
22.下面循环语句中,没有“无限循环”错误的 46、循环语句有 ( )
A.for(;;); B.for(i=1;i<10;i++); C.while(1); D.while(0);
E.do{循环体)while(1);
23.设有声明:int a[5]={1,3,5,7,9);下面表达式的结果为10的有 ( )
A.a[l]+a[3] B.a[2]-2*a[1] C.2*a[2] D.a[0]+a[4] E.a[1]+[-a[2]+a[3]
24.若有如下定义及赋值:
int x=5,*p,*pl;
p=&x;
pl=p;
则可以输出变量x的值的语句有 ( )
A.print 47、f(″%d\n″,x); B.printf(″%d\n″,*p);
C.printf(″%d\n″,p1); D.printf(″%d\n″,&x); E.printf(″%d\n″,*p1);
25.设有关于结构体类型的定义:
struct boat
{ char name[10];
int weight;
}myboat,*ps;
下面各项中语句都正确的有 ( )
A.myboat.name=″Li″。
myboat.weight=1600;
B.ps=&myboat;
strcpy(ps->name,″Wuhan″);
C.ps=&my 48、boat; ‘
Ps->weight=2700;
D.strcpy(myboat.name,″Wine″);
ps=&myboat;
E.ps=&myboat,strcpy(myboat.name,″Shanghai″);
Ps->weight=5512;
三、简答题 (本大题共4小题,每小题4分,共16分)
26.写出将x,y,z,w分别声明为整型变量、短整型变量、长整型变量和无符号整型变量的语句。
27.将下面for循环的程序段,用含while循环的程序段实现。
for(s=0,i=1;i<=10;i++)
s+=i;
28.简述声明 49、语句:char *p[4];的含义。
29.设有声明:
struct cjd
{ long bh;
long int xq;
char xm[9];
float score[3];
}x={201101,2,″张大力″,76,85.0,90);
简单回答(1)结构体名;(2)结构体类型变量;(3)结构体类型变量所占字节数;(4)结构体成
员x.score[2]的值。
四、阅读分析题 (本大题共6小题,每小题5分,共30分)
30.写出下面程序的运行结果
main()
{
int a=1,b=2,c=3;
++a;
b=b+a:
50、
c=c/2;
printf(″%d,%d,%d\n″,a,b,c);
}
31.写出下面程序的运行结果
main()
{
char ch;
ch=′a′;
switch(ch)
{
case′a′:printf(″*\n″);
case′b′:printf(″**\n″);
case′c′:printf(″***\n″);
}
ch=′b′;
switch(ch)
{
case ′b′:printf(″**\n″);
case ′a′:printf(″*\n″);break;
case ′c′:printf(″***\n″);






