资源描述
. .
一、单项选择题〔本大题共20题,每题2 分,共40分〕
1、以下不是C语言的特点的是( )
A、C语言简洁、紧凑
B、能够编制出功能复杂的程序
C、C语言可以直接对硬件进展操作
D、C语言移植性好
2、以下不正确的C语言标识符是( )
A、ABC B、abc C、a_bc D、ab.c
3、一个C语言程序是由( )
A、一个主程序和假设干子程序组成 B、函数组成 C、假设干过程组成 D、假设干子程序组成
4、一个算法应该具有“确定性〞等5个特性,对另外4个特性的描述中错误的选项是( )
A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性
5、设变量a是整型,f是实型,i是双精度型,那么表达式10+‘a’+i*f值的数据类型 为 ( )
A、int B、float C、double D、不确定
6、在C语言中,char型数据在内存中的存储形式是( )
A、补码 B、反码 C、源码 D、ASCII码
7、有如下程序,输入数据:12345M678<cR>后〔<CR>表示回车〕,x的值是( ) 。
#include<stdio.h>
main(){
int x;
float y;
scanf("%3d%f",&x,&y);
}
A、12345 B、123 C、45 D、345
8、假设有以下定义int a,b; float x,那么不正确的赋值语句是( )
A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x);
9、以下程序的执行结果是( )
#include<stdio.h>
{
int i=10,j=10;
printf("%d,%d\n",++i,j--);
}
A、11,10 B、9,10 C、11,9 D、10,9
10、巳知字母A的ASCII码是65,以下程序的执行结果是 ( )
#include<stdio.h>
main()
{
char c1='A',c2='Y';
printf("%d,%d\n",c1,c2);
A、A,Y B、65,65 C、65,90 D、65,89
11、以下运算符中优先级最高的是( )
A、< B、十 C、% D、!=
12、设x、y和z是int型变量,且x=3,y=4,z=5,那么下面表达式中值为0是( ) 。
A、’x’&&’y’ B、 x<=y C、 x||y+z&&y-z D、!((x<y)&&!z ||1)
13、判断char型变量cl是否为小写字母的正确表达式为( )
A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z)
C、 (‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’)
14、字符串"a"在内存中占据的字节个数为( )
A、0 B、1 C、2 D、3
15、下面有关for循环的正确描述是( )
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判定表达式
C、 在for循环中,不能用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来
16、下面程序的运行结果是( )
#include<stdio.h>
main()
{int num=0;
while(num<=2)
{num++;
printf(“%d ,num);
}
}
A、 1 B、1 2 C、1 2 3 D、1 2 3 4
17、以下描述正确的选项是( )
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、 do-while循环由do开场,用while完毕,在while〔表达式〕后面不能写分号。
C、在do-while循环体中,一定要有能使while后面表达式的值变成零〔“假〞〕的操作。
D、do-while循环中,根据情况可以省略while。
18、以下对一维整形数组a的正确说明是 ( )
A、int a(10); B、int n=10,a[n]; C、int n; D、int a[10]; scanf(“%d〞,&n);
int a[n];
19、以下对二维数组a的正确说明是 ( )
A、inta[3][]; B、float a(3,4); C、double a[1][4]; D、float a(3)(4);
20、假设二维数组a有m列,那么在a[j]前面的元素个数为 ( )
A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1
二、填空题〔本大题共10空,每空2分,共20分〕
1、构造化设计中的三种根本构造是___________________
2、在C语言中的实型变量分为两种类型,它们是__ _____ 和________
3、当a=5,b=4,c=2时,表达式a>b!= c的值是_______
4、以下程序运行后的输出结果是_____________
#include<stdio.h>
main()
{
int i,j;
for(i=4;i>=1;i--)
{printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}
5、假设有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};那么初始化后,a[1][2]得到的初值是___________ a[2][1]得到的初值是________________
6、在C语言中,二维数组元素的内存中的存放顺序是______________
三、程序分析题〔本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果〕
1、#include<stdio.h>
main()
{int a,s,n,count;
a=2;s=0;n=1;count=1;
while(count<=7) {n=n*a; s=s+n; ++count;}
printf(“s=%d〞,s);
}
2、#include<stdio.h>
main()
{int a=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if (i==j) sum=sum+a[j];
printf(“sum=%d\n〞,sum);
}
四、编程题〔本大题共4题,每题8分,共32分〕
1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏
幕就显示对应的华氏温度,输出取两位小数。转换公式:F=〔C+32〕×9/5 。
2、试编程判断输入的正整数是否既是5又是7的正倍数。假设是,那么输出yes;否那么输出no。
3、判断数m是否为素数〔只能被1和它本身整除的整数〕?
4、对15个数进展排序,按从小到大的顺序输出。
?C语言程序设计?期末考试试卷〔A卷〕评分标准及标准答案
一、单项选择题〔本大题共20题,每题2 分,共40分〕
1、B 2、 D 3、B 4、B 5、C 6、D 7、B 8、 B 9、 A 10、D
11、C 12、D 13、D 14、C 15、D 16、C 17、C 18、D 19、C 20B
二、填空题〔本大题共10空,每空2分,共20分〕
1、顺序构造 分支构造 循环构造
2、单精度型(或:float型) 双精度型(或;double型]
3、1
4、 *
* *
* * *
* * * *
5、0 6
6、按行主顺序存放
三、程序分析题〔本大题共2题,每题4分,共8分〕能正确表达出题目的含义、要求,即可得分,局部正确可按比例得分,否那么不得分。
1、功能:求S=0+2+4+8+16+32+64+128 和。输出结果:s=254
2、功能:出矩形阵a的主对角线上的元素之和。输出结果:27
四、编程题〔本大题共4题,每题8分,共32分〕
能正确表达出题目的含义、要求,且格式正确,即可得总分值,不要求形式完全
一样。局部正确可按比例得分,否那么不得分。
1、#include<stdio.h>
main()
{ float c,f;
printf("input c:"); …………………………………………….2分
scanf("%f",&c); …………………………………………….2分
f= (c+32.0)*9.0/5.0; …………………………………………….2分
printf("F=%.2f \n",f); …………………………………………….2分
}
2、#include<stdio.h>
main()
{int x;
scanf("%d",&x); …………………………………………….2分
if(x%5==0&&x%7==0) …………………………………………….2分
printf("yes");…………………………………………….2分
else
printf("no");…………………………………………….2分
}
3、# include<stdio.h>
# include<math.h>
main()
{int m,i,k;
scanf("%d\n",&m);
k=sqrt(m); …………………………………………….2分
for(i=2;i<=k;i++)…………………………………………….2分
{if(m%i==0)
break; …………………………………………….2分
}
if(i>k) printf("m is a prime number!\n");…………………………………………….2分
}
4、# include<stdio.h>
main()
{int i,j,a[15],t;
printf("input 15 numbers:\n");
for(i=0;i<15;i++)
scanf("%d",&a); …………………………………………….2分
for(j=0;j<15;j++)…………………………………………….2分
for(i=0;i<15-j;i++)…………………………………………….2分
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;} …………………………………………….2分
for(i=0;i<15;i++)
printf("%6d",a)
一. 选择题
1.以下关于运算符优先顺序的描述中正确的选项是〔 C 〕。
A.关系运算符< 算术运算符< 赋值运算符< 逻辑与运算符
B.逻辑 运算符< 关系运算符< 算术运算符< 赋值运算符
C.赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符
D.算术运算符< 关系运算符< 赋值运算符< 逻辑与运算符
2.以下选项中合法的变量名是______C___
A. #define B. int C. a594_3 D. abs(x)
3.以下正确的描述是〔 A 〕。
A. break语句的作用是完毕整个循环的执行
B.在C程序中,注释说明只能位于一条语句的后面
C. 在循环体内使用break语句或continue语句的作用一样
D. 从多层循环嵌套中退出时, 只能使用goto语句
4.以下说法正确的选项是〔C 〕
A.#define 和 printf 都是 C 语句。
B.#define 是C语句,而printf不是。
C.假设程序中要调用数学函数,必须在文件开头输入语句 #include “math.h〞
D. #define 和 printf 都不是 C 语句。
5.下面的函数定义正确的选项是____D__________
A〕 float fun (float x ; float y) {return x*y;}
B〕 float fun (float x,y) {return x*y;}
C〕 float fun (x,y) {int x,y;return x*y;}
D〕 int fun (int x, int y) {return x*y;}
6.执行下面语句后的输出为( D )
int i=-1;
if (i<=0) printf(“****\n〞)
else printf(“%%%%\n〞)
A). **** B). %%%%
C). %%%%c D). 有语法错误,不能正确执行
7.以下程序的输出结果是( A )
void main( )
{int k=17;
printf("%d, %o, %x \n ", k, k, k );
}
A). 17, 21, 11 B). 17, 17, 17
C). 17, 0x11, 021 D). 17, 21, 1
8.以下不正确的表达是 〔 C 〕
A〕#define是宏定义命令
B〕宏定义只是做简单的置换,不做正确性检查
C〕宏定义是C语句,必须在行末加分号
D〕printf是C语句,但#define不是。
9.一个C语言程序是由〔 D 〕
A) 一个主程序和假设干子程序组成 B)假设干子程序组成
C) 假设干过程组成 D) 函数组成
10.C语言规定,在一个源程序中,main()函数的位置〔 C 〕。
A.必须在最开场 B.必须在最后
C.可以任意 D.必须在系统调用的库函数的后面
11.以下对二维数组a的正确说明是〔 C 〕。
A) int a[3][]; B) floatf a(3,4);
C) char a[1][3]; D) float a(3)(5);
12.假设有说明: int a[3][2]={10};那么下面正确的表达是〔 A 〕
A〕只有元素a[0][0]可得到初值10
B〕此说明语句不正确:。
C〕数组a中各元素都可得到初值,但其值不一定为0。
D〕数组a中每个元素均可得到初值10
13.以下表达不正确的选项是〔 C 〕。
A) 一个C源程序可由一个或多个函数组成
B) 一个C源程序必须包含一个main函数
C) C程序的根本组成单位是语句
D) 只能在循环体内和switch语句体内使用break语句
14.为了防止在嵌套的条件语句If一else中产生二义性,C语言规定else子句总是与〔 B 〕配对。
A) 缩排位置一样的if B) 其之前最近的未配对的if
C) 之后最近的if D) 同一行上的if
15. 能正确表示a和b同时为正或同时为负的逻辑表达式是( B)
A)(a>=0||b>=0)&&(a<0||b<0)
B)(a>=0&&b>=0)||(a<0&&b<0)
C)(a+b>0)&&(a+b<=0)
D) (a-b>0)&&(a-b<=0)
16.x =5,ch='A',y=0,那么表达式(x > = y && ch<'a'&&!y) 的值是 〔 C 〕
A) 0 B) 语法错C) 1 D) "假"
17. 以下关于单目运算符++、--的表达中正确的选项是〔 D 〕
A) 它们的运算对象可以是任何变量和常量
B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D) 它们的运算对象可以是char型变量、int型变量和float型变量
18.下面的程序( B )
void main()
{ int x=3;
do {
printf(“%d\n〞,x-=2);
} while(!(--x));
}
A). 输出的是1 B). 输出的是1和-2
C). 输出的是3和0 D). 是死循环
19.如下程序:
void main( )
{ int a=6; printf(“%d\n〞,(a+=3,2*a)); }
执行后,输出结果是( D )
A) 9 B) 6 C) 2 D) 18
20.假设有以下说明和语句,请选出哪个是对C数组元素的正确引用( D )
int c[4][5], (*cp)[5]; cp=c;
A). cp+1 B). *(cp+3) C). *(cp+1)+3 D). *(*cp+2)
21.下面程序的输出是(B )
main()
{ int x=023;
printf("%d\n", --x); }
A). 17 B). 18 C). 23 D). 24
22.执行以下程序的结果是( B )
main()
{ float x=1,y; y=++x*++x; printf(“%f\n〞,y); }
A). 9.000000 B). 6.000000
C). 1.000000 D). 程序有错误
23.下面程序的输出是( A)
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;
printf("%d\n", *(p+2) ); }
A). 3 B). 4 C). 1 D). 2
24.执行下面程序中的输出语句后,a的值是(B )
main()
{ int a;
printf("%d\n", (a=3*5,a*4,a+5) ); }
A). 65 B). 20 C). 15 D). 10
25.下面程序的输出是( C )
main()
{ int a=-1, b=4, k;
k=(a++<=0)&&(!(b--<=0));
printf("%d %d %d \n", k, a, b ); }
A). 0 0 3 B). 0 1 2 C). 1 0 3 D). 1 1 2
26.设有如下的程序段:
char str[]="Hello"; char *ptr; ptr=str;
执行完上面的程序段后,*(ptr+5)的值为(B )
A). '0' B). '\0' C). 不确定的值 D). '0'的地址
27.在宏定义# define PI 3.14159中,用宏名PI代替一个( C)
A).单精度数 B).双精度数C).常量 D).字符串
28.假设i是整型变量,pb是根本型为整型的指针变量,那么正确的赋值表达式是〔A 〕
A). pb=&i B). pb=i C). *pb=&i D). *pb=*i
29. 有以下程序段
int m=0,n=0; char c=’d’;
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
假设从键盘上输入:6D6<回车>,那么输出结果是〔C 〕
A) 0,d,6 B) 6,d,6 C) 6,D,6 D) 6,D,0
30.printf〔〕函数中用到格式符%-7s ,其中数字7表示输出的字符串占用7列。如果字符串长度小于7,那么输出按方式 〔 A 〕
A) 从左起输出该字串,右补空格
B) 按原字符长从左向右全部输出
C) 右对齐输出该字串,左补空格
D) 输出错误信息
31.以下能正确地定义整型变量a,b和c 并为其赋初值3的语句是〔 A 〕
A) int a=3,b=3, c= 3; B) int a,b, c= 3;
C) a= 3,b=3,c=3; D) a= b= c=3;
32. 以下程序的输出结果是( D )
void main( )
{int x=6,y=6,i;
for(i=2;x>4;y=++i)
printf("%d,%d ",x--,y);
}
A) 5,5 5,3 B) 6,6 2,3 C) 6,5 5,2 D) 6,6 5,3
33.以下程序的输出结果是( B )
void main( )
{int w=4;
int fun(int k);
fun(w);
printf("\n");
}
fun(int k)
{if(k>0) fun(k-1);
printf("%d ",k); }
A) 4 3 2 1 B) 0 1 2 3 4
C) 1 23 4 D) 4 3 2 1 0
34.下面程序的输出是( B)
main()
{ int x=023;
printf("%d\n", --x); }
A). 17 B). 18 C). 23 D). 24
35.以下程序的输出结果是(C )
main()
{ char ch[3][4]={ "123","456","78"},*p[3]; int i;
for(i=0;i<3;i++) p[i]=ch[i];
for(i=0;i<3;i++) printf("%s",p[i]);
}
A). 123456780 B). 123 456 780
C). 12345678 D). 147
36.下面程序的输出结果为( B )
char *alpha[6]={"ABCD","EFGH","IJKL",
"MNOP","QRST","UVWX"};
char **p;
void main( )
{int i; p=alpha;
for(i=0;i<4;i++)
printf("%c",(*p)[i]);
printf("\n");
}
A). EIMC B). ABCD C). EFGH D). AEIM
37.根据下面的定义,能打印出字母M的语句是(D )
struct person {char name[9]; int age;};
struct person class[10]={ "John",17, "Paul",19,
"Mary",18, "Adam",16 }
A). printf("%c\n",class[3].name);
B). printf("%c\n",class[3].name[1]);
C). printf("%c\n",class[2].name[1]);
D). printf("%c\n",class[2].name[0]);
38. 有以下程序
void main( )
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2) {k=k+p[i]; i++;}
printf("%d\n",k);
}
执行后输出结果是〔 D 〕
A) 58 B) 56 C) 45 D) 24
39. 以下程序的输出结果是( A )
void main( )
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p;
p=&x[1][1];
for(i=0;i<6;i+=3)
printf("%d ",p[i]);
}
A) 5 2 B) 5 1 C) 5 3 D) 9 7
40.以下程序的输出结果是(A )
# include <string.h>
void main( )
{ char *a=〞abcdefghi〞;
void fun( char *s );
fun(a);
puts(a);
}
void fun(char *s )
{ int x,y;
char c;
for(x=0,y=strlen(s)-1;x<y;x++,y--)
{ c=s[y];s[y]=s[x];s[x]=c; }
}
A). ihgfedcba B). abcdefghi
C). abcdedcba D).ihgfefghi
41.void main( )
{int i,a[]={5,6,9,11};
for (i=0;i<4;i++)
{ if (a[i]%2==0) continue;
printf("%d ",a[i]);
}
}
执行后输出结果是( C )
A) 编译出错 B 6 C) 5 9 11 D) 5 6 9 11
42.以下对数组的定义正确的选项是( D )
A〕 int x(10); B〕 int x[5]={0,1,2,3,4,5};
C〕 int n=10; x[n]; D〕 int x[ ]= {0,1,2,3,4};
43. 以下表达中不正确的选项是( B )
A〕switch是多分支构造语句
B) continue语句的作用是使程序的执行流程跳出包含它的所有循环
C) break 语句只能用在循环体内和switch语句体内
D〕 在循环体内使用break语句和continue语句的作用不一样
44.如下程序:
void main( )
{ int i=1,j=2,k=3;
if((j++|| k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是( D )
A) 1,2,3 B) 2,2,4 C) 2,3,4 D) 2,3,3
45.以下表达中,不正确的选项是( C )
A〕 算法应该具有有穷性、确定性以及有效性等特点
B) 算法可以用传统流程图、N-S流程图以及伪代码等形式来描述
C) 根本构造只有顺序、选择、循环3种构造
D〕 构造化程序设计的思想是自顶向下、逐步细化、模块化设计以及构造化编码
46.在C语言中,函数返回值的类型最终取决于( D )
A) 函数定义时形参的类型 B)return语句中表达式值的类型
C) 调用函数时主函数所传递的实参类型 D)函数定义时在函数首部所说明的函数类型
47. 以下程序的输出结果是( C )
void main()
{int i;
for(i='a';i<'i';i++,i++)
printf("%c",i-32);
printf("\n");
}
A) 编译不通过,无输出 B) aceg C) ACEG D) ABCDEFGI
48.假设有以下的说明:
struct person
{char name[20];
int age;
char sex;
}a={"li ning",20,'m'},*p=&a;
那么对字符串li ning的引用方式不可以是(B )
A). (*p).name B). p.name C). a.name D). p->name
49.下面的程序输出是( B)
int m=13;
int fun2(int x,int y)
{int m=3;
return(x*y-m);
}
main()
{int a=7,b=5;printf("%d\n",fun2(a,b)/m);}
A). 1 B). 2 C). 7 D). 10
50.下面的程序输出是( A)
main()
{ int x=100,a=10,b=20,ok1=5,ok2=0;
if(a<b)
if(b!=15)
if(!ok1)
x=1;
else
if(ok2) x=10;
x=-1;
printf("%d \n", x ); }
A). -1 B). 0 C). 1 D). 不确定的值
51.假设有以下定义:
int a[ ]={1,2,3,4,5,6,7,8,9,10}, *p=a;
那么值为3的表达式是〔 A 〕
A). p+=2,*(p++) B). p+=2,*++p
C). p+=3,*p++ D). p+=2, ++*p
52.下面程序的输出是( A )
int aa[3][3]={ {2},{4},{6} };
void main()
{int i, *p=&aa[0][0];
for(i=0;i<2;i++)
{ if(i==0)
aa[i][i+1]= *p+1;
else
++p;
printf("%d", *p ); }
}
A). 23 B). 26 C). 33 D). 36
53.下面程序的输出是( D )
void prtv(int *x)
{ printf("%d\n", ++*x ); }
void main()
{ int a=25; prtv(&a); }
A. 23 B. 24 C. 25 D. 26
54. 以下程序的运行结果是( B )
void main( )
{char a[10]={'1','2','3','4','5','6','7','8','9','\0'};
char *p;
int i=8;
p=a+i;
printf("%s\n",p-2);
}
A) 6 B) 789 C) '6' D) 678
55.执行以下3条语句之后,那么k的值是__C_____
int x=4,y=7 ; x++ ;y+=2 ;k=y%x;
A〕 1 B〕 2 C〕4 D〕3
56.以下程序段
for ( k = 0, m = 4; m ; m - = 2 )
for( n = 1; n< 4 ; n++) k++;
循环体语句〞 k ++;〞执行的次数是______C________
A〕16 B〕12 C〕 6 D〕 8
57.在C语言中(以16位PC机为例),5种根本数据类型的存储空间长度的排列顺序为〔 C 〕
A) char=int<1ong int<=float<double
B) char< int <1ong int=float=double
C) char<int <1ong int<=float<double
D) char=int =1ong int<=float<double
58.字母A的ASCII码为十进制数65,且c2为字符型,那么执行语句c2='d'十'1'一'3';后,c2中的值为〔 A 〕
A)b B) 68 C) 不确定的值 D) f
59.表达式18/4*sqrt(4.0)/8值的数据类型为: 〔 C 〕
A) int B)float C)double D)不确定
60.能正确表示"当x 的取值在[1,10]和[50,60]X围内为真,否那么为假"的表达式是〔 C 〕。
A) (x>=1) && (x<=10) &&(x> =50) && (x<=60)
B) (x>=1) || (x<=10) || (x>=50) || (x<=50)
C) (x>=1) && (x<=10) || (x>= 50) && (x<=60)
D) (x > =1)|| (x< =10) && (x> =50) || (x<=60)
61.以下程序的输出结果是( D )
# include <string.h>
main()
{ char *p1,*p2,str[50]="ABCDEFG";
p1="abcd"; p2="efgh";
strcpy(
展开阅读全文