C语言易错提醒&&选择题精选

Ⅰ  易错题

1.设有double p;,为变量p声明一个引用名称rp,则定义语句为 double& rp=p;

2.已知‘A’一‘Z’的ASCII码为65—90,当执行“char ch=14*5+2;cout<<ch<<endl;”语句序列后得到的输出结H   ,72对应ASCII码中的字符’H’

3.变量分为全局和局部两种,____变量没有赋初值时,其值是不确定的. 局部变量没有赋初值时,其值是不确定的。

4. 如果要把PI声明为值为3.14159类型为双精度实数的符号常量,该声明语句是___。

可以使用C++中的const关键字来声明一个符号常量,其语法为:const 数据类型 常量名 = 常量值;

const double PI = 3.14159;

5. 现在有以下语句:    struct MyBitType     {  char a[3];        int b[3];        float c[2];       };//int占四个字节     int sz=sizeof(MyBitType); 则执行后,变量sz的值将得到(   )。 A、16  B、8      C、27    D、31

执行后,变量sz的值将得到B、8。 MyBitType中有三个char类型,占用3个字节;三个int类型,占用12个字节;两个float类型,占用8个字节。所以总共占用23个字节,但由于内存对齐的原因,需要将其舍入为8的倍数,所以sz的值为8。

6.结构体变量S实际所占内存的大小为(    )字节。 A、sizeof(S) B、strlen(S) C、结构体中最长成员的长度       D、结构体中最短成员的长度

答案是A、sizeof(S)。在C语言中,可以使用sizeof运算符来计算结构体变量所占的内存大小,其返回值单位为字节。而strlen函数是用来计算字符串长度的,不适用于计算结构体变量大小。结构体中最长成员的长度和最短成员的长度也不能代表整个结构体变量所占内存的大小。

7.在函数说明时,下列( )项是不必要的。 A、函数的类型 B、函数参数类型和名字 C、函数名字 D、返回值表达式

在函数说明时,不必要提供函数的类型,因为已经确定为函数类型。因此选项A不必要。

8.下列标识符中,( )不是局部变量。 A、register类 B、外部static类 C、auto类 D、函数形参

A、register类、C、auto类和D、函数形参都是局部变量,只存在于它们所在的函数或代码块中。

B、外部static类则是全局变量,但是其作用域被限定在定义该变量的文件内,不同于一般的全局变量。

9.C++中的组合符号是“::”,它被称为作用域解析符,用于指定命名空间、类、结构体、枚举、函数等的作用域。具体来说,使用“::”可以访问命名空间中的成员,类中的静态成员,类的成员函数和全局作用域中的函数。

例如,如果有一个名为MyNamespace的命名空间,其中包含一个名为MyFunction的函数和一个名为MyClass的类,我们可以使用“::”来访问它们的作用域:

MyNamespace::MyFunction(); // 访问命名空间中的函数
MyNamespace::MyClass::MyStaticMember; // 访问类中的静态成员
MyNamespace::MyClass myObject; // 创建类对象
myObject.MyMemberFunction(); // 调用对象的成员函数

Ⅱ    C语言基础选择题精选 

1、以下说法中正确的是(C)(2分)

A、C语言程序总是从第一个的函数开始执行

B、在C语言程序中,要调用的函数必须在main()函数中定义

C、C语言程序总是从main()函数开始执行

D、C语言程序中的main()函数必须放在程序的开始部分

 2、一个算法应该具有“确定性”等五个特性,下面对另外4个特性的描述中错误的是(B)(2分)

A、有零个或多个输入      

B、有零个或多个输出

C、有穷性

D、可行性

 3、以下选项中,不合法常量的是 (B)(2分)

A、1.234e04  B、1.234e0.4  

C、1.234e+4  D、1.234e0

 4、C语言中最简单的数据类型包括(B)(2分)

A、整型、实型、逻辑型    B、整型、实型、字符型

C、整型、字符型、逻辑型   D、整型、实型、逻辑型、字符型  

5、能正确表示逻辑关系:“10≥=a≥=0”的C语言表达式是 (D)(2分)

A、 10>=a>=0  B、 a>=0 and a<=10

C、 a>=0||a<=10 D、 a>=0&&a<=10

 6、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)(2分)

A、 6.500000       B、 6         

C、 5.500000           D、 6.000000

 7、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 (B)(2分)

