05-2-C语言试卷A

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单选题(每空1分,共50分)
1. 以下选项中不属于算法特性的是( )
A)有穷性B) 确定性C)有效性D)简洁性
2. 在C语言中,变量所分配的内存空间大小( )
A)均为两个字节B)由用户自己定义
C)由变量的类型决定D)是随意的
3. 以下选项中可作为C语言合法常量的是( )
A) -8e3.0 B)-080 C) -80. D)-80.0e
4. 以下不能定义为用户标识符是( )
A)Main B)_0 C)_int D)printf
5. 数学关系式x≤y≤z可用C语言的表达式表示为( )
A)(x<=y)&&(y<=z)B)(x<=y)and(y<=z)
C)(x<=y<=z)D)(x<=y)&(y<=z)
6. 若定义float a;现要从键盘输入a数据,其整数位为3位,小数位为2位,则选用( )
A)scanf(“%6f”,&a);B)scanf(“%5.2f”,a);
C)scanf(“%6.2f”,&a);D)scanf(“%f”,a);
7. 执行int x=3,y=2;后表达式x=(y>=1)的值是( )
A)0 B)1
C)2 D)3
8. 在C语言中,合法的字符常量是( )
A)‘程序设计’B)“c”
C) c D)‘\\’
9. 设有说明语句:char a=’\101’;则变量a ( )
A) 包含1个字符B) 包含2个字符
C) 包含3个字符D) 说明不合法
10. 数字字符0的ASCII值为48,若有以下程序
main()
{
char a='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是( )
A) 3,2 B) 50,2 C)2,2 D)2,50
11. 已有定义:char a[]="she",b[]={'s','h','e'};,以下叙述中正确的是( )
A)数组a和b的长度相同B)a数组长度小于b数组长度
C)a数组长度大于b数组长度D)上述说法都不对
12. 下列关于链表的叙述不正确的是( )
A)每条链表都有一个头指针,用于指向链表中的第一个结点
B)链表的每一个结点中必须要有一个结构体类型的指针变量用来存放下一个结点的首地址
C)如果不提供头指针,则整条链表都无法访问
D)链表中的各个结点在内存中一定不是连续存放的
13. 若int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( )
A) 2 B) 3 C) 4 D)无确定值
14. 下面程序段的运行结果是( )
char s[]=“xyz”;int i;
for(i=0;i<3;i++) printf(“%s”,&s[i]);
A) xyz B) xyz xyz xyz C) xxy xyz D)xyz yz z
15. C语言中运算对象必须是整型的运算符是( )
A) %=B) / C) =D) <=
16. 有以下语句:int b;char c[10];,则正确的输入语句是( )
A)scanf("%d%s",&b,&c); B) scanf("%d%s",&b,c);
C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c);
17. 有以下程序
main()
{
int m,n;
scanf("m=%dn=%d ",&m,&n);
printf("%d%d \n",m,n);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,则正确的输入是( )
A)m=123n=456 B) m=123,n=456
C) m=123 n=456 D)123 456
18. 设x为int型变量,则执行以下语句后,x的值为( )
x=10; x+=x-=x-x;
A) 10 B) 20 C) 40 D) 30
19. 能将高级语言编写的源程序转换为目标程序的是( )
A)链接程序B)解释程序C)编译程序D)编辑程序
20. 一个算法应该具有"确定性"等5个特性,下面对另外4个特性的描述中错误的是( )
A)有零个或多个输入B)有零个或多个输出
C)有穷性D)可行性
21. 若以下选项中的变量已正确定义,则正确的赋值语句是( )
A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3;
22. 设有以下定义
int a=0;
double b=1.25;
char c=’A’;
int d[10];
则下面语句中错误的是( )
A)a++; B)b++;C)c++; D)d++;
23. 设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是( )
A)(a+b)*h/2 B)(1/2)*(a+b)*h
C)(a+b)*h*1/2 D)h/2*(a+b)
24. 以下4个选项中,不能看作一条语句的是( )
A){;} B)a=0,b=0,c=0;
C)for (;x= =0;); D)if(b= =0) m=1; n=2;
25. while(!e);中表达式!e 等价于( )
A) e==0 B)e!=0 C)e==1 D)e!=1
26. 有以下程序
main( )
{ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果是( )
A)2 B)3 C)4 D)5
27. 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )
A) char s[10]="abcdefg"; B) char t[]="abcdefg",*s=t;
C) char s[10];s="abcdefg"; D) char s[10];strcpy(s,"abcdefg");
28. 下面程序段的运行结果是( )。

