C语言总复习一卷
一、选择题
1、一个C语言程序是由( )组成的。
A、一个主程序和若干子程序
B、函数
C、若干过程
D、若干子程序
2、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)的值为( )
A、4
B、16
C、32
D、52
3、若已定义int a[]={0,1,2,3,,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,对a数组元素不正确引用的是( )
A、a[p-a]
B、*(&a[i])
C、p[i]
D、a[10]
4、下面四个选项中,均是C语言关键字的选项是( )
A、auto num include
B、s witch typedef continue
C、signed union scanf
D、if struct type
5、下面四个选项中,均是不正确的八进制数或十六进制数的选项是( )
A、0160x8f
B、oabc017
C、010 -0x11
D、0a12 7ff
6、以下程序运行的结果是( )
#include "stdio.h"
main()
{ int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d",a,b);
}
A、6,1
B、2、1
C、6,0
D、2、0
7、构成C语言程序的基本单位是( )
A、过程
B、函数
C、语言
D、命令
8、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else是与( )配对。
A、缩排位置相同的if
B、其之前最近的if
C、之后最近的if
D、同一行上的if
9、下面能正确进行字符串赋值操作的是( )
A、char s[5]={“ABCDE”};
B、char s[5]={‘A’,’B’,’C’,’D’,’E’};
C、char *s;s=“ABCDE”;
D、char *s;char a; scanf(“%s”&s);
10、在16位IBM-PC机上使用C语言,若有如下定义
struct data
{ int i;
char ch;
double f;
}b;
则结构体变量b占用内存字节数是( )
A、1
B、2
C、7
D、11
11、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句
c2=’A’+’6’-‘3’;后,c2的值为( )
A、D
B、68
C、不确定值
D、C
12、在C语言中,char型数据在内存中的存储形式是( )
A、补码
B、反码
C、原码
D、ASCII码
13、若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数,表达式的值为“假”,则以下不能满足要求的表达式( )
A、A%2==1
B、!(A%2==0)
C、!(A%2)
14、以下程序运行结果是( )
main()
{int m=6;
if(m++>6) printf("%d\n",m);
else printf("%d\n",--m);
}
A、4
B、5
C、7
D、6
15、设有如下定义:
int (*ptr)(); 则以下描述中正确的是( )
A、ptr是指向一维数组的指针变量
B、ptr是指向int型数据的指针变量
C、ptr是指向函数的指针变量,该函数返回一个int型数据
D、ptr是一个函数名,该函数的返回值是指向int型数据的指针
16、已定义:int i,*pi=&i ;以下表达式不正确的是( )
A、&*pi
B、*&pi
C、&*i D*&i
17、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )
A、float型
B、int型
C、long型
D、double型
18、对两个数组a和b进行如下初始化
char a[ ]=”ABCDEF”;
char b[ ]= {‘A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是( )
A、a与b数组完全相同
B、a与b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
19、对下面的程序段
for (t=1;t<=100;t++)
{ sacnf (“%d”,&x) ;
if (x<0) continue;
printf (“%3d”,t);
}
下面叙述正确的是( )
A、当x<0是整个循环结束
B、x>=0是什么也不输出
C、printf函数永远都不执行
D、最多允许输出100个非负整数
20、判断char型变量ch是否为大写字母的正确表达是( )
A、’A’<= ch <=’Z’
B、(ch>=’A’)& (ch <=’Z’)
C、(ch>=’A’)&& (ch <=’Z’)
D、(‘A’<=ch)AND (‘Z’>=ch)
21、一下描述中正确的是( )
A、由于do-while循环中循环体语句只能是一条可执行语句,故循环体内不能使用复合语句
B、在while循环体中,循环体至少要执行一次
C、在do-while循环体中,循环体至少无条件的执行一次
D、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
22、若i为整数变量,则以下循环执行次数是( )
for (i=2;i!=0 )
printf (“%d”,i--);
A、无限次
B、0次
C、1次
D、2次
23、若有说明:int a[3][4]; 则对a数组元素的正确引用是( )
A、a[2][4]
B、a[1,3]
C、a[1+1][0]
D、a(2)(3)
24、以下程序的输出结果是( )
#include <stdio.h>
{
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i;
for (i=0;i<4;i++)
p[i]=&a[i*3];
printf(“%d\n”,p[3][2]);
}
A、输出项不合格
B、6
C、8
D、12
25、下面函数调用语句含有实参的个数为( )
y= func (a,b,max(d,e))
【答案】
A、5printf函数输出整数时不能使用
B、2
C、3
D、4
1-5 B C D B D 6-10 B B B C D 11-15 A D C D C 16-20 C B D D C
21-25 C D C D C
二、填空题
1、结构化设计的三种基本结构是________,________,________
答:顺序结构,选择结构,循环结构
2、设int x=9,y=8;表达式x==y+1的结果是________
答:1
3、宏定义必须卸载函数之外,其作用域为从宏定义命令起到源程序结构,如要终止起作用域,可使用________命令。答:#undef
4、定义int x,y; 执行y=(x=1,++x,x+2) 后,y的值为________ 答:4
5、已知int x=10,y=20,z=30;
if (x>y) z=x;x=y;y=z;执行后x,y,z的值是________ 答:20,30,30
6、#define ADD(x) x+x
main( )
{ int m=1,n=2,k=3;
int sum=ADD(m+n)*k;
printf (“sum=%d”,sum);
}上面程序的运行结果是________ 答:sum=10
三、判断题
1、在C语言中,除了main函数外,任何函数都可以递归调用( T )
2、语句scanf(“%5.2f”,&a);是非法的。( T )
3、C语言中的变量按作用域非为两种,即局部变量和全局变量( T )
4、运算符的优先级顺序依次为(由高到低):!(非)、关系运算符、算术运算符、&&和||、赋值运算符( F )
5、break,return 所起的作用是一样的,都是跳出循环。( F )
6、二维数组a[3][4]可分解为三个一维数组,其数组名分别为:a[0]、a[1]、a[2],这三个一维数组都有4个元素。( T )
7、在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。( T )
8、包含命令中的文件名可以用双引号括起来,也可以用括号括起来,如:#include “stdio.h”,#include (math.h).。( F )
9、函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。( T )
10、C程序中有调用关系的所有函数必须放在同一个源程序文件中。( F )
四、阅读程序题
写出下列程序运行的结果
1、【程序】
#include <stdio.h>
fun (int x, int y, int *cp, int *dp)
{
*cp=x+y;
*dp=x-y;
}
main ( )
{
int a,b,c,d;
a=30; b=50;
fun (a, b, &c, &d)
printf (“%d,%d\n”,c,d);
return 0;
} 【运行结果】:80,-20
2、【程序】
main ( )
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,13};
int (*ptr)[4];
int sum=0,i,j;
ptr=a;
for (i=0;i<3;i++)
for( j=0;j<2;j++)
sum+=*(*(ptr+i)+j);
printf (“%d\n”,sun);
} 【运行结果】:60
3、【程序】
#include <stdio.h>
main ( )
{ int i,x,y;
i=x=y=0;
do {++i;
if (i%2!=0 ) {x=x+i;i++;}
y=y+i++;
}while (i<=7);
printf ( “x=%d,y=%d\n”,x,y);
} 【运行结果】:x=1,y=20
4、【程序】
main ( )
{ char ch[2][5]={“6937”,”8254”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>’\0’;j+=2)
s=10*s+p[i][j]-‘0’;
printf (“%d\n”,s);
} 【运行结果】:6358
5、【程序】
#include <stdio.h>
main ( )
{ char c;
while((c=getchar())!=’?’) putchar(++c)
} 当运行程序时,从键盘输入right?<CR> (<CR>代表回车),则【运行结果】:sjhiu
五、程序填空题
1、求s=a+aa+aaa+aaaa+aa……a的值,其中a是一个数字,例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
#include <stdio.h>
main ( )
{ int a,n,count=1;
long int sn=0,tn=0;
printf (“please input a and n \n”);
scanf(“%d,%d”,&a,&n);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论