A、 INPUT x、y、z;  B、 scanf("%d%d%d",&x,&y,&z);  

C、 scanf("%d%d%d",x,y,z);  D、 read("%d%d%d",&x,&y,&z);  

8、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是(A)(2分)

A、 0  B、 0.5  

C、 1  D、 2

 9、设char ch='A';则ch=(ch>='A'&&ch<='Z')?(ch+32):ch的值是(  B   )。      (2分)

A、A B、a

C、Z D、z

 10、设 int  x=1, y=1; 表达式(!x||y--)的值是(  B  )。(2分)

A、0  B、1 C、2 D、-1

11.执行程序段int a=-1,b=4,k;k=(++a<0)&&!(b--<=0);printf(“%d %d %d\n”,k,a,b);后的输出结果是(  D ) 。              (2分)

A、1 0 4  B、1 0 3  

C、0 0 3  D、0 0 4  

12、程序段   int  x=3;   do  { printf(“%d”,x-=2);  }   while (!(--x));的输出结果是(   C  )。(2分)

A、1  B、3  0 C、1  -2 D、死循环

15、语句int k=1; while (k++<10);执行后,变量k的值是(  B )。(2分)

A、10  B、11 C、9  D、无限循环,值不定

 

16、程序 int i,sum;  for(i=1;i<=3;sum++)sum+=i;   printf(“%d\n”,sum); 的执行结果是(  C   )。(2分)

A、6  B、3 C、不确定 D、0

 

17、以下对二维整形数组a的正确说明是(   C)。(2分)

A、int a[3][]; B、float a(3,4);

C、double a[1][4]; D、float a(3)(4)

 

18、若已定义char s[10];在下面表达式中不能表示s[1]的地址的是(B   )。 (2分)

A、s+1  B、s++  

C、&s[0]+1  D、&s[1]

19、对两个字符数组a和b进行初始化char a[ ]="ABCDEF";  char  b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是(D   ) 。 (2分)

A、a与b数组完全相同 B、a与b长度相同   

C、a和b中都存放字符串 D、a数组比b数组长度长

 

20、有说明:char *language[]={"FORTRAN","BASIC","PASCAL","JAVA","C"};则表达式*language[1]>*language[2]比较的是( A )

A、字符B和字符P              B、字符串FORTRAN和字符串BASIC

C、字符F和字符B              D、字符串BASIC和字符串PASCAL

21、C语言程序由函数组成,它的(  B)。(2分)

A、主函数必须在其它函数之前,函数内可以嵌套定义函数

B、主函数可以在其它函数之后,函数内不可以嵌套定义函数

C、主函数必须在其它函数之前,函数内不可以嵌套定义函数

D、主函数必须在其它函数之后,函数内可以嵌套定义函数

 22、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是( D )。(2分)

A、extern  B、registerC、auto D、static

 23、已知:int a[]={1,2,3,4,5,6},*p=a;则值为3的表达式是 (   A  )。            .(2分)

A、p+=2,*(p++)         B、p+=2,*++p        

C、p+=3,*p++       D、p+=2,++*p

 

24、设有说明语句“struct stu{  int a;  float b;}stutype;”,则叙述不正确的是(C )(2分)

A、struct是结构体类型的关键字。 B、struct stu是用户定义的结构体类型。

C、stutype是用户定义的结构体变量名。 D、a和b都是结构体变量。

25、下列关于文件指针的描述中,错误的是(D )(2分)

A、文件指针是由文件类型FILE定义的。 B、文件指针是指向内存某个单元的地址值。

C、文件指针是用来对文件操作的标识。 D、文件指针在一个程序中只能有一个。

26、以下叙述中正确的是(B)(2分)

 A、C语言的源程序不必通过编译就可以直接运行

 B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令

 C、C源程序经编译形成的二进制代码可以直接运行

 D、C语言中的函数不可以单独进行编译

27、以下叙述中正确的是 (C)(2分)

 A、用C语言实现的算法必须要有输入和输出操作

 B、用C语言实现的算法可以没有输出但必须要有输入

 C、用C程序实现的算法可以没有输入但必须要有输出

 D、用C程序实现的算法可以既没有输入也没有输出

28、C语言中, 下列字符常量合法的是(A)(2分)

 A、'\t'  B、"A"  C、65  D、A

 

