c/c++零基础坐牢第二天

2023-05-25,,

c/c++从入门到入土(2)

开始时间2023-04-13 23:02:34

结束时间2023-04-14 01:26:05

前言:如果第一天没把你劝退,恭喜你!通过今天的学习你就能半步踏进编程的大门了!今天让我们来学习一下基本数据类型和运算符的相关知识。以下是自制思维导图参考于苏小红C语言程序设计(第四版):

作业2 数据类型及运算

【C0033】下面四个选项中,均是不合法的用户标识符的选项的是_______。
A.A p_o do B.float lao _A C.b-a goto int D._123 temp INT

答案:C

体会:变量名命名规则:(1)标识符只能由英文字母、数字和下划线组成,建议使用见名知意的名字为变量命名,可以使用英文单词大小混写或中间加下划线的方式,而不要使用汉语拼音;

(2)标识符必须以字母或下划线开头;

(3)不允许使用C关键字为标识符命名;

(4)标识符可以包含任意多个字符,但一般会有最大长度限制,与编译器相关,不过大多数情况不会达到此限制。

【C0034】以下选项中可以作为C语言中合法整数的是_______。
A.10110B B.0386 C.0Xffa D.x2a2

答案:C

体会:最常用整数表达形式为十进制、二进制、八进制和十六进制。

十进制,以10为基的数值系统,由0~9的数字序列组成,数字前可带正负号;

二进制,以2为基的数值系统,由0/1数字序列组成;

八进制,以8为基的数值系统,八进制整数由数字0开头后跟0~7(可用三位二进制表示)的数字序列组成;

十六进制,以16为基的数值系统,十六进制整数由数字0加字母x(或X)开头,后跟0~9,a~f或A~F(可用四位二进制表示)的数字序列组成。

【C0035】以下选项中合法的实型常数是_______。
A.5E2.0 B.E-3 C.2E0 D.1.3E

答案:C

体会:十进制小数形式与惯用形式相同;指数形式以e或者E来表示以10为底的指数,其中e的左边是数值部分(有效数字),可以表示成整数或者小数形式,它不能省略,e的右边是指数部分,必须是整数形式;单精度实型常量由常量值后跟F或f来表示;实型常量隐含按双精度型处理;长双精度型常量由常量值后跟L或l来表示。

【C0036】以下选项中可作为C语言合法常量的是_______。
A.-80 B.-080 C.-8e1.0 D.-80.0e

答案:A

体会:有符号整型常量,默认的int型定义为有符号整数,因此对int型无需使用signed;无符号常量,由常量追后跟U或u来表示,不能表示成小于零的数,如-30u是不合法的;长整型常量,由后跟L或l来表示;

无符号长整型常量,由常量值后跟LU、Lu、lU、或lu来表示。

【C0037】下面四个选项中,均是合法转义字符的选项是_______。
A.'\' ' \\' '\n' B.'\'' '\017' '\t' C.'\018' ' \f' '\xab' D.'\\0' '\101' 'x1f'

答案:B

体会:

合法的转义字符如下:

1、八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'

\0:空字符

2、Unicode转义字符:\u + 四个十六进制数字;0~65535

\u0000:空字符

3、特殊字符:就3个

\":双引号

\':单引号

\\:反斜线

4.控制字符:5个

\' 单引号字符

\\ 反斜杠字符

\r 回车

\n 换行

\f 走纸换页

\t 横向跳格

\b 退格

【C0038】下面不正确的字符串常量是_______。
A.'abc' B."12’12" C."0" D." "

答案:A

体会:用双引号(“”)括起来的0个或者多个字符组成的序列

【C0039】以下选项中不属于C语言的类型的是_______。
A.signed short int B.unsigned long int C.unsigned int D.long short

答案:D

体会:c语言类型——基本整型(int)、长整型(long)、长长整型(long long)、短整型(short)、无符号整型(unsigned)、单精度实型(float)、双精度实型(double)、长双精度实型(long double)、字符型(char)、枚举类型(enum)、结构体(struct)、共用体(union)、无类型(void)。

【C0040】在C语言中,要求运算数必须是整型的运算符是_______。
A./ B.++ C.!= D.%

答案:D

体会:要求运算必须是整数的运算是求余运算。

【C0041】以下运算符中优先级最低的是_______。
A.&& B.<= C.|| D.==

答案:C

体会:查优先级表

【C0042】以下运算符中优先级最高的是_______。
A.&& B.<= C.|| D.==

答案:B

体会:同上

【C0043】若x = 2 , y=3,则x && y的结果是_______。
A.0 B.1 C.2 D.3

答案:B

体会:&&运算为“条件与”:x和y均为true,取值是true,否则取值是false。也就是说a&&b,如果a,b都不为零,则为真;如果a,b中至少有一个为零,结果才为假。

【C0044】若x,i,j和k都是int型变量,则计算表达式x = ( i = 4 , j = 16 , k = 32 )后,x的值为_______。
A.4 B.16 C.32 D.52

答案:C

体会:x=(i=4,j=16,k=32)中的i=4,j=16,k=32构成一个逗号表达式,整个表达式的值取最后一项的值,即32

【C0045】若有定义:int a = 7 ; float x = 2.5 , y = 4.7 ; ,则表达式x + a % 3 * ( int )( x + y ) % 2 / 4的值是_______。
A.2.500000 B.2.750000 C.3.500000 D.0.000000

答案:A

体会:根据运算符结合性和优先级计算

【C0046】若有以下类型说明语句:char w ; int x ; float y ; double z ; ,则表达式w * x + z - y的结果为_______类型。
A.float B.char C.int D.double

