C语言易错知识点整理

来源:互联网 发布:端口是什么 怎么查看 编辑:程序博客网 时间:2024/05/24 05:30

C语言易错知识点整理

1.基本概念问题

例题1:一个C语言程序是由( C )组成的。
A) 一个主程序和若干子程序   B) 若干子程序  C) 函数  D) 若干过程

知识点: C语言中的函数可以单独进行编译

例题2:下列关于定点数与浮点数的叙述中错误的是(C)。
A
.在实数的浮点表示中,阶码是一个整数
B
.整数是实数的特例,也可以用浮点数表示
C
.实数的补码是其对应的反码在最后一位加1
D
.相同长度的浮点数和定点数,前者可表示数的范围要大于后者

例题3:若有下列定义(设int类型变量占2个字节):int i=8,j=9;则下列语句:printf(”i=%%d,j=%%d\n”,i,j);输出的结果是(B )。 

A.i=8,j=9
B.i=%d,j=%d
C.i=%8,j=%9
D.8,9

例题3:C语言文件按数据的存放形式可分为文本文件和二进制文件

2.用户标识符问题

例题:以下不能定义为用户标识符是( D )

A) main;                B) _0;                C) _int;                D) sizeof;

知识点:标识符包括系统关键字、预定义标识符和用户自定义标识符。用户标识符实际上就是系统预定义标识符,也就是系统事先定义好的,可以直接使用的,或者说本身已经具有某种含义,用户可以直接使用,但特殊情况下,还可以重新定义另作他用,比如绝对值函数,abs(),你既可以使用求绝对值,但也可以定义成别的用途,若这样,那么遇到求绝对值,就不能使用abs()啦。但诸如if,else,int等系统有专门的用途,如define是宏定义的关键字,而if的判断语句的关键字
不允许作为他用,这一类称为关键字。编程中,用户需要大量的变量。常量、函数,所以系统允许用户根据需要自己来按要求定义标识符,这一类称为用户自定义标识符。

例题2:以下选项中合法的用户标识符是(B)。
A) long   B) _2Test  C) 3Dmax   D) A.dat

例题3以下叙述正确的是( D )

A) 可以把define和if定义为用户标识符 

B) 可以把define定义为用户标识符,但不能把if定义为用户标识符 

C) 可以把if定义为用户标识符,但不能把define定义为用户标识符 

D) define和if都不能定义为用户标识符

例题4下列关于C语言用户标识符的叙述中正确的是( C )

A) 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

B) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头

C) 用户标识符中不可以出现中划线,但可以出现下划线

D) 用户标识符中可以出现下划线和中划线(减号)  

例题5:C语言编程整个操作的过程是( A 

A)编辑、编译、链接、执行

B)编译、编辑、链接、执行

C)链接、编译、编辑、执行

D)编辑、链接、编译、执行

例题6:下列说法不正确的是( A )

A)链接操作将生成扩展名为.lnk的文件

B)编辑过程将生成扩展名为.cpp或.c的文件

C)编译过程将生成扩展名为.obj的文件

C)C编程最终要生成扩展名为.exe的文件

例题7:下列说法中错误的是( DEFJ )

A. 主函数可以分为两个部分:主函数说明部分和主函数体

B. 主函数可以调用任何非主函数的其它函数

C. 任何非主函数可以调用其它任何非主函数

D. 程序可以从任何非主函数开始执行

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

F)C语言不包含依赖硬件的输入/输出语句,其输入/输出功能语句需要手工来编写

G)C语言允许对位、字节、地址这些计算机功能中的基本成分进行操作

H)源文件经过编译链接后生成的可执行程序和源程序是独立的

I.由于C源程序是字符组成,因此可以作为文本文件在任何文本编辑的软件中输入

J)错误调试一般在执行过程进行

3.实参形参数据传递问题

例题:在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)

A) 地址传递                     B) 单向值传递

C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定

知识点:

4.ASCII码问题及字符串问题

例题1:从键盘上输入"446755"时,下面程序的输出是(C )

#include <stdio.h>

int main()

{ int c;

while((c=getchar())!='\n')

switch(c -'2')

{ case 0:

case 1: putchar(c+4);

case 2: putchar(c+4);break;

case 3: putchar(c+3);

default: putchar(c+2);break;

}

printf("\n");

}

A) 888988             B) 668966             C)88898787         D) 66898787

知识点:

例题2:表达式“ˊ\0ˊ<ˊAˊ<ˊ0ˊ”的值是 (B

   A.0            B. 1              C.2              D. 语法错误

知识点:从左至右运算

例题3:设有定义语句:char s[10]="ABCD\0\0",则字符型数组s中存放的字符串长度是  4

例题4:已知'a'=97, 'A'=65, 则'\101' 表示 (C

A. 字符e  B. 字符a  C. 字符’A’  D. 字符F

例题5:“strlen("\\141\141abc\t")”的返回值是(D

A. 14 B. 12 C. 13 D. 9

5.++与--问题

例题1:有以下程序

int main( )

{  intx=0,y=5,z=3;

  while(z-->0&&++x<5)   y=y-1;

  printf("%d,%d,%d\n",x,y,z);

}  

程序执行后的输出结果是( B

A)3,2,0                   B)3,2,-1                C)4,3,-1                D)5,-2,-5

例题2:设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( C

A)  3                   B) 0                    C)  -12               D) 9

例题3:下程序的输出结果是

