版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
易错点C语言中易犯的错误对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.
****************************************************************************************
1.书写标识符时,忽略了大小写字母的区别.
main()
{
inta=5;
printf("%d",A);
}
编译程序把a和A认为是两个不同的变量名,而显示出错信息.
C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量
名用大写,变量名用小写表示,以增加可读性.
****************************************************************************************
2.忽略了变量的类型,进行了不合法的运算.
main()
{
floata,b;
printf("%d",a%b);
}
%是求余运算,得到a/b的整余数.整型变量a和b可以进行求余
运算,而实型变量则不允许进行"求余"运算.
****************************************************************************************
3.将字符常量与字符串常量混淆.
charc;
c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单
引号括起来的单个字符,字符串常量是一对双引号括起来的字符序
列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所
以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一
个字符变量是不行的.
****************************************************************************************
4.忽略了"="与"=="的区别.
在许多高级语言中,用"="符号作为关系运算符"等于".
如在BASIC程序中可以写
if(a=3)then…
但C语言中,"="是赋值运算符,"=="是关系运算符.如:
if(a==3)a=b;
前者是进行比较,a是否和3相等,后者表示如果a和3相等,把
b值赋给a.由于习惯问题,初学者往往会犯这样的错误.
****************************************************************************************
5.忘记加分号.
分号是C语句中不可缺少的一部分,语句末尾必须有分号.
a=1
b=2
编译时,编译程序在"a=1"后面没发现分号,就把下一行"b
=2"也作为上一行语句的一部分,这就会出现语法错误.改错时,
有时在被指出有错的一行中未发现错误,就需要看一下上一行是否
漏掉了分号.
{
z=x+y;
t=z/100;
printf("%f",t);
}
对于复合语句来说,最后一个语句中最后的分号不能忽略不写
****************************************************************************************
6.多加分号.
对于一个复合语句,如:
{
z=x+y;
t=z/100;
printf("%f",t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足.
又如:
if(a%3==0);
I++;
本是如果3整除a,则I加1.但由于if(a%3==0)后多加了分号
,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都
将自动加1.
再如:
for(I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先后输入5个数,每输入一个数后再将它输出.由于for
()后多加了一个分号,使循环体变为空语句,此时只能输入一个数
并输出它.
****************************************************************************************
7.输入变量时忘记加地址运算符"&".
inta,b;
scanf("%d%d",a,b);
这是不合法的.Scanf函数的作用是:
intx,y;
{intz;
z=x>y?x:y;
return(z);
}试题一一、单项选择题(共30分,每题1分)1.下列不正确的转义字符是A.\\
B.\‘
C.074
D.\02.不是C语言提供的合法关键字是A.switch
B.cher
C.case
D.default3.正确的标识符是(
)A.?a
B.a=2
C.a.3
D.a_34.下列字符中属于键盘符号的是A.\
B.\n
C.\t
D.\b.下列数据中属于“字符串常量”的A.ABC
B.“ABC”
C.‘ABC’
D.‘A’6.char型常量在内存中存放的是A.ASCII码
B.BCD码
C.内码值
D.十进制代码值7.设a为5,执行下列语句后,b的值不为2的是(
)A.b=a/2
B.b=6-(——a)
C.b=a%2
D.b=a>3?2:28.在以下一组运算符中,优先级最高的运算符是(
)A.<=
B.=
C.%
D.&&9.设整型变量i的值为3,则计算表达式i——i后表达式的值是()A.0
B.1
C.
2
D.表达式出错10.设整型变量a,b,c均为2,表达式a+++b+++c++的结果是(
)A.6
B.9
C.8
D.表达式出错11.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是(
)A.1
B.2
C.2.0
D.2.512.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果是(
)A.4
B.3
C.2
D.113.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是()A.10<a<15
B.a==11||a==12||a==13||a==14C.a>10&&a<15
D.!(a<=10)&&!(a>=15)14.若有以下定义:chara、intb、floatc、doubled,则表达式a*b+d-c值的类型为()A.float
B.int
C.char
D.double15.表达式“10!=9”的值是(
)A.true
B.非零值
C.0
D.116.循环语句for(x=0,y=0;(y!=123)||(x<4);x++);的循环执行(
)A.无限次
B.不确定次
C.4次
D.3次17.在C语言中,下列说法中正确的是(
)A.不能使用“dowhile”的循环B.“dowhile”的循环必须使用break语句退出循环C.“dowhile”的循环中,当条件为非0时将结束循环D.“dowhile”的循环中,当条件为0时将结束循环。18.设a,b为字符型变量,执行scanf(“a=%c,b=%c”,&a,&b)后使a为‘A’,b为‘B’,从键盘上的正确输入是(
)A.‘A’‘B’
B.‘A’,‘B’
C.A=A,B=B
D.a=A,b=B19.设i,j,k均为int型变量,执行完下面的for循环后,k的值为(
)for(i=0,j=10;i<=j;i++,j——)k=i+j;A.10
B.9
C.8
D.720.设有定义:chars[12]={“string”};则printf(“%d\n”,strlen(s));的输出是(
)A.6
B.7
C.11
D.1221.合法的数组定义是()A.inta[]={“string”};
B.inta[5]={0,1,2,3,4,5};C.chara={“string”};
D.chara[]={0,1,2,3,4,5}22.函数调用strcat(strcpy(str1,str2),str3)的功能是()A.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后B.将字符串str1复制到字符串str2中后再连接到字符串str3之后C.将字符串str1复制到字符串str2中后再复制到字符串str3之后D.将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中23.设有如下定义,则正确的叙述为(
)char
x[]={“abcdefg”};char
y[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’};A.数组x和数组y等价
B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度24.设有单精度变量f,其值为13.8.执行语句“n=((int)f)%3;”后,n的值是()A.4
B.1
C.4.333333
D.4.625.执行语句“f=(3.0,4.0,5.0),(2.0,1.0,0.0);”后,单精度变量f的值是(
)A.3.0
B.5.0
C.2.0
D.0.026.设a、b均为整型变量,下列表达式中不是赋值表达式的是(
)A.a=3,4,5
B.a=3*2
C.a=a&&b
D.a=b=427.表达式“1?(0?3:2):(10?1:0)”的值为(
)A.3
B.2
C.1
D.028.sizeof(double)的结果值是(
)A.8
B.4
C.2
D.出错29.指出下面正确的输入语句是(
)A.scanf(“a=b=%d”,&a,&b);
B.scanf(“a=%d,b=%f”,&m,&f);C.scanf(“%3c”,c);
D.scanf(“%5.2f,&f);30.若有以下定义和语句,且0<=i<5,则(
)是对数组元素地址的正确表示inta[]={1,2,3,4,5},*p,i;p=a;A.&(a+i)
B.&p
C.a++
D.&p[i]二、填空(20分,每空1分)1.在内存中存储“A”要占用(
)个字节,存储‘A’要占用(
)字节。2.符号常量的定义方法是(
)。3.能表述“20<x<30或x<-100”的C语言表达式是(
)。4.结构化程序设计方法规定程序或程序段的结构有三种:顺序结构、(
)和(
)。5.C语言共提供了三种用于实现循环结构的流程控制语句,它们是(
)、(
)和(
)。6.若在程序中用到“putchar”,应在程序开头写上包含命令(
),若在程序中用到“strlen()”函数时,应在程序开头写上包含命令(
)。7.设有定义语句“staticinta[3][4]={{1},{2},{3}}”,则a[1][1]值为(
),a[2][1]的值为(
)。8.“*”称为(
)运算符,“&”称为(
)运算符。9.赋值表达式和赋值语句的区别在于有无(
)号。10.用{}把一些语句括起来称为(
)语句11.设a=12、b=24、c=36,对于“scanf(”a=%d,b=%d,c=%d“,&a,&b,&c);”,输入形式应为(
)12.表达式“sqrt(s*(s-a)*(s-b)*(s-c));”对应的数学式子为(
)13.C语言编绎系统在判断一个量是否为“真”时,以0代表“假”,以(
)代表“真”三、读程序(30分)1.main(){inta=10,b=4,c=3;if(a<b)a=b;if(a<c)a=c;printf(“%d,%d,%d”,a,b,c);}2.main(){int
y=9;for(;y>0;y——)if(y%3==0){printf(“%d”,——y);continue;}3.main(){intx,y;for(y=1,x=1;y<=50;y++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;
}printf(“%d”,y)4.main(){staticinta[][3]={9,7,5,3,1,2,4,6,8};inti,j,s1=0,s2=0;i,j,s1=0,s2=0;for(i=0;i<3;i++)for(j=0;j<3;j++){if(i==j)s1=s1+a[i][j];if(i+j==2)s2=s2+a[i][j];}printf(“%d\n%d\n”,s1,s2);}5.main(){staticchara[]={‘*’,‘*’,‘*’,‘*’,‘*’};inti,j,k;for(i=0;i<5;i++){printf(“\n”);for(j=0;j<i;j++)printf(“%c”,‘
’);for(k=0;k<5;k++)printf(“%c”,a[k]);
}
}6.intfac(intn){staticintf=1;f=f*n;return(f);}main(){inti;for(i=1;i<=5;i++)printf(“%d!=%d\n”,i,fac(i));}四、编写程序(20分)1.编一个程序,输入X的值,按下列公式计算并输出Y的值2.编程序按下列公式计算e的值(精度为1e-6)e=1+1/1!+1/2!+1/3!+……1/n!
参考答案:一、单项选择题(共30分,每题1分)1.C
2.B
3.D
4.A
5.B
6.A
7.C
8.C
9.A
10.A
11.C
12.D
13.A
14.D
15.D
16.C
17.D
18.D
19.A
20.B
21.D
22.A
23.C
24.B
25.D
26.D
27.B
28.A
29.B
30.C;}二、填空(20分,每空1分)1.2,12.#define
符号常量
常量3.(x>20&&x<30)||x<-1004.分支结构,循环结果5.while
do
for6.#include
“stdio.h”
#include
“string.h”7.a[1][1]=0,a[2][1]=08.*指针运算符,
&地址运算符9.分号;10.复合语句11.a=12,b=24,c=3613.非0三、读程序(30分)1.结果:10,4,32.结果:8523.64.18105.*****6.5!=120四、编写程序(20分1.Main(){intx,y;scanf(“%d”,&x);if(x<=1)y=x;(x<=1)y=x;elseif(x>1&&x<10)y=2*x-1;elsey=3*x-11;printf
(“x=%d,y=%d\n”,x,y);}bsp;
}2.Main(){floatE;intn;s=0;E=1;试题二一、单项选择题(每小题2分,共50分)1、一个C程序的执行是从___A__。A、本程序的main函数开始,到main函数结束B、本程序的main函数开始,到本程序文件的最后一个函数结束C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束D、本程序文件的第一个函数开始,到本程序main函数结束2、C语言程序的基本单位是___C___。A、程序行B、语句C、函数D、字符3、请选出可用作C语言用户标识符的一组标识符___B___。A、voidB、a3_b3C、ForD、2adefine_123-abcDOWORDIFasesizeof4、假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__。A、4.500000B、4C、4.000000D、2.0000005、下列可以正确表示字符型常量的是___D__。A、297B、"a"C、"\n"D、'\t'6、在C语言中,要求运算数必须是整型的运算符是__D__。A、/B、++C、*=D、%7、C语言中,复合语句的构成是将一系列语句置于__C__。A、begin与end之间B、方框号“[]”之间C、花括号“{}”之间D、圆括号“()”之间8、有如下程序段,对应正确的数据输入是___A___。floatx,y;scanf(”%f%f”,&x,&y);printf(”a=%f,b=%f”,x,y);A、2.04<回车>B、2.04,5.67<回车>5.67<回车>C、A=2.04,B=5.67<回车>D、2.045.67<回车>9、以下程序段的输出结果是___D__。inta=5678;printf(”%2d\n”,a);A、提示出错、无结果B、56C、78D、567810、已知:charch='A';则下列表达式的值是__B__。ch=(ch>='A'&&ch<='Z')?(ch+32):ch;A、AB、aC、ZD、z11、下列描述,正确的是___B__。A、表达式3.91%5是合法的B、用b=89作为while循环的条件是合法的C、逗号表达式是没有值和类型的D、字符型变量和int型变量的操作完全不同12、阅读以下程序:main(){intx;scanf("%d",&x);if(x--<5)printf("%d",x);elseprintf("%d",x++);}程序运行后,如果从键盘上输人5,则输出结果是__B__。A、3B、4C、5D、613、下列程序的运行结果是___C__。#include”stdio.h”main(){intk;k=3;switch(k){case1:printf(”%d\n”,k++);case2:printf(”%d\n”,k++);case3:printf(”%d\n”,k++);case4:printf(”%d\n”,k++);break;default:printf(”Full!\n”);}}A、3B、4C、3D、44414、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=1,则逻辑表达式(m==a<b)&&(n==c<d)的值为__A__。A、0B、1C、2D、315、设x、y和temp均为longint型变量,则以下语句:{temp=x;x=y;y=temp;}的功能是__D__。A、把x和y按从大到小排列B、把x和y按从小到大排列C、无确定结果D、交换变量x和变量y的值16、以下程序的输出结果是___A__。main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}printf("%d\n",a);}A、4B、6C、5D、10117、执行以下程序后输出的结果是___D__。main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}A、-1B、1C、8D、018、执行以下程序后输出的结果是___B__。main(){inti,j,w=0;for(i=4;i;i--)for(j=1;j<=2;j++)w=w+i*j;w=i*j;printf("%d\n",w);}A、4B、0C、1D、3019、以下程序运行后,输出结果是__C__。main(){intn[5]={3,3,3},i,k=2;for(i=0;i<k;i++)n[i]=n[i]+1;printf("%d\n",n[k]);}A、4B、9C、3D、不确定的值20、以下程序的输出结果是__A__。f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n",f(a));}A、7B、7C、7D、78910791113721、设C程序如下:#defineABC(x)x*x#include"stdio.h"main(){inta=3,b;b=ABC(a+1);printf("b=%d",b);}上述程序运行输出的结果是__D_。A、b=4B、b=a+1C、b=16D、b=722、以下程序的输出结果是__B__。main(){inti,a[10];for(i=9;i>=0;i--)a[i]=10-i;printf("%d%d%d",a[1],a[6],a[9]);}A、169B、941C、961D、35723、若定义:floatx=3.14159,*p=&x;则printf("%f\n",*p++);的输出结果为__C__。A、无确定值B、x的地址C、3.14159D、4.1415924、以下程序的输出结果是___B__main(){charb[]="Language";char*p=b;printf("%c",*(b+2));p=p+7;printf("%c\n",*p++);}A、27B、neC、agD、nu25、下列程序的输出结果是___A__。#include"stdio.h"main(){inta[]={1,2,3,4,5,6,7,8,9,0},i,s,*p;p=a;s=0;for(i=0;i<=9;i++)s+=*p++;printf("%d\n",s);}A、45B、44C、0D、9二、判断题(每小题1分,共10分)1.语句int*point;中的point是指针变量名。(T)2.主函数和其它函数之间可以相互调用。(F)3.puts()和gets()函数只能输入或输出一个字符。(F)4.可以对字符型数组元素进行整体输入、输出。(T)5.do-while语句构成的循环不能用其他语句构成的循环来代替。(F)6.在一个函数内的复合语句中定义的变量可以在本函数范围内有效。(F)7.函数必须有返回值,否则不能使用函数。(F)8.for(;;);语句相当于while(1);语句。(T)9.C程序的执行总是从第一个定义的函数开始。(F)10.C语言中的关键字专门用作语言的特定成分,而不能作为一般标识符使用。(T)三、程序填空题(每空2分,共10分)1、下面程序完成判断某一个数m是否为素数,如果是则输出"misaprime!",否则就输出"misnotaprime!",请选择填空。main(){inti,m;scanf("m=%d",&m);for(i=2;i<m;i++){if(m%i==
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效广告代理合同模板
- 《JCR及其使用方法》课件
- 房屋抵押担保借款合同模板
- 洁净室施工培训
- 教育咨询师陌拜培训
- 12《坐井观天》公开课一等奖创新教学设计
- 二《荷塘月色》教学实录中职语文高教版2023-2024基础模块上册
- 9《复活》(节选)教学实录(逐字稿)统编版高中语文选择性必修上册
- 宴会员工礼仪培训
- 2023年电力和热力资金筹措计划书
- 小学生校园文明礼仪教育课件
- 电缆绝缘电阻测试记录表格模板
- 2022年工程勘察设计收费管理规定
- DB44∕T 858-2011 空调器高处作业安全规范
- 实验室十大危险操作和安全隐患
- 01第三届北京市大学生模拟法庭竞赛第一轮赛题B
- Pixhawk飞控快速使用指南
- 铝合金模板工程水电精确定位施工工艺
- 红色大气乘风破浪开拓未来年会PPT模板课件
- 顺丰快递公司视觉识别VI手册(清晰电子版)
- 家庭教育讲座必备(课堂PPT)
评论
0/150
提交评论