C语言典型易错题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言典型易错题

(1)以下程序段中的变量已正确定义

For(i=0;i<4;i++,i++)

For(k=1;k<3;k++);printf(“*”);

程序段的输出结果是()

A********B****

C**D*

解析:注意第二个for后执行语句为空,故答案为D。

(2)有以下程序

#include

V oid f(int*p,int*q);

Main()

{int m=1,n=2,*r=&m;

f(r,&n);printf(“%d,%d,m,n);

}

V oid f(int*p,int*q)

{p=p+1;*q=*q+1;}

程序运行后的输出结果是()

A1,3B2,3C1,4D1,2

解析:注意C语言中函数的值传递规律,故答案为A。

(3)有以下程序

#include

Int b=2;

Int fun(int*k)

{b=*k+b;return(b);}

Main

{int a[10]={1,2,3,4,5,6,7,8},i;

For(i=2;i<4;i++)

{b=fun(&a[i])+b;printf(“%d”,b);}

Printf(“\n”);

}

程序运行后的输出结果是()

A1012B810C1028D1016

解析:b是全局变量,当b=2时,i<4符合,执行b=fun(&a[i])+b对于fun(&a[i])得b=a[2]+2=5

所以b=b+b=10

i++,i=3,i<4符合fun(&a[i]),得b=a[3]+10=14,b=b+b=28所以答案是C

(4)若变量已正确定义,有以下程序段

Int a=3,b=5,c=7;

If(a>b)a=b;c=a;

If(c!=a)c=b;

Printf(“%d,%d,%d\n”,a,b,c);

其输出结果是()

A程序语段有语法错误B3,5,3

C3,5,5D3,5,7

解析:注意第一个If语句之后的分号,c=a是不属于If语句的,故答案为B。

(5)假定a和b为int型变量,则执行以下语句后的值为()

a=1;

b=10;

do

{b-=a;a++;

}while(b--<0);

A9B-2C-1D8

解析:对于do……while循环来说,先执行循环体再判断,条件不满足时退出循环。故答案为D。

(6)有如下程序段

#include

#define PT5.5

#define S(x)PT*x*x

Main()

{int a=1,b=2;

Printf(“%4.1f\n”,S(a+b));

}

该程序的输出结果是()

A49.9B9.5C22.0D45.0

解析:函数调用时是先求出实参表达式的值,然后代入形参,但是使用带参数的宏只是进行简单的字符替换,故答案为B。

相关文档
最新文档