main()

{ int a, b;

   for(a=1,b=1; a<=100; a++)

     { if(b>=10) break;

        if (b%3==1)

          { b+=3; continue; }

     }

   printf("%d\n",a);

  }

执行后输出结果是:4

例题4:下面程序的运行结果

main()

{char *p="abcdefghi";

while (*p++!='e');

printf("%c\n",*p);

 }

执行后输出结果是:f

例题5:下面程序的运行结果

f(int a)

 {static int tc=3;

 int tb=0;

 a=tc++,tb++;

printf("%d,%d\n", tb, tc);
 return a; 

}

int main()

{ int a=15,i,k;

 for(i=0;i<2;i++)

 k=f(++a);

 printf("%d\n",k);

 }

执行后输出结果是:

1,4

1,5

4  

例题6:执行下列循环语句后,整型变量x的值是(B

       for (x=1;++x<5;x++)  ++x;

  A. 4          B. 5              C. 6              D. 7

例题7:设整型变量x、y的值均为6,则表达式x++%(++y+1)的值是:6

例题8:设整型变量k的值为0,则循环语句“while (k++<9) k++;”的循环体一共执行5次。

技巧:加一除二

例题9:下面这个程序的输出结果是__-1__。

#include <stdio.h>

main( )

{ int y=10;

while(y--);

printf("y=%d\n",y);

}

6.函数调用

例题1:有以下程序

  char fun(char x , char y)

   {  if(x<y)   return x;

     return y;

   }

 main( )

 {  int a='9',b='8',c='7';

    printf("%c\n",fun(fun(a,b),fun(b,c)));

 }  

程序的执行结果是( D

A)函数调用出错     B)8                   C)9                    D)7

例题2:有函数调用fun1(x+y,(y,z),10,fun((x,y―1)));函数fun1有_4_个参数。

例题3:写出下列程序的输出结果

    void change(int x,int m)

    { char ch[]={'0','l','2','3','4','5','6','7','8','9'},b[80];

      int i=0,r;

      while(x)

      { r=x%m; x/=m;  b[i++]= ch[r]; }

     for(--i; i>=0; i--)

       printf("%c",b[i]);

    }

   #include<stdio.h>

    int main()

    { int a,b;

     change(10,2);

     printf("\n");

     change(10,8);

    }

答案:1010     12

7.字符数组赋值问题

例题:以下选项中,不能正确赋值的是( A )

A) charstr1[10]; str1="Ctest";

B) char str2[]={'C', 't','e','s','t'};

C) charstr3[20]= "Ctest";

D) char*str4="Ctest";

8.宏定义的暴力替换问题

例题:有以下程序

#define  f(x)   x*x

main( )

 {  int i;

   i=f(4+4)/4;

   printf("%d\n",i);

 } 

执行后输出结果是(B

A)24                 B)21                 C)16                D)6

知识点:

9.指针结构体

例题:写出下面程序的运行结果

#include <stdio.h>

 struct stu

 {int age;

 char sex;

  int*b;

 };

 struct stu *p;

 intc[ ]={80,85,90,95,75};

 struct stu member[ ]={18,’m’,&c[0],19,’f’,&c[1],20,’f’,&c[2],21,’m’,&c[3],22,’m’,&c[4]};

int main()

{p=member; p+=1;

printf("%d  ",(p++)->age);

printf("%d  ",(++p)->age);

printf("%d  ",*(++p)->b);

}

 

执行后输出结果是:19  21  75

10.数据类型问题

例题1:设有实型变量x,则表达式“x=3,x+=3/2”的值是(C)

  A. 3          B. 3.0            C. 4.0            D. 4.5

例题2:int k=7;float x=2.5,y=4.7; 则表达式 k%3*(int)(x+y)%2/4 运算后的值是(  C )  

A. -2.5             B. -0.5             C. 0            D. 2.25

例题3:若有定义“int a=5,b=7;”,则表达式a%=(b%2)运算后,a的值为( )。

 A.0                      B.1                    C.11                  D.3

11.数据存储类型问题

例题1:写出下列程序的输出结果

try( )

{ static int x=3;

x++;

return(x);

}

#include<stdio.h>

int main( )

{ int i, x;

for(i=0; i<=2; i++ )

x=try( );

printf("%d\n", x);

}

答案:6

12.选择结构if的一些问题

例题1:设整型变量x1、x2、x3、y值均为5,执行下列程序段后y值是(A)

if (x1>5)  if (x2==5) if (x3<5)  y=2;

else  y=3;

  A. 5          B. 4              C. 3              D. 2

知识点:else总是和最近的if配对!!!

例题2:输入4个整数,要求从大到小的顺序输出。

程序:

13.循环结构的一些问题

例题:输入4个整数,要求从大到小的顺序输出。

程序:编程序实现输出下列图形(不能直接用字符串输出)。

   *

  ***

 *****

*******

 *****

  ***

   *

程序1:模仿教材例题,利用二维数组

程序2:

14.指针

例题1:若有定义:char s[20]="programming",*ps=s;则不能代表字符'o'的表达式是(A

A)ps+2 B)s[2] C)ps[2] D)ps+=2,*ps

15.未分类问题

例题1:下面程序段执行后,a的值是(B),输出结果为(C

        int a;

        printf("%d \n", (a=4*5, a*4, a+5) );

A. 60 B. 20 C. 25 D. 10


原创粉丝点击