● 字符常量:用单引号‘’括起来的一个字符。包括普通字符常量和转义字符。
普通字符常量:如‘a’、‘A’、‘1’。
转义字符:由一对单引号引起来的以\开头的若干字符的组合。如‘\n’表示回车换行、‘\\’表示反斜线符、‘\’’表示单引号符、‘\”’表示双引号、‘\ddd’表示八进制数、‘\xhh’表示十六进制数。
/:当除号左右两边都是整数的时候,商也要是整数,如果不是整数则舍弃小数部分。当参与运算量有一个为实型,则商为double型。
规则:把<<左边的运算数的各二进位全部左移若干位,高位丢弃,低位补0。左移一位相当于该数乘以2。左移n位相当于该数乘以2n。
● 右移运算>>
把>>左边的运算数的各二进位全部右移若干位。高位补0,低位丢弃。右移一位相当于该数除以2。右移n位相当于除以2n。
当定义的变量类型和scanf中“格式符”类型不一致时(这里只限定在字符型和整型两种类型,其他数据类型不可以。)整型和字符型之间通过ASCALL可以相互转化。
● getchar经常作为while循环条件,判断输入哪一个字符时,循环结束。例如,输入字符串,直到输入‘0’,程序结束,则可写成while( getchar()!='0')
● 内嵌结构中,else总是与前面最近的且未曾配对的if语句配对,组成一对if-else语句。
4.知识点:switch语句
● switch语句的圆括号中的表达式的值必须是整型或字符型,不能为实型。
● case后的表达式可以是求得整型和字符型的常量表达式,但不能含有变量。
● default的位置对程序的执行没有影响。
● 循环体部分可以只有一条空语句,不做任何操作。
3.知识点:一维数组的初始化
● 顺序列出数组元素的全部初值,例如int a[5]={1,2,3,4,5};
● 只给数组的前面一部分元素设定初值,未赋初值的元素自动取0值。例如,int a[5]={1,2};
● 对全部数组元素赋初值时,可以不指定数组元素的个数。例如,int a[]={1,2,3,4,5};
4.知识点:二维数组的初始化
● 按行分段给二维数组赋初值
● 按行连续赋值
● 对部分元素赋初值,未赋初值的元素自动取0值
● 若对全部元素赋初值,则第一维的长度可以不指定
● 字符数组名是地址常量,不能赋值给数组名。
例1:(2009-04-32)以下选项中正确的语句组是(D)
A)char s[];s=”BOOK!”; B)char *s;s={“BOOK!”};
C)char s[10];s=”BOOK!”; D)char *s;s=”BOOK!”;
【解析】字符数组名是地址常量,不能赋值给数组名,故A、C项错误,D项指针s是个变量,将字符串常量赋值给s,是正确的。B项中给s赋值时不能用花括号将字符串括起来。
8.设有说明:int x=0x03,y=3;表达式x&~y的值是(A. )
A.0 B.1 C.2 D.3
14. 下面各个位运算符的优先级从左到右依次升高的是(A. )
A. | ^ & >> B. ^ >> & ~ C. << | ^ ~ D. ~ | & >>
23.如果a=1,b=2,c=3,d=4,则表达式a>b?a:c<d?c:d的值是( C )
A.1 B.2 C.3 D.4
25.设有说明int x=0,y=0;
则执行if(x++)y=1+x;
else y=2+x;
后,变量y的值是( D )
A.0 B.1 C.2 D.3
26.以下程序段所表示的数学函数关系是( A. )
y=-1
if(x!=0) if(x>0) y=1;else y=0;
A. B.
C. D.
30.整数-2在机器内存中的表示是( B )
A.1000000000000010 B.111111*********0
C.111111*********01 D.switch语句表示范围111111*********1
33.以十进制无符号形式输出整数的格式说明符是( A. )
A.%u B.%x C.%o D.%d
35.下列位运算符中,表示按位异或操作的是( C )
A.~ B.│ C.^ D.&
42.在printf语句中,格式说明符u表示( C )
A.以十进制带符号形式输出整数
B.以十六进制带符号形式输出整数
C.以十进制无符号形式输出整数
D.以十六进制无符号形式输出整数
45.只能在循环语句中用于结束本轮循环的语句是( A. )注:是本轮循环 不是本次循环
A.break; B.continue; C.goto D.if
46.下列是合法C语言常量的是( D)
A. e B. 7E4.0 C. E4 D. -9.13E-30
58.设有说明:int u=1,v=3,w=2;表达式(v>>1|u<<2)&w的值是( A.)
A.0 B.1 C.3 D.5
60. 下面程序段的输出结果是( A. )
a=100;
while(a>120);
a=a+1;
printf(″%d″,a);
A. 100 B. 101 C. 120 D. 121
(注意while后的“;”)
73.两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是( A. )
void main(void)
{
int x;
scanf("%d",&x);
if(x + + >5)printf("%d",x);
else printf("%d\n",x——);
}
A.7和5 B.6和3 C.7和4 D.6和4
(注意++优先级高于>!)
75.若有定义int a[3][5];则数组a在内存中占用的字节数是( D )
A.8 B.15 C.16 D.30
90. 在C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是( B )
A. 由系统自动指定对应实参和形参是否共用存储单元
B. 对应实参和形参各占一个独立的存储单元
C. 对应实参和形参共用一个存储单元
D. 可以由用户指定对应实参和形参是否共用存储单元
91. 下面叙述中不正确的是( D )
A. 不同函数中可以使用相同名字的变量
B. 形式参数是局部变量
C. 在一个函数内部定义的变量只能在本函数范围内有效
D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效
99.下列程序的运行结果是( B )
#difine N 9
fun (char s[ ])
{
char*p=s+4,*q=s;
int i;
for(i=0;i<4;i+ +,p+ +,q + +)
{
s[i]=*p;
s[i+4]=*q
}
}
main( )
{
char ss[N]= ″ABCDEFGH″;
fun(ss)
printf(″%s\n″,ss);
}
A.EFGHABCD B.EFGHEFGH C.ABCDEFGH D.ABCDABCD
112.下面程序段的运行结果是( C )
chars *s="abcde";
s+=2 printf("%d",s);
A.cde B.字符′c′ C.字符′c′的地址 D.无确定的输出结果
120.设有说明:FILE *fp;char *filename=〃paper〃;
对于fp=fopen(filename,〃rb+〃);语句,下面说法正确的是(B )
A.打开名为filename的文件读写 B.打开名为paper的文件读写
C.打开名为filename的文件只读 D.打开名为paper的文件只读
121. 如果将文件指针fp指向文件末尾,正确的语句是( D )
A. feof(fp); B. rewind(fp); C. fseek(fp,0L,0); D. fseek(fp,0L,2);
122. 下面程序段中,不能完成的功能是( B )
FILE *fp;
char ch =′v′;
fp=fopen(″boy″, ″rb+″);
fputc(ch,fp);
A. 建立文件指针fp与文件boy的联系 B. 从boy文件中读取一个字符
C. 向boy文件中写一个字符 D. 打开名为boy的二进制文件
123.下面程序段中,不能完成的功能是( C )
FILE *fp;
char ch;
fp=fopen(″file1″, ″rb+″);
ch=fgetc(fp);
A.建立文件指针fp与文件file1的联系 B.从file1文件中读一个字符
C.向file1文件中写一个字符 D.打开名为file1的二进制文件
124.在格式:fread(stu,size,n,fp);中,下面说法不正确的是( B )
A.stu是内存中存放数据的首地址 B.n表示读n次
C.size是一个数据块的字节数 D.fp表示文件指针
125.由FILE*fp;fp=fopen(″a:\\″,″r+″);可以推知fopen 函数的原型是(B )
A.char *fopen(char,char); B.FILE*fopen(char*,char*);
C.int fopen (char*,char*); D.FILF fopen(char* ,char*);
126.如果文件存储的是数据在内存中存放的字节形式,则该文件是( C )
A.ASCII文件 B.文本文件 C.二进制文件 D.设备文件
127.设有说明:FILE*fp;对于fp=fopen(″c:\\abc.dat″, ″rb″);语句,下列说法中不正确的是(B )
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论