29、下列关于赋值运算符的表述中,错误的是(C)(2分)

 A、赋值运算符优先级高于逗号运算符

 B、赋值运算符的结合性是从左至右

C、赋值运算符是双目运算符

 D、赋值运算符可在表达式中连用

 

31、以下不是关键字的是(C)(2分)

 A、continue B、char C、If D、default

32、设x,y为浮点型变量,合法赋值语句是(A)(2分)

 A、x=8+y;   B、(float)3 ;     C、y=(x%2)/10 ;    D、*x=10;

 

33、已定义ch为字符型变量,以下赋值语句中错误的是(B)(2分)

 A、 ch='\';     B、 ch=62+3;      C、 ch=' ';     D、 ch='\xaa';

 

38、c语言中(  D  )。(2分)

 A、不能使用do-while语句构成的循环

 B、do-while语句构成的循环必须用break语句才能退出

 C、do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环            D、do—while语句构成的循环,当while语句中的表达式值为零时结束循环

39、设j为int型变量,则for(j=10;j>3;j--) {if (j%3)  j--; --j;--j;printf(“%d    ”,j); }的执行结果是(  A  )。  (2分

A、7    4B、4    7 C、5    6D、1    3

 

41、以下正确的定义语句是(  D )。(2分)

 A、int a[1][4]={1,2,3,4,5};

 B、float x[3][]={{1},{2},{3}};

C、long b[2][3]={{1},{1,2},{1,2,3}};

 D、double y[][3]={0};

43、在C语言中,引用数组元素时,其数组下标的数据类型允许是( C )。(2分)

 A、整型常量

 B、整型表达式

C、整型常量或整型表达式

 D、任何类型的表达式

 

44、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( B  )。(2分)

 A、2   B、3    C、4     D、无确定值

int *f()表示这个函数的功能是:返回一个地址.

int(*f)():表示 这是一个函数的指针.它要指向一个函数才能有用.指向一个函数之后可以用它来代替该函数.之后使用这个指针相当于使用该函数.

int *a[];是一个指针数组啦...表示数组中的每一个元素都是一个指针,可以指向一个int类型的数值.

int (*a)[]这是一个指向多维数组的指针变量.

46、函数调用结束后,形式参数(C  )。(2分)

 A、继续占用相同大小的内存B、占用的内存减小 C、释放内存 D、不确定

47、已知:int a,*p=&a;则下列函数调用中错误的是( D    )。(2分)

 A、scanf("%d",&a) B、scanf("%d",p); C、printf("%d",a);   D、printf("%d",p);

48、枚举类型首元素默认值和两个相邻元素之间默认的差值分别是(C )(2分)

 A、1,0 B、1,1 C、0,1D、0,0

 

49、语句“fseek(fp,100L,2);”的功能是(C )(2分)

 A、将fp所指向文件的位置指针移至距文件首100个字节。  

B、将fp所指向文件的位置指针移至距文件尾100个字节。

  C、将fp所指向文件的位置指针移至距当前位置指针的文件首方向100个字节。  

D、将fp所指向文件的位置指针移至距当前位置 指针的文件尾方向100个字节。

50、以下叙述错误的是(D)(2分)

 A、一个C程序总是从main函数开始执行的;

 B、C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上;

 C、每个语句和数据定义的最后必须有一个分号;

 D、C语言本身有输入输出语句。

52、下面不正确的字符串常量是(A)(2分)

 A、 'abc'    B、 "12'12"      C、 "0"      D、 "  "

53、已知各变量的类型说明如下:int k,a,b=1; unsigned long w=5;则以下不符合C语言语法的表达式是(A)(2分)

 A、 k=b+2=w    B、 w+= -2   C、 k=(a=2,b=3,a+b)     D、 a+=a-=(b=4)*(a=3)

 

54、执行下列语句int x=10,y=3;printf("%d\n",y=x/y);后的输出是(C)(2分)

 A、 0 B、 1  C、 3 D、 不确定的值

55、若执行以下程序段: int  a=0, b=0, c=0;c=(a-=a-5), (a=b, b+3); printf(“%d,%d,%d\n”,a, b, c); 其输出结果是(B)(2分)

 A、0,0,-10 B、0,0,5   C、-10,3,-10  D、3,3,-10

 

58、条件运算符的结合方向是(  A   )。(2分)

 A、自右至左; B、自左至右; C、任意; D、前后顺序;

59、对于程序段int x=-1; do { x=x*x; }while(!x);说法正确的是(  C  )。(2分)

 A、是死循环 B、循环执行两次 C、循环执行一次  D、有语法错误

 

 

62、以下对一维整形数组a进行正确初始化的语句是(  C )。(2分)

 A、int a[10]=(0,0,0,0,0);  B、int a[10]={}; C、int a[]={0};D、int a[10]={10*1};

64、以下能对二维整形数组a进行正确初始化的语句是(  D )。(2分)

 A、int a[2][3]={0};                            B、int a[][3]={{1,2},{0}};

 C、int a[2][3]={{1,2},{3,4},{5,6}};     D、int a[][3]={1,2,3,4,5,6};

 

65、程序char c[5]={‘a’,’b’,’\0’,’c’c,’\0’}; printf(“%s”,c);}的运行结果是( D  )。(2分)

 A、'a''b'B、ab  C、ab cD、ab

 