int n=0;
while(n++<2); printf(“%d“,n);
A)2 B)3 C) 4 D)有语法错
29. C语言中while和do-while循环的主要区别是( )
A)do-while的循环体至少无条件执行一次
B)while 的循环控制条件比do-while的循环控制条件严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
30. 以下程序段( )
x=-1;
do
{x=x*x;}
while(!x);
A)是死循环B)循环执行二次
C)循环执行一次D)有语法错误
31. 下面有关for循环的正确描述是( )
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
32. 对for(表达式1;;表达式3)可理解为( )
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
33. 以下for循环的执行次数是( )
for(x=0,y=0;(y=10)&&(x<4);x++)
A)是无限循环B)循环次数不定
C)执行4次D)执行3次
34. 下面程序段的执行结果是( )
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
35. 下面程序段的运行结果是( )
for(x=3;x<6;x++) printf((x%2)?(“**%d”): (“##%d\n”),x);
A)**3 B) ##3 C)##3 D)**3##4
##4 **4 **4##5 **5
**5 ##5
36.执行语句for(i=1;i++<4;);后变量i的值是( )
A)3 B)4 C)5 D)不定
37. 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2
个零件;如果分成7个零件一组,则多3个零件;如果分成9个零件一组,则多5个零件。

下面程序是求这堆零件总数,请选择填空。

( )
#include<stdio.h>
main()
{
int i;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!((i-3)%7))
if( ③)
printf(“%d”,i);
}
A) i%9=5 B) i%9!=5 C) (i-5)%9!=0 D)i%9= =5
38. 以下正确的描述是( )
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
39. 下面程序段( )
for(t=1;t<=100;t++)
{
scanf(“%d”,&x);
if(x<0) continue;
printf(“%3d”,t);
}
A) 当x<0时整个循环结束B)x>=0时什么也不输出
C)printf函数永远也不执行D)最多允许输出100个非负整数
40. 以下描述正确的是( )
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D)do-while循环中,根据情况可以省略while
41. 以下正确的描述是( )
A)continue语句的作用是结束整个循环的执行
B)只能在循环体内和switch语句体内使用break语句
C)在循环体内使用break语句或continue语句的作用相同
D)从多层循环嵌套中退出时,只能使用goto语句
42. 以下描述正确的是( )
A)goto语句只能用于退出多层循环
B)switch语句中不能出现continue语句
C)只能用continue语句来终止本次循环
D)在循环中break语句不能独立出现
43. C语言的简单数据类型包括( )
A)整型、实型、逻辑型B)整型、实型、字符型、逻辑型C)整型、字符型、逻辑型D)整型、实型、字符型
44. 以下叙述中不正确的是( )
A) 对结构体变量的成员可以像普通变量一样进行各种运算
B) 结构体变量的地址指的是该结构体变量在内存空间的起始地址
C) 可以将一个结构体变量作为一个整体进行输入和输出
D) 可以直接定义某种结构体类型的变量,不出现结构体名
45. 以下叙述中正确的是( )
A) C程序是以函数为单位进行编译的
B)C程序是以源程序文件为单位进行编译的
C) C语言的函数不可以进行嵌套调用
D) C语言中的函数可以进行嵌套定义
46. 结构化程序设计不应该使用( )
A)自顶向下,逐步细化的方法
B)模块化设计C)灵活、简洁的goto结构
D)三种基本结构:顺序结构、选择结构、重复结构的编码方法
47. 若int a=13 ,则执行语句a/=a+a; 后a的值是( )
A) 13 B) 14 C)0 D) 0.5
48. 以下说法正确的是( )
A)一个函数的返回值的类型由调用该函数的主调函数的类型决定
B)C语言程序总是从main函数开始执行
C)C语言程序中main函数必须放在程序的开始部分
D)C语言程序总是从编写在最前面的函数开始执行。

49. 数组名作为函数的实参,传递的值是( )
A)该数组的首地址B)该数组的长度
C)该函数中各元素的值D)该数组的第一个元素的值
50. 若有程序段: int a[2][3]={{ 4,5,6},{1,2,3}}; int *p=&a[0][0]; 则下列哪个表达式的值是3( )
A) a B)*(a+2) C) *(p+2) D)(*(a+1))[2]
二、读下面的程序,写出运行结果(共24分)
1. 写出下面程序的运行结果(每个结果2分,共4分)。

