C语言典型易错题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。