答案:D

体会:c编译器在对操作数进行运算之前将所有操作数都转换成取值范围较大的操作数类型,称为类型提升。

【C0047】已有定义:int x = 3 , y = 4 , z = 5 ; 则表达式!( x + y ) + z – 1 && y + z / 2的值是_______。
A.6 B.0 C.2 D.1

答案:D

体会:根据运算符结合性和优先级计算

【C0048】以下选项中非法的表达式是_______。
A.0 <= x < 100 B.i = j == 0 C.( char )( 65 + 3 ) D.x + 1 = x + 1

答案:D

体会:表达式具有左值属性

【C0049】设a、b、c、d、m、n均为int型变量,且a = 5、b = 6、c = 7、d = 8、m = 2、n = 2,则逻辑表达式( m = a > b ) && ( n = c > d)运算后,n的值为_______。
A.0 B.1 C.2 D.3

答案:C

【C0050】若变量c为char类型,能正确判断出c为小写字母的表达式是_______。
A.'a' <= c <= 'z' B.( c >= 'a' ) || ( c <= 'z' ) C.( 'a' <= c ) and ( 'z' >= c ) D.( c >= 'a' ) && ( c <= 'z' )

答案:D

体会:A表达式错误B范围过大C呃离谱D正确

【C0051】若x和y代表整型数,以下表达式中不能正确表示数学关系|x―y|<10的是_______。
A.abs( x – y ) < 10 B.x – y > -10 && x – y < 10 C.!( x – y ) < -10 || !( y – x ) > 10 D.( x – y ) * ( x – y ) < 100

答案:C

体会:这是接近算法的一个问题,abs为绝对值数学函数,B是定义,D是初中知识,C“||”左边的式子如为真,将不再判断其后的表达式的值

【C0052】C语言中的标识符只能由三种字符组成,它们是数字、字母和下划线。(请按照ASCII码递增顺序填写)
【C0053】在C语言中(以32位PC机为例),一个char型数据在内存中所占的字节数为1,一个int型数据在内存中所占的字节数为4,一个float型数据在内存中所占的字节数为4,一个double型数据在内存中所占的字节数为8。
【C0054】有以下定义int m = 5,y = 2;则计算表达式y += y -= m *= y后的y值是-16。
【C0055】若定义:int a = 2,b = 3;float x = 3.5,y = 2.5;则表达式( float )(a + b ) / 2 + ( int ) x % ( int ) y的值是3.5。
【C0056】x和n均为int型变量,且x的初值为12,n的初值为5,则计算表达式x %= ( n %= 2 )后x的值为0。
【C0057】设所有变量均为整型,则表达式( a = 2 , b = 5 , a++ , b++ , a + b )的值为9。
【C0058】a、b和c均是int型变量,则计算表达式a = ( b = 4 ) + ( c = 2 )后,a值为6,b值为4,c值为2。
【C0059】a是int型变量,且a的初值为6,则计算表达式a += a -= a * a后a的值为-60。
【C0060】设y是int型变量,请写出判断y为奇数的关系表达式y%2==1。
【C0061】若a,b,c均为整型变量,则执行以下语句a = b = c = 0 ; a++ && ++b || c++ ; 后,a的值为1,b的值为0,c的值为1。
【C0062】下面程序的运行结果是b。
#include<stdio.h>
int main( ){
char m ;
m = 'B' + 32 ;
printf( "%c\n" , m ) ;
return 0 ;
}

分析:最后输出m的字符形式,已知ascll中‘B’为66加32为98为‘b’,很明显知道大写字母和小写字母之间的差距为32.

【C0063】下面程序的运行结果是 0。
#include<stdio.h>
int main( ){
int x = 3 , y = 5 ;
printf( "%d\n" , x / y ) ;
return 0 ;
}

分析:最后输出x/y的基本整型形式,3/5除不尽,为0.

【C0064】下面程序的运行结果是0。
#include<stdio.h>
int main( ){
int m = 0xabc , n = 0xabc ;
m -= n ;
printf( "%x\n" , m ) ;
return 0 ;
}

分析:最后输出m的十六进制输出整数,首先m=0xabc是2748,n也是这个数,m-=n的意思是m的值是m-n,既然m=n不用想就是0

【C0065】下面程序的运行结果是10,2。
#include<stdio.h>
int main( ){
int x = 10 , y = 3 ;
printf( "%d,%d\n" , x++ , --y ) ;
return 0 ;
}

分析:最后有两个输出一个是x的基本整型,一个y-1的基本整型,很明显是10,2(其中输出格式%d,%d表示两数之间以逗号分隔)

【C0066】下面程序的运行结果是3,20,30,1。
#include<stdio.h>
int main( ){
int a = 2 , b=20 , c=30 , d ;
d = ++a <= 10 || b-- >= 20 || c++ ;
printf( "%d,%d,%d,%d\n" , a , b , c , d ) ;
return 0 ;
}

分析:最后有四个输出分别为abcd的基本整型,重点在 d=++a<=10||b-->=20||c++; 这句,里边是||运算符,从开始往后计算,碰到一个为真的表达式,后边的表达式就不计算了。
++a <=10 先++,再去比较,为真
所以后边b-- >= 20和c++没有运算。所以a经过++a运算变为3,b和c不变,d为真值1

总结:真正学明白数据类型和基本算术运算,你已有能力进行简单的编程,你的程序已经有可以帮小学生检查作业的水平!

c/c++零基础坐牢第二天的相关教程结束。

《c/c++零基础坐牢第二天.doc》

下载本文的Word格式文档,以方便收藏与打印。