main()
{
int a,b,d=25;
a=d/10%9; b=a&&(-1);
printf("a=%d \n",a);
printf("b=%d\n",b);
}
2. 下面程序执行后的输出结果是(每个结果2分,共4分)。

void sum(int *a)
{ a[1]=a[0];}
main( )
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) sum(&aa[i]);
printf("%d\n",aa[0]);
printf(“%d\n”,aa[2]);
}
3. 请写出程序执行后的输出结果(每个结果2分,共4分)。

main( )
{ int i,m=0,n=0;
for(i=2;i<5;i++)
{ do
{ if(i%3) continue;
m++;
} while(!i);
n++;
}
printf("m=%d\n",m);
printf("n=%d\n",n); }
4. 写出下面程序的运行结果(每个结果3分,共6分)。

int a=2;
int f(int *a)
{return (*a)++;}
main( )
{ int s=0;
{ int a=5;
s+=f(&a);
}
s+=f(&a);
printf ( "s=%d\n",s);
printf(" a=%d\n",a);
}
5. 若运行以下程序时,从键盘输入2473<回车>,写出程序的运行结果(6分)
#include<stdio.h>
main()
{
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;
}
printf(“\n“);
}
三、程序填空(每空2,共26分)
1. 以下程序功能是对数组的元素进行排序,按由小到大次序输出,请填空。

# include stdio.h
void sort(int a[],int n)
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if( ⑴) k=j;
t=a[k]; ⑵; a[i]=t; }
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort( ⑶,10);
for(i=0;i<10;i++) printf("%d",aa[i]);
printf("\n");
}
2. 以下程序功能是将一个3×3的矩阵转置,请填空。

#include<stdio.h>
void main( )
{ ⑷;
int a[3][3],*p1,i;
printf(“input matrix:\n”);
for(i=0;i<3;i++)
scanf(“%d %d %d”,&a[i][0], &a[i][1], &a[i][2]);
⑸;
move(p1);
printf(“now, matrix:\n”);
for(i=0;i<3;i++)
printf(“%d %d %d”,a[i][0], a[i][1], a[i][2]);
}
void move(int *p)
{ int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ t=*(p+3*i+j);
*(p+3*i+j)= ⑹;
*(p+3*j+i)=t;
}
}
3. 有5个学生,每个学生有3门课的成绩,从键盘输入数据(包括学生号、姓名、3门课的成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。

#include<stdio.h>
struct student
{ char num[10];
char name[8];
int score[3];
float ave;
}stu[5];
void main()
{ int i,j,sum;
FILE *fp;
for(i=0;i<5;i++)
{ printf(“\n input score %d\n”,i+1);
printf(“No. :”);
scanf(“%s”, stu[i].num);
printf(“name :”);
scanf(“%s”, ⑺);
sum=0;
for(j=0;j<3;j++)
{ printf(“score %d:”,j+1);
scanf(“%d”, ⑻);
sum+=stu[i].score[j];
}
stu[i].ave= ⑼;
}
/*将数据写入文件*/
fp=fopen(“stud”, “w”);
for(i=0;i<5;i++)
if( ⑽!=1)
printf(“file write error\n”);
fclose( ⑾);
}
4. 下面程序的功能是计算1至10之间的偶数之和及奇数之和,请填空。

#include <stdio.h>
main()
{
int a,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{
a+=i;
⑿;
c+=b;
}
printf(“偶数之和=%d\n”,a);
printf(“奇数之和=%d\n”, ⒀); }
答案
一、单选题
1、DCCDA 6、ABDAC 11、CDBDA 16、BABCB 21、CDBDA
26、ACBAC 31、DBCCD 36、CDBDC 41、BCDCB 46、CCBAD
二、读程序,写结果
1、a=2
b=1
2、 1
2
3、m=1
n=3
4、s=7
a=2
5、668977
三、程序填空
1、(1) a[j]<a[k]
(2) a[k]=a[i]
(3) aa
(4) void move(int *p)
(5) p1=&a[0][0]
(6) *(p+3*j+i)
(7) stu[i].name
(8) &stu[i].score[j]
(9) sum/3.0
(10) fwrite(&stu[i],sizeof(struct student),1,fp)
(11) fp
(12) b=i+1
(13) c-11。

相关文档
最新文档