67、在定义语句int *f();中,标识符f代表的是( D )。(2分)

 A、一个用于指向整型数据的指针变量

 B、一个用于指向一维数组的行指针

 C、一个用于指向函数的指针变量

 D、一个返回值为指针型的函数名

68、设p1和p2是指向同一个字符串的指针变量,e为字符变量,则以下不能正确执行的赋值语句是(B)。(2分)

 A、c=*p1+*p2;B、p2=c C、p1=p2 D、c=*p1*(*p2);

69、C语言结构体类型变量在程序执行期间(A )(2分)

 A、所有成员一直驻留在内存中。

 B、只有一个成员驻留在内存中。                       

 C、部分成员驻留在内存中。

 D、没有成员驻留在内存中。

85、判断字符串a是否大于b,应当使用( D  )。(2分)

 A、if (a>b)B、if (strcmp(a,b)) C、if (strcmp(b,a)>0)D、if (strcmp(a,b)>0)

 

 

86、若已定义char s[2][40]={"china","English"};则在下面表达式中能表示字符‘E’的地址的是( B  )。 (2分)

 A、&s[2][1]       B、s[1]     C、&s[1]D、&(s[1]+1)

87、关于局部变量,下列说法正确的是 (  D   )。(2分)

 A、 定义该变量的程序文件中的函数都可以访问。

 B、 定义该变量的函数中的定义处以下的任何语句都可以访问。

 C、 定义该变量的复合语句的定义处以下的任何语句都可以访问。  D、 局部变量可用于函数之间传递数据。

 

88、程序char  a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(“%d”,*--p);的输出结果是(      C    )。(2分)

 A、非法   B、a[4]的地址        C、5              D、3

 

90、下列正确定义一个文件指针pm的语句是(C )(2分)

 A、FILE pm;B、file *pm; C、FILE *pm;D、file pm;

 

94、以下叙述中正确的是( C)(2分)

 A、在C程序中,无论是整数还是实数,只要在允许的范围内都能准确无误的表示。  B、C程序由主函数组成

C、C程序由函数组成

 D、C程序由函数和过程组成

100、以下关于运算符优先顺序的描述中正确的是(  C    )。(2分)

 A、关系运算符<算术运算符<赋值运算符<逻辑与运算符

 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符

C、赋值运算符<逻辑与运算符<关系运算符<算术运算符

 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符

 

108、若有char a[80],b[80];则正确的是(  D )。 (2分)

 A、puts(a,b);B、printf("%s,%s",a[ ],b[ ]); C、putchar(a,b); D、puts(a);puts(b);

 

109、若已定义char s[10];在下面表达式中不能表示s[1]的地址的是( B  )。 (2分)

 A、s+1 B、s++  C、&s[0]+1 D、&s[1]

 

 

110、若有说明:int  a[3][4];则数组a中各元素( C  )。(2分)

 A、可在程序的运行阶段得到初值0

 B、可在程序的编译阶段得到初值0 C、不能得到确定的初值

 D、可在程序的编译或运行阶段得到初值0

 

112、有程序 char s[]=”ABCD”, *P; for(p=s+1; p<s+4; p++)  printf (“%s ”,p); 程序的输出结果是(       D    ) 。                     (2分)

 A、ABCD BCD CD D B、A B C D    C、B C D             D、BCD CD D

 

Ⅲ    建议 

刷题过程中可对照课本复习巩固相关知识点.

  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值