第一篇:大一C语言易错点总结和模拟试题带答案(本站推荐)
易错点
C语言中易犯的错误
对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.****************************************************************************************
1.书写标识符时,忽略了大小写字母的区别.main(){ int a=5;printf(“%d”,A);}
编译程序把a和A认为是两个不同的变量名,而显示出错信息.C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量
名用大写,变量名用小写表示,以增加可读性.**************************************************************************************** 2.忽略了变量的类型,进行了不合法的运算.main(){ float a,b;printf(“%d”,a%b);}
%是求余运算,得到a/b的整余数.整型变量a和b可以进行求余
运算,而实型变量则不允许进行“求余”运算.****************************************************************************************
3.将字符常量与字符串常量混淆.char c;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.输入变量时忘记加地址运算符”&“.int a,b;
scanf(”%d%d“,a,b);
这是不合法的.Scanf函数的作用是:按照a,b在内存的地址将a,b的值存进去.”&a“指a在内存中的地址.**************************************************************************************** 8.输入数据的方式与要求不符.①scanf(”%d%d“,&a,&b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
3,4
输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车
键,跳格键tab.②scanf(”%d,%d“,&a,&b);
C规定:如果在”格式控制“字符串中除了格式说明以外还有其它
字符,则在输入数据时应输入与这些字符相同的字符.下面输入是
合法的:
3,4
此时不用逗号而用空格或其它字符是不对的.4 3:4
又如:
scanf(”a=%d,b=%d“,&a,&b);输入应如以下形式: a=3,b=4
****************************************************************************************
9.输入字符的格式与要求不一致.在用”%c“格式输入字符时,”空格字符
“和”转义字符“都作为 有效字符输入.scanf(”%c%c%c“,&c1,&c2,&c3);
如输入a b c
字符”a“送给c1,字符” “送给c2,字符”b“送给c3,因为%c
只要求读入一个字符,后面不需要用空格作为两个字符的间隔.****************************************************************************************
10.输入输出的数据类型与所用格式说明符不一致.例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf(”%f%dn“,a,b);
编译时不给出出错信息,但运行结果将与原意不符.这种错误尤其
需要注意.****************************************************************************************
11.输入数据时,企图规定精度.scanf(”%7.2f“,&a);
这样做是不合法的,输入数据时不能规定精度.**************************************************************************************** 12.switch语句中漏写break语句.例如:根据考试成绩的等级打印出百分制数段.switch(grade){ case 'A':printf(”85~100n“);case 'B':printf(”70~84n“);case 'C':printf(”60~69n“);case 'D':printf(”<60n“);default:printf(”errorn“);由于漏写了break语句,case只起标号的作用,而不起判断作用.因此,当grade值为A时,printf函数在执行完第一个语句后接着执
行第二,三,四,五个printf函数语句.正确写法应在每个分支后
再加上”break;“.例如
case 'C':printf(”60~69n“);break;**************************************************************************************** 13.忽视了while和do-while语句在细节上的区别.(1)main(){int a=0,I;scanf(”%d“,&I);while(I<=10){a=a+I;I++;} printf(”%d“,a);}(2)main(){int a=0,I;scanf(”%d“,&I);do {a=a+I;I++;}while(I<=10);printf(”%d“,a);} 可以看到,当输入I的值小于或等于10时,二者得到的结果相同.而当I>10时,二者结果就不同了.因为while循环是先判断后执行,而do-while循环是先执行后判断.对于大于10的数while循环一
次也不执行循环体,而do-while语句则要执行一次循环体.**************************************************************************************** 14.定义数组时误用变量.int n;scanf(”%d“,&n);int a[n];数组名后用方括号括起来的是常量表达式,可以包括常量和符号常
量.即C不允许对数组的大小作动态定义.**************************************************************************************** 15.在定义数组时,将定义的”元素个数“误认为是可使的最大下
标值.main(){static int a[10]={1,2,3,4,5,6,7,8,9,10};printf(”%d“,a[10]);} C语言规定:定义时用a[10],表示a数组有10个元素.其下标值由0 开始,所以数组元素a[10]是不存在的.**************************************************************************************** 16.初始化数组时,未使用静态存储.int a[3]={0,1,2};这样初始化数组是不对的.C语言规定只有静态存储(static)数组
和外部存储(exterm)数组才能初始化.应改为: static int a[3]={0,1,2};**************************************************************************************** 17.在不应加地址运算符&的位置加了地址运算符.scanf(”%s“,&str);C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&.应
改为:scanf(”%s“,str);**************************************************************************************** 18.同时定义了形参和函数中的局部变量.int max(x,y)int x,y,z;{z=x>y?x:y;return(z);} 形参应该在函数体外定义,而局部变量应该在函数体内定义.应改
为: int max(x,y)
int x,y;
{int z;
z=x>y?x:y;
return(z);}
试题一
一、单项选择题(共30分,每题1分)1.下列不正确的转义字符是A.B.‘ C.074 D. 2.不是C语言提供的合法关键字是A.switch B.cher C.case D.default 3.正确的标识符是()A.?a B.a=2 C.a.3 D.a_3 4.下列字符中属于键盘符号的是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:2
8.在以下一组运算符中,优先级最高的运算符是()
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.5 12.设a=1,b=2,c=3,d=4,则表达式:a
A.4 B.3 C.2 D.1
13.设a为整型变量,不能正确表达数学关系:10 A.10 C.a>10&&a<15 D.!(a<=10)&&!(a>=15) 14.若有以下定义:char a、int b、float c、double d,则表达式a*b+d-c值的类型为() A.float B.int C.char D.double 15.表达式“10!=9”的值是() A.true B.非零值 C.0 D.1 16.循环语句 for(x=0,y=0;(y!=123)||(x<4);x++);的循环执行() A.无限次 B.不确定次 C.4次 D.3次 17.在C语言中,下列说法中正确的是() A.不能使用“do while”的循环 B.“do while”的循环必须使用break语句退出循环 C.“do while”的循环中,当条件为非0时将结束循环 D.“do while”的循环中,当条件为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=B 19.设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.7 20.设有定义:char s[12]={“string”};则printf(“%dn”,strlen(s));的输出是() A.6 B.7 C.11 D.12 21.合法的数组定义是() A.int a[]={“string”}; B.int a[5]={0,1,2,3,4,5}; C.char a={“string”}; D.char a[]={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.6 25.执行语句“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.0 26.设a、b均为整型变量,下列表达式中不是赋值表达式的是() A.a=3,4,5 B.a=3*2 C.a=a&&b D.a=b=4 27.表达式“1?(0?3:2):(10?1:0)”的值为() A.3 B.2 C.1 D.0 28.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,则()是对数组元素地址的正确表示 int a[]={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 4.结构化程序设计方法规定程序或程序段的结构有三种:顺序结构、()和()。 5.C语言共提供了三种用于实现循环结构的流程控制语句,它们是()、()和()。 6.若在程序中用到“putchar”,应在程序开头写上包含命令 (),若在程序中用到“strlen()”函数时,应在程序开头写上包含命令()。 7.设有定义语句“static int a[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() { int a=10,b=4,c=3; if(a if(a 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() { int x,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() { static int a[][3]={9,7,5,3,1,2,4,6,8}; int i,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(“%dn%dn”,s1,s2);} 5.main() {static char a[]={‘*’,‘*’,‘*’,‘*’,‘*’}; int i,j,k; for(i=0;i<5;i++) {printf(“n”); for(j=0;j for(k=0;k<5;k++)printf(“%c”,a[k]); } } 6.int fac(int n) {static int f=1; f=f*n; return(f);} main() {int i; for(i=1;i<=5;i++) printf(“%d!=%dn”,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,1 2.#define 符号常量 常量 3.(x>20 && x<30)|| x<-100 4.分支结构,循环结果 5.while do for 6.#include “stdio.h” # include “string.h” 7.a[1][1]=0,a[2][1]=0 8.* 指针运算符,&地址运算符 9.分号; 10.复合语句 11.a=12,b=24,c=36 13.非0 三、读程序(30分) 1.结果:10,4,3 2.结果:8 5 2 3.6 4.18 10 5.***** 6.5!=120 四、编写程序(20分1.Main(){int x,y; scanf(“%d”,&x); if(x<=1)y=x;(x<=1)y=x; else if(x>1&&x<10)y=2*x-1; else y=3*x-11; printf(“x=%d,y=%dn”,x,y); }bsp; } 2.Main() {float E; int n; 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、void B、a3_b3 C、For D、2a define _123-abc DO WORD IF ase sizeof 4、假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__。A、4.500000 B、4 C、4.000000 D、2.000000 5、下列可以正确表示字符型常量的是___D__。A、297 B、”a“ C、”n“ D、't' 6、在C语言中,要求运算数必须是整型的运算符是__D__。A、/ B、++ C、*= D、% 7、C语言中,复合语句的构成是将一系列语句置于__C__。 A、begin与end之间 B、方框号“[ ]”之间 C、花括号“{ }”之间 D、圆括号“()”之间 8、有如下程序段,对应正确的数据输入是___A___。float x,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__。int a=5678;printf(”%2dn”, a);A、提示出错、无结果 B、56 C、78 D、5678 10、已知:char ch='A';则下列表达式的值是__B__。ch =(ch>='A'&&ch<='Z')?(ch+32): ch;A、A B、a C、Z D、z 11、下列描述,正确的是___B__。A、表达式3.91%5是合法的 B、用b=89作为while循环的条件是合法的 C、逗号表达式是没有值和类型的 D、字符型变量和int型变量的操作完全不同 12、阅读以下程序: main(){int x;scanf(”%d“,&x);if(x--<5)printf(”%d“,x);else printf(”%d“,x++);} 程序运行后,如果从键盘上输人5,则输出结果是__B__。{if(b>=10)break;A、3 B、4 if(b%3==1)C、5 D、6 13、下列程序的运行结果是___C__。#include ”stdio.h” main(){ int k;k=3;switch(k){ case 1: printf(”%dn”, k++);case 2: printf(”%dn”, k++);case 3: printf(”%dn”, k++);case 4: printf(”%dn”, k++);break;default: printf(”Full!n”);} } A、3 B、4 C、3 D、4 4 4 14、设a、b、c、d、m、n均为int型变量,且a= 5、b= 6、c= 7、d= 8、m= 2、n=1,则逻辑表达式(m==a 15、设x、y和temp均为long int型变量,则以下语句: {temp=x;x=y;y=temp;} 的功能是__D__。A、把x和y按从大到小排列 B、把x和y按从小到大排列 C、无确定结果 D、交换变量x和变量y的值 16、以下程序的输出结果是 ___A__。main(){int a, b;for(a=1, b=1;a<=100;a++){ b+=3;continue;} } printf(”%dn“,a);} A、4 B、6 C、5 D、101 17、执行以下程序后输出的结果是___D__。main() { int y=10;do {y--;} while(--y);printf(”%dn“,y--);} A、-B、1 C、8 D、0 18、执行以下程序后输出的结果是___B__。main() {int i, j, w=0;for(i=4;i;i--)for(j=1;j<=2;j++)w=w+i*j;w=i*j; printf(”%dn“,w);} A、4 B、0 C、1 D、30 19、以下程序运行后,输出结果是__C__。main(){ int n[5]={3,3,3},i,k=2;for(i=0;i n[i]=n[i]+1;printf(”%dn“,n[k]); } A、4 B、9 C、3 D、不确定的值 20、以下程序的输出结果是 __A__。f(int a) {int b=0;static int c = 3;b++;c++;return(a+b+c);C、3.14159 } main(){int a = 2, i;for(i=0;i<3;i++)printf(”%dn“,f(a));} A、7 B、7 C、7 D、7 8 7 9 7 21、设C程序如下: #define ABC(x)x*x #include”stdio.h“ main(){int a=3,b;b=ABC(a+1);printf(”b=%d“, b);} 上述程序运行输出的结果是__D_。A、b=4 B、b=a+1 C、b=16 D、b=7 22、以下程序的输出结果是__B__。main(){int i, a[10];for(i=9;i>=0;i--)a[i]=10-i;printf(”%d %d %d“,a[1],a[6],a[9]);} A、1 6 9 B、9 4 1 C、9 6 1 D、3 5 7 23、若定义:float x=3.14159,*p=&x;则printf(”%fn“,*p++);的输出结果为__C__。A、无确定值 B、x的地址 D、4.14159 24、以下程序的输出结果是___B__ main(){char b[]=”Language“;char *p=b;printf(”%c “,*(b+2));p=p+7;printf(”%cn“,*p++);} A、2 7 B、n e C、a g D、n u 25、下列程序的输出结果是___A__。#include ”stdio.h“ main(){ int a[]={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(”%dn“, s);} A、45 B、44 C、0 D、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是否为素数,如果是则输出”m is a prime!“,否则就输出”m is not a prime!“,请选择填空。main(){ int i, m;scanf(”m=%d“, &m);for(i=2;i 2、以下程序的功能是:求出用数字0至9组成没有重复数字且是13倍数的三位数的个数,请选择填空。#include i*100+j*10+k;if((5))count++;} printf(”n count=%dn“, count);}(3)、A、i=0 B、i=1 C、i=9 D、i=-1(4)、A、i!=j B、i!=j ||j!=k C、i!=j&& j!=k D、i!=j&& j!=k && k!=i(5)、A、w%13=0 B、w/13=0 C、w%13==0 D、w/13==0 四、编程题(第1小题12分,第2小题18分,共30分) 1、从键盘输入一个4位数的正整数n,将该数反序输出。例如,若输入的是 1357,则输出的是7531。 要求:1)利用VC++编译系统进行 调试、运行 2)对输入的正整数n的合法性进行检查 3)将源程序以“编程题 1.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分 2、已知一组字符串a[27]=”jjyyzzabcdefgJJYYZZABCDEFG";请编一程序,将其 中的小写字母换成其前一个字母,即z换成y,y换成x,...,b换成a,若是a则换成z。然后对数组a[27]从小到大排序,并输出排序后的字符串。 要求:1)利用VC++编译系统进行调试、运行 2)先输出原字符串(即未做任何改变的字符串),最后输出排序后 的字符串 3)将源程序以“编程题2.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分 易错点 C语言中易犯的错误 对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考.**************************************************************************************** 1.书写标识符时,忽略了大小写字母的区别.main(){ int a=5;printf(“%d”,A);} 编译程序把a和A认为是两个不同的变量名,而显示出错信息.C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量 名用大写,变量名用小写表示,以增加可读性.**************************************************************************************** 2.忽略了变量的类型,进行了不合法的运算.main(){ float a,b;printf(“%d”,a%b);} %是求余运算,得到a/b的整余数.整型变量a和b可以进行求余 运算,而实型变量则不允许进行“求余”运算.**************************************************************************************** 3.将字符常量与字符串常量混淆.char c;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.输入变量时忘记加地址运算符”&“.int a,b; scanf(”%d%d“,a,b); 这是不合法的.Scanf函数的作用是:按照a,b在内存的地址将a,b的值存进去.”&a“指a在内存中的地址.**************************************************************************************** 8.输入数据的方式与要求不符.①scanf(”%d%d“,&a,&b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车 键,跳格键tab.②scanf(”%d,%d“,&a,&b); C规定:如果在”格式控制“字符串中除了格式说明以外还有其它 字符,则在输入数据时应输入与这些字符相同的字符.下面输入是 合法的: 3,4 此时不用逗号而用空格或其它字符是不对的.4 3:4 又如: scanf(”a=%d,b=%d“,&a,&b);输入应如以下形式: a=3,b=4 **************************************************************************************** 9.输入字符的格式与要求不一致.在用”%c“格式输入字符时,”空格字符 “和”转义字符“都作为 有效字符输入.scanf(”%c%c%c“,&c1,&c2,&c3); 如输入a b c 字符”a“送给c1,字符” “送给c2,字符”b“送给c3,因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔.**************************************************************************************** 10.输入输出的数据类型与所用格式说明符不一致.例如,a已定义为整型,b定义为实型 a=3;b=4.5; printf(”%f%dn“,a,b); 编译时不给出出错信息,但运行结果将与原意不符.这种错误尤其 需要注意.**************************************************************************************** 11.输入数据时,企图规定精度.scanf(”%7.2f“,&a); 这样做是不合法的,输入数据时不能规定精度.**************************************************************************************** 12.switch语句中漏写break语句.例如:根据考试成绩的等级打印出百分制数段.switch(grade){ case 'A':printf(”85~100n“);case 'B':printf(”70~84n“);case 'C':printf(”60~69n“);case 'D':printf(”<60n“);default:printf(”errorn“);由于漏写了break语句,case只起标号的作用,而不起判断作用.因此,当grade值为A时,printf函数在执行完第一个语句后接着执 行第二,三,四,五个printf函数语句.正确写法应在每个分支后 再加上”break;“.例如 case 'C':printf(”60~69n“);break;**************************************************************************************** 13.忽视了while和do-while语句在细节上的区别.(1)main(){int a=0,I;scanf(”%d“,&I);while(I<=10){a=a+I;I++;} printf(”%d“,a);}(2)main(){int a=0,I;scanf(”%d“,&I);do {a=a+I;I++;}while(I<=10);printf(”%d“,a);} 可以看到,当输入I的值小于或等于10时,二者得到的结果相同.而当I>10时,二者结果就不同了.因为while循环是先判断后执行,而do-while循环是先执行后判断.对于大于10的数while循环一 次也不执行循环体,而do-while语句则要执行一次循环体.**************************************************************************************** 14.定义数组时误用变量.int n;scanf(”%d“,&n);int a[n];数组名后用方括号括起来的是常量表达式,可以包括常量和符号常 量.即C不允许对数组的大小作动态定义.**************************************************************************************** 15.在定义数组时,将定义的”元素个数“误认为是可使的最大下 标值.main(){static int a[10]={1,2,3,4,5,6,7,8,9,10};printf(”%d“,a[10]);} C语言规定:定义时用a[10],表示a数组有10个元素.其下标值由0 开始,所以数组元素a[10]是不存在的.**************************************************************************************** 16.初始化数组时,未使用静态存储.int a[3]={0,1,2};这样初始化数组是不对的.C语言规定只有静态存储(static)数组 和外部存储(exterm)数组才能初始化.应改为: static int a[3]={0,1,2};**************************************************************************************** 17.在不应加地址运算符&的位置加了地址运算符.scanf(”%s“,&str);C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&.应 改为:scanf(”%s“,str);**************************************************************************************** 18.同时定义了形参和函数中的局部变量.int max(x,y)int x,y,z;{z=x>y?x:y;return(z);} 形参应该在函数体外定义,而局部变量应该在函数体内定义.应改 为: int max(x,y) int x,y; {int z; z=x>y?x:y; return(z);} 试题一 一、单项选择题(共30分,每题1分)C1.下列不正确的转义字符是A.B.‘ C.074 D. 2.不是C语言提供的合法关键字是A.switch B.cher C.case D.default 3.正确的标识符是()A.?a B.a=2 C.a.3 D.a_3 4.下列字符中属于键盘符号的是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:2 8.在以下一组运算符中,优先级最高的运算符是() 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.5 12.设a=1,b=2,c=3,d=4,则表达式:a A.4 B.3 C.2 D.1 13.设a为整型变量,不能正确表达数学关系:10 A.10 C.a>10&&a<15 D.!(a<=10)&&!(a>=15) 14.若有以下定义:char a、int b、float c、double d,则表达式a*b+d-c值的类型为() A.float B.int C.char D.double 15.表达式“10!=9”的值是() A.true B.非零值 C.0 D.1 16.循环语句 for(x=0,y=0;(y!=123)||(x<4);x++);的循环执行() A.无限次 B.不确定次 C.4次 D.3次 17.在C语言中,下列说法中正确的是() A.不能使用“do while”的循环 B.“do while”的循环必须使用break语句退出循环 C.“do while”的循环中,当条件为非0时将结束循环 D.“do while”的循环中,当条件为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=B 19.设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.7 20.设有定义:char s[12]={“string”};则printf(“%dn”,strlen(s));的输出是() A.6 B.7 C.11 D.12 21.合法的数组定义是() A.int a[]={“string”}; B.int a[5]={0,1,2,3,4,5}; C.char a={“string”}; D.char a[]={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.6 25.执行语句“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.0 26.设a、b均为整型变量,下列表达式中不是赋值表达式的是() A.a=3,4,5 B.a=3*2 C.a=a&&b D.a=b=4 27.表达式“1?(0?3:2):(10?1:0)”的值为() A.3 B.2 C.1 D.0 28.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,则()是对数组元素地址的正确表示 int a[]={1,2,3,4,5},*p,i; p=a; A.& (a+i)B.&p C.a++ D.&p[i] 二、填空(20分,每空1分)1.在内存中存储“A”要占用(2)个字节,存储‘A’要占用(1)字节。2.符号常量的定义方法是(#define 符号常量 常量)。 3.能表述“20 4.结构化程序设计方法规定程序或程序段的结构有三种:顺序结构、(分支结构)和(循环结构)。 5.C语言共提供了三种用于实现循环结构的流程控制语句,它们是(while)、(do-while)和(for)。 6.若在程序中用到“putchar”,应在程序开头写上包含命令 (.#include “stdio.h”),若在程序中用到“strlen()”函数时,应在程序开头写上包含命令(# include “string.h”)。 7.设有定义语句“static int a[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);”,输入形式应为(a=12,b=24,c=36) 12.表达式“sqrt(s*(s-a)*(s-b)*(s-c));”对应的数学式子为() 13.C语言编绎系统在判断一个量是否为“真”时,以0代表“假”,以(非0)代表“真” 三、读程序(30分) 1.main() { int a=10,b=4,c=3; if(a if(a 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() { int x,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() { static int a[][3]={9,7,5,3,1,2,4,6,8}; int i,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(“%dn%dn”,s1,s2);} 5.main() {static char a[]={‘*’,‘*’,‘*’,‘*’,‘*’}; int i,j,k; for(i=0;i<5;i++) {printf(“n”); for(j=0;j for(k=0;k<5;k++)printf(“%c”,a[k]); } } 6.int fac(int n) {static int f=1; f=f*n; return(f);} main() {int i; for(i=1;i<=5;i++) printf(“%d!=%dn”,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,1 2.#define 符号常量 常量 3.(x>20 && x<30)|| x<-100 4.分支结构,循环结果 5.while do for 6.#include “stdio.h” # include “string.h” 7.a[1][1]=0,a[2][1]=0 8.* 指针运算符,&地址运算符 9.分号; 10.复合语句 11.a=12,b=24,c=36 13.非0 三、读程序(30分) 1.结果:10,4,3 2.结果:8 5 2 3.6 4.18 10 5.***** 6.5!=120 四、编写程序(20分1.Main(){int x,y; scanf(“%d”,&x); if(x<=1)y=x;(x<=1)y=x; else if(x>1&&x<10)y=2*x-1; else y=3*x-11; printf(“x=%d,y=%dn”,x,y); }bsp; } 2.Main() B、”a“ C、”n“ {float E; int n; 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、void B、a3_b3 C、For D、2a define _123-abc DO WORD IF ase sizeof 4、假定x和y为double型,则表达式(x=2,y=x+5/2)的值是__C__。 A、4.500000 B、4 C、4.000000 D、2.000000 5、下列可以正确表示字符型常量的是___D__。 A、297 D、't' 6、在C语言中,要求运算数必须是整 型的运算符是__D__。 A、/ B、++ C、*= D、% 7、C语言中,复合语句的构成是将一 系列语句置于__C__。A、begin与end之间 B、方框号“[ ]”之间 C、花括号“{ }”之间 D、圆括号“()”之间 8、有如下程序段,对应正确的数据输 入是___A___。 float x,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__。 int a=5678; printf(”%2dn”, a); A、提示出错、无结果 B、56 C、78 D、5678 10、已知:char ch='A';则下列表达 式的值是__B__。 ch =(ch>='A'&&ch<='Z')? (ch+32): ch; A、A B、a C、Z D、z 11、下列描述,正确的是___B__。 A、表达式3.91%5是合法的 B、用b=89作为while循环的条 件是合法的 C、逗号表达式是没有值和类型的 D、字符型变量和int型变量的操 作完全不同 12、阅读以下程序: main()B、把x和y按从小到大排列 {int x;C、无确定结果 scanf(”%d“,&x);D、交换变量x和变量y的值 if(x--<5)printf(”%d“,x); 16、以下程序的输出结果是 ___A__。else printf(”%d“,x++);main()} {int a, b;程序运行后,如果从键盘上输人5,for(a=1, b=1;a<=100;a++)则输出结果是__B__。{if(b>=10)break;A、3 B、4 if(b%3==1)C、5 D、6 13、下列程序的运行结果是___C__。#include ”stdio.h” main(){ int k;k=3;switch(k){ case 1: printf(”%dn”, k++);case 2: printf(”%dn”, k++);case 3: printf(”%dn”, k++);case 4: printf(”%dn”, k++);break;default: printf(”Full!n”);} } A、3 B、4 C、3 D、4 4 4 14、设a、b、c、d、m、n均为int型变量,且a= 5、b= 6、c= 7、d= 8、m= 2、n=1,则逻辑表达式(m==a 15、设x、y和temp均为long int型变量,则以下语句: {temp=x;x=y;y=temp;} 的功能是__D__。A、把x和y按从大到小排列 { b+=3;continue;} } printf(”%dn“,a);} A、4 B、6 C、5 D、101 17、执行以下程序后输出的结果是___D__。main() { int y=10;do {y--;} while(--y);printf(”%dn“,y--);} A、-B、1 C、8 D、0 18、执行以下程序后输出的结果是___B__。main() {int i, j, w=0;for(i=4;i;i--)for(j=1;j<=2;j++)w=w+i*j;w=i*j; printf(”%dn“,w);} A、4 B、0 C、1 D、30 19、以下程序运行后,输出结果是__C__。main(){ int n[5]={3,3,3},i,k=2;for(i=0;i n[i]=n[i]+1;printf(”%dn“,n[k]); } A、4 B、9 C、9 6 1 C、3 D、不确定的值 D、3 5 7 20、以下程序的输出结果是 __A__。 23、若定义:float x=3.14159,*p=&x;f(int a)则printf(”%fn“,*p++);的输出 {int b=0;结果为__C__。static int c = 3;A、无确定值 b++;c++;B、x的地址 return(a+b+c);C、3.14159 } main(){int a = 2, i;for(i=0;i<3;i++)printf(”%dn“,f(a));} A、7 B、7 C、7 D、7 8 7 9 7 21、设C程序如下: #define ABC(x)x*x #include”stdio.h“ main(){int a=3,b;b=ABC(a+1);printf(”b=%d“, b);} 上述程序运行输出的结果是__D_。A、b=4 B、b=a+1 C、b=16 D、b=7 22、以下程序的输出结果是__B__。main(){int i, a[10];for(i=9;i>=0;i--)a[i]=10-i;printf(”%d %d %d“,a[1],a[6],a[9]);} A、1 6 9 B、9 4 1 D、4.14159 24、以下程序的输出结果是___B__ main(){char b[]=”Language“;char *p=b;printf(”%c “,*(b+2));p=p+7;printf(”%cn“,*p++);} A、2 7 B、n e C、a g D、n u 25、下列程序的输出结果是___A__。#include ”stdio.h“ main(){ int a[]={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(”%dn“, s);} A、45 B、44 C、0 D、9 二、判断题(每小题1分,共10分)1.语句int *point;中的point是指针变量名。(T)2.主函数和其它函数之间可以相互调用。(F)3.puts()和gets()函数只能输入或输出一个字符。(F)4.可以对字符型数组元素进行整体输入、输出。(T)5.do-while语句构成的循环不能用数的三位数的个数,请选择填空。 其他语句构成的循环来代替。#include 三、程序填空题(每空2分,共10分) 1、下面程序完成判断某一个数m是否为素数,如果是则输出”m is a prime!“,否则就输出”m is not a prime!“,请选择填空。main(){ int i, m;scanf(”m=%d“, &m);for(i=2;i 2、以下程序的功能是:求出用数字0至9组成没有重复数字且是13倍 for(j=0;j<=9;j++)for(k=0;k<=9;k++) if((4)){ w = i*100+j*10+k;if((5))count++;} printf(”n count=%dn“, count);}(3)、A、i=0 B、i=1 C、i=9 D、i=-1(4)、A、i!=j B、i!=j ||j!=k C、i!=j&& j!=k D、i!=j&& j!=k && k!=i(5)、A、w%13=0 B、w/13=0 C、w%13==0 D、w/13==0 四、编程题(第1小题12分,第2小题18分,共30分) 1、从键盘输入一个4位数的正整数n,将该数反序输出。例如,若输入的是 1357,则输出的是7531。 要求:1)利用VC++编译系统进行 调试、运行 2)对输入的正整数n的合法性进行检查 3)将源程序以“编程题 1.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他 地方均不能得分 2、已知一组字符串a[27]=”jjyyzzabcdefgJJYYZZABCDEFG";请编一程序,将其 中的小写字母换成其前一个字母,即z换成y,y换成x,...,b换成a,若是a则换成z。然后对数组a[27]从小到大排序,并输出排序后的字符串。 要求:1)利用VC++编译系统进行调试、运行 2)先输出原字符串(即未做任何改变的字符串),最后输出排序后 的字符串 3)将源程序以“编程题2.c”为文件名保存在网络盘(K:盘)的考生文件夹上,用其它文件名保存或保存在其他地方均不能得分 附件一 2008~2009易错点总结 一、关于价格取定 1.改性沥青卷材的厚度,3厚时选SBS I PY PE3 GB 18242,4厚时选SBS I PY PE4 GB 18242。2.聚苯乙烯泡沫塑料板自熄性与挤塑聚苯板,两种材料注意“挤塑”两字,调价格时注意板厚,套用定额时注意安装部位(屋面、楼地面还是天棚)。 3.商品砼,把粒径号去掉(如“商品泵送混凝土 C20(20)”→“商品泵送混凝土 C20”(现浇现拌砼不去,非泵送商品砼软件中的工料机窗口中的材料名称“非”字加上)。4.泵送砼选择注意泵送高度(3-28换有梁式带形基础^泵送砼C25_20M以下→有梁式带形基础^泵送砼C25_0M以下)。 5.一般情况下,乳胶漆、外墙涂料调成品(注意调成品后单位是m2,看清油漆遍数)。6.铝合金门窗等调成品(门窗市场信息价含五金配件、玻璃及制作、运输安装)。7.综合毛砂,选择低价砂(图纸所示垫层及回填处用粗砂是有误的)。 8.综合人工按定额价判断是几类人工再按人工类别选择价格(见定额总说明及文件规定)。9.一般情况下,水泥选散装。10.水泥425#为水泥32.5级,(参见http://www.xiexiebang.com/news/ShowIt.aspx?TreeID=1325&ID=951)。11.94定额有些材料不调价差(见允许按实调整差价的材料品种)。12.信息价中油毡宽1米。13.轻钢龙骨以平米计。14.镀锌白铁皮即镀锌钢板。15.预算时同一时期信息价注意一致。16.水(椒江、黄岩、路桥三区不同)。17.副刊上的信息价需打折计入。 18.94市政,汽油(机具用)、柴油(机具用)、电(机具用),不调价内差。 二、关于取费 1.新颁布的各项规定的执行。2.检验试验费,装饰为0。 3.同一个工程项目在计取了缩短工期增加费后,不得再计取夜间施工增加费。4.建筑类别划分94与03不同。 三、关于套用定额 1.周长几米内的判断一下(如面砖300*300套周长1200内)。 2.水泥砂浆配合比及厚度不同需换算,砌筑砂浆注意是水泥砂浆还是混合砂浆(03定额,参见http://www.nbzj.net/homepage/about.php?category=100,94定额见定额(天棚不作换算))。3.砼强度等级换算。 4.综合土方定额、9-100混凝土台阶、9-92砼墙脚护坡等定额,综合了哪些内容(注意已经综合了的内容不要重算)。 5.注意定额计算单位是以m2还是以m3计(2-71人工铺装碎石底层厚5cm工程量以m2计;11-56混凝土檐沟抹水泥砂浆以m计)。 6.17-3建筑物垂直运输 檐高20m内,P264八(软件自动换算有误,需手动调整)。7.入岩增加费(岩石层的定义P26,二)。 8.未计价主材(2-92 桩木,见94定额P39,11-28)。9.16-1综合脚手架 檐高7m内~层高6m内→16-3(注意檐高)。 10.板材换算,有些板需注明厚度(红榉夹板,核对一下是否为橡木夹板;6-105彩钢夹心屋面板 厚75mm→6-104(图示为50mm))。 11.18-B25花岗岩磨边,人工、机械*1.30,见94定额P64注。12.沉降观测P104,13,不需另计。13.地面垫层不需模板。14.贴瓷砖处抹灰→11B-1。 15.构件运输需判断为几类构件,见P230。 16.除锈,见P238,工作内容,除锈刷防锈漆一遍及成品堆放。17.防锈漆注意刷几遍,构件制作中已含一遍,定额上P230,7。18.7-5→10-1(屋面处是找平层非保护层)。19.16-37→16-37*0.6(P248,10)。20.2-618铜芯电力电缆敷设,换算。21.挖桩承台土方系数。 22.2-137凿钻孔灌注桩桩头φ800mm以内,凿人工挖孔桩桩头时注意换算,见P64 注5。23.安装,需另计的主材:荧光灯管、灯泡、雨水斗。24.安装,刚套管套用定额见培训教材P122 二 6。25.参03定额时,人工定额单价改成16.5。 26.94定额,预制构件增值税,项目编号19-6,工程量为预制构件合价。27.市政2-193路面构造筋,分圆钢、螺纹钢套定额。 四、易漏项 1.雨篷、预制构件、楼梯的模板。 2.各种外加剂(掺10%UEA,掺5%防水剂,加10%建筑胶等)。 3.机械台班单独计算费用、脚手架等各种技术措施项目(3027转盘式钻孔桩机场外运输费P318,看清P310说明)。 4.散水处沥青砂浆嵌缝,屋面分仓缝、成品排气槽、上人孔。5.钢丝网、纤维布、刷界面剂,纯水泥浆一道,箱后防火隔板。6.花岗岩水簸箕。7.墙面分隔线。 8.雨篷处排水管(03定额,94定额不另计)。9.地面塘渣回填。10.闭水试验。11.地面防水涂料。12.外露铁件油漆。 13.市政道路中,模板、钢筋、路床整形。14.市政给排水中,松木桩。15.基础防潮层。 16.试桩等图纸角落里的文字描述项目。17.厨房、卫生间素砼带。18.窗台等压顶。 19.预制构件安装及其中的钢筋、03定额化粪池钢筋。20.盖板。 五、关于清单 1.项目特征(节点详图引用图集的可在项目特征中写上引用的图集;梁、板、柱的项目特征中注明层高(圈、过梁、GZ除外);雨篷见计价培训教材P83;010702003001屋面刚性防水“内配双向直径为4钢筋,中距150”,删除,细石砼土内的钢筋,按砼及钢筋砼工程另行计算,不出现在此项目特征中;挖土方清单中写上“运土及堆置处理”;门窗以樘计时要写明洞口尺寸)。 2.出现多个计算单位的,如“个;套”,选择一下单位;暂定价输入时不要忘记输入单位。3.项目编号有无重复(右击-清单重新编号)。 4.现浇构件、预制构件、桩钢筋笼钢筋分别分圆钢、螺纹钢列清单。5.注意定额计量单位与清单不同时。 六、关于软件 1.03定额工程“分解机械台班”前的“∨”去掉(软件默认“∨”已去掉)。2.修改了取费表后,需打印预览查看格式是否正确。3.是主要材料的设为主要材料。4.优惠费率优惠了否(加负号否)。 5.94品茗钢筋量差、价差设置(右击-钢筋量差|价差设置-输入量-确定)。6.结算工程,软件中工程预算书→工程结算书。7.工程量是0的检查一下是否属实,确为0,删除。 8.管理费率、利润率的设置(广达软件使用说明书P41设置综合单价公式)。9.注意工程量保留小数位数:t,三位,m2、m3、kg,两位。 10.2-103*2+2-101,这种多条定额进行合并做法有误,详见品茗帮助-索引- 四、多条定额进行合并。 11.超高施工增加费,工程量设置。 七、审核易忽略处 1.6-374非定型井砌筑及粉刷砖砌井矩型,实际可能没有安装铁梯,见94定额P347。2.11-49砖砌窨井,扣井盖否,实际深度不同,套用“每增减20cm”定额按比例进行调整,见94定额。3.取费程序按投标时。4.次要材料和机械费下浮。 5.点工的综合单价含义,一般情况下是设置成计税不计费的,但有例外(已含税金、规费),需查看合同专用条款等。 6.一般情况下,天棚有吊顶处无粉刷。7.材料是否甲供(扣除水、电)。8.土方运输运距,构件运输运距。 9.土方类别的判断,人工挖土还是机械挖土的判断。10.合同有无下浮。 11.批灰含在涂料中,不得重复计价。12.招标代理费设置成不计税不计费。 13.挖道路、化粪池等土方不能套用综合土方定额。14.砼,注意泵送OR非泵送,及合同等的规定。 15.法兰阀门安装,注意各种短管甲、乙,是否已另计了。16.机械以台班计与以小时计单价或不同。17.石碴二次利用(挖出多于回填时用负数计)。18.签证中的计算过程或源数据可能有误,需核。 八、关于工程量计算 1.GZ的马牙槎P101,5。 2.03定额钢筋工程量计算不需*1.02。3.油漆工程量计算见P168(注意系数)。 4.砼构筑物脚手架计算P249九(注意是基础顶面以上部分)。5.回填土计算应扣除各种井所占的体积。6.螺栓,工程量计算见P231 一、十。7.土方工程量计算规则定额与清单不同。 2018陕西中考重点及易错点108闯中考 1.二氧化碳使紫色石蕊变红是因为生成了碳酸,干燥的二氧化碳不能使石蕊试纸变红 2.一氧化碳和氧化铁反应条件是高温生成的二氧化碳不用加 ↑ 符号 3.乳浊液和悬浊液不是溶液 4.盐中不一定含金属元素(如铵盐) 5.不溶水和稀硝酸的白色沉淀是AgCl和BaSO4 6.物质在反应时,首先发生酸碱中和反应,其次是酸性物质与碱性物质反应,最后再是其他物质的反应 7.氧化物是有两种元素组成的(其中一种是氧元素) 8.硫磺淡黄色粉末、易燃、于空气中燃烧火焰为淡蓝色、纯氧为蓝紫色,并伴有刺鼻气体产生(SO2) 9.只能间接加热的仪器是--烧杯、烧瓶、锥形瓶(垫石棉网—受热均匀),试管加热其液面不超过其体积的1/3,固体加热试管口要略向下倾斜,左物右码,标签向手心,量筒天平0.1,俯仰读数要分清,蒸发操作要熟记 10.排水法收集到的气体较纯净 11.由同一种元素组成的物质不一定是单质,还有可能是混合物。如:金刚石和石墨、红磷和白磷、O2和O3 12.酸加碱生成盐加水,中和反应,但生成盐和水的不一定是酸和碱或中和反应 13.化学题解方程时,设时不带单位。但在解的过程中,有单位的反而要带单位。最后算出来的答案也要带单位。 14.‘’高温‘’条件要想到:C与CO2、C或CO与赤铁矿或磁铁矿、工业制CO2 15.空气的分子质量为29,若是气体的分子质量比空气小那么密度就比空气小反之则大 16.玻璃棒在实验中多种用途:引流、搅拌加速溶解、蘸取液体等 17.吸水性是物理性质,脱水性是化学性质。因为脱水性是因为夺去了其他物质中的氧,生成了新物质。 18.相对原子质量有单位,单位是1(好奇怪,一般它省略不写,但不代表没有)19.浓硫酸三大特性与浓盐酸性质一定要分清 20.高锰酸钾制氧气时要塞棉花,结束时先把仪器撤离水面,再熄灭酒精灯 21.难溶性碱例如:氢氧化铁,不能使无色酚酞变红 22.冰水共存物是纯净物,洁净的空气一定是混合物,纯净水是混合物,食盐是混合物 23.干冰不是冰,水银不是银,铅笔不是铅,纯碱不是碱 24.爆炸不一定是化学变化 25.干冰升华是物理变化,导电导热是物理变化,融化、溶解为物性,生锈和腐烂是化学变化,利用沸点不同分离气体(蒸馏)是物理变化,化变包物变 26.二氧化碳不是空气污染物 27.氧气不可燃但可助燃,CO/H2/CH4/不可助燃但可燃 28.不是所有生物都需要氧气,空气中氧气的浓度不是越高越好,不是任何时候大量呼吸纯氧气都有利于健康 29.铁丝在空气中不燃烧 30.实验现象描述不能说生成物成分,注意分辨烟与雾,光与火焰 31.空气成分指“体积分数”,不是“质量分数”,CO2含量低,不能使澄清石灰水变浑浊 32.O2测定考原理、现象、误差分析,改进措施 33.构成物质微粒有3种,由谁构成就由谁保持化学性质 34.一种元素可以组成混合物,但一定不可以组成化合物 35.原子是化学变化种的最小微粒,在化学变化中,分子可分,而原子不可分 36.同种分子构成的物质一定是纯净物,但由同种原子或同种元素组成的物质的物质不一定是纯净物 37.物质的分类概念区分 38.分子热胀冷缩不是因为分子体积变大,而是因为分子或原子之间的间隙变大 39.物质是由元素组成,分子是由原子构成,选择题时一定要注意说没说1个分子是由几个原子构成的 40.并不是所有的原子中都含有中子,四个等于要牢记,Mr≈质子数+中子数 41.原子的种类是由“质子数”决定的或元素之间的本质区别是“质子数不同” 42.最外层电子数决定物质的化学性质,最外层电子数相等,化学性质相似(稀有气体除外) 43.Fe2+和Fe3+ 其中2和3分别表示的含义,H2O中的2在描述时一定要注意说1个H2O分子中........44.元素不能论个数,只能论种类,熟记元素含量 45.大部分物质熔化体积变大,但水例外,冰熔化体积减小 46.C02、S02、H202中均没有02分子 47.食品和**的标签中标有X(元素符号)的含量,这个X指的是“元素”而不是原子,更不是单质 48.大部分金属单质常温常压下是固态,但汞是液态 49.地壳中含量最多的金属是铝而不是铁,铁是产量最高的金属 50.注意区分粒子、离子、分子和原子,粒子是后三者的合集,如:有两个电子层,外层8电子的粒子不一定就是Ne原子,也可能是02-、F-、Na+或Mg2+等 51.化合物中各元素化合价的代数和为0,原子团中,各元素化合价的代数和为 电荷数(注意正负) 52.氧一般为-2价,但过氧化氢中氧是-1价(注意氢不是+2价,为+1价) 53.多数气体单质是双原子的,而稀有气体都是单原子的;多数液体和固体单质是单原子的 54.催化剂在化学反应中,其“化学性质”不变,物理性质可能改变 55.化学变化中,元素和原子种类不变,但物质和分子的种类一定改变 56.通过实验验证质量守恒定律时,若是有气体参加或生成的反应须在密闭容器中进行,若在敞口容器中进行,则无论得到什么数据都不能验证质量守恒定律,也不能说化学变化前后质量不守恒 57.金刚石没有导电性但极其坚硬,石墨能导电但较软,二者属于不同物质,二者之间的变化是化学变化,金刚石和石墨物理性质相差很大是因为“碳原子的排列方式不同”,化学性质相似 58.常温下碳的化学性质稳定,但高温下碳可以与许多物质反应 59.CO2无毒,能溶于水但不是易溶于水,在探究CO2与NaOH反应时要注意用对照实验才能证明 60.一氧化碳中毒是化学变化,CO和CO2性质不同是因为其分子构成不同 61.二氧化碳使得紫色石蕊变红是因为生成了碳酸,这是一个可逆过程,干燥的二氧化碳不能使石蕊试纸变红 62.降温灭火时,可燃物的着火点不变,而是温度降到了着火点下 63.燃烧不一定需要氧气参与 64.某物质在氧气中充分燃烧生成二氧化碳和水能证明其中有碳元素和氢元素,但不能证明其中有氧元素 65.合金都是混合物,形成合金是物理变化,合金中可能有非金属,合金中元素都以单质存在,合金一定有金属性 66.紫铜是纯铜,青铜和黄铜都是铜的合金,生铁和钢都是铁的合金,其含碳量不同,生铁的含碳量高 67.钾钙钠可以与水反应生成相应金属的氢氧化物和氢气,将这些金属与酸溶液混合,金属先与水反应 68.溶液都是混合物 69.汽油可以除去油污是因为油污可溶于汽油,洗洁精可以除去油污是因为它可以乳化油污 70.气体、液体、固体均可以作为溶质,不溶于水的液体也可能可以溶解于其它液体,比如碘可以溶解于酒精 71.说溶解度的时候要注意三点:温度,单位,饱和 72.饱和溶液在恒温蒸发溶剂时,其溶质质量分数不变 73.溶液的浓稀与溶液是否饱和没有关系,在计算溶质质量时,一定要看清此物质是否能够完全溶解 74.显碱性的三个盐:碳酸钠、碳酸钾、碳酸氢钠 75.将石蕊加入酸中,是石蕊变红而不是酸变红 76.稀释浓硫酸不能将水倒入硫酸中,应将酸入水,沿容器壁缓缓倒下,同时不断搅拌,不可以用量筒稀释浓硫酸 77.浓盐酸在空气中生成“白雾”是因为浓盐酸有挥发性,是物理变化 78.氨水(NH3·H2O)是一种碱,在水中能电离出铵根离子和氢氧根离子 79.碱和非金属氧化物的反应不是复分解反应,金属氧化物和酸的反应是复分解反应 80.复分解反应发生的条件不仅是生成沉淀气体和水,而且要求反应物中“有酸酸可溶,无酸盐碱溶” 81.在初中阶段,所有生成碳酸的反应一律写为二氧化碳+水,不考虑二氧化碳溶解 82.活泼金属与酸、中和反应、氧化钙与水、强碱溶于水、浓硫酸稀释均放热,铵盐溶于水吸热 83.酸碱度和酸碱性是不同的,酸碱度指的是溶液的酸碱性强弱,酸碱性指的是溶液显酸性还是碱性,pH试纸测量的是酸碱度,指示剂显示的是酸碱性 84.酸碱中和反应的实质是氢离子和氢氧根离子反应生成水(H++OH-=H2O) 85.氯化钠在农业上的主要作用是“选种”,在生活中主要是做“调味品” 86.生理盐水是0.9%的食盐溶液,75%的酒精常用来消毒 87.重金属中毒时,要立即服用含有大量蛋白质的物质来解毒,因为重金属离子能够与蛋白质作用,使得蛋白质变性而丧失其生理功能而危及生命。 88.医疗上用X射线检查肠胃用硫酸钡不用碳酸钡的原因是碳酸钡可溶于酸产生使人中毒的Ba2+,而硫酸钡不溶于水,也不溶于胃酸(胃酸即HCl,注意不是H2SO4)89.加碘盐中加入的不是单质碘(碘单质有毒) 90.缺碘会导致甲状腺症,但是碘过量会导致人体不适,因此,即使是必需元素也有摄入量的问题,不足或过量都会影响人体健康 91.“聚氯乙烯”有毒,不可以作为食品包装袋,食品包装袋中常用的是“聚乙烯” 92.气体净化时,先除杂,再干燥 93.实验室制取气体后: 验满——均放在瓶口,检验——伸入瓶内 94.水蒸气:取样品冷却后与无水硫酸铜混合,硫酸铜变蓝 95.干燥剂:碱石灰(NaOH和CaO)不能用来干燥酸性气体,如二氧化碳 浓硫酸:不能干燥碱性气体,如NH3 96.与熟石灰混合研磨:若有刺激性气体放出则为铵态氮肥,注意NH3的检验要用“湿润”的红色石蕊试纸 97.化纤的鉴别: 羊毛是蛋白质的一种,其织物接近火焰时,先卷缩,燃烧时有燃烧毛发的焦臭味,燃烧后灰烬较多,为带有光泽的硬块,用手指一压缩就会成粉末;而化纤织物,如锦纶接近火焰时迅速卷缩,灰烬为灰褐色玻璃球状,结焦,不易破碎 98.鉴别黄铜和黄金:取样品加入稀盐酸,样品部分溶解且有气体放出的是黄铜,没有明显现象的是黄金 99.碱溶液和碱性溶液在考试时一定要看清,碱溶液PH一定大于7,PH大于7的不一定是碱,但一定是碱性溶液 100.图像题在做时,要从起点、拐点、终点判断,看清横纵坐标的含义 101.物质与“氧”发生的反应叫“氧化反应”,氧包括氧元素和含氧物质 102.最外层电子数为8的原子化学性质稳定,但化学性质稳定的原子最外层电子数不一定为8 103.煤的干馏是化学变化,蒸馏是物理变化 104.探究分子的运动,要注意盐酸和酚酞不能探究,必须满足要出现明显的现象,分子具有挥发性 105.实验探究题研究溶液的溶质成分时,要注意反应物是否过量来进行猜想,根据实验方案组合得出结论 106.描述实验现象时,一定要描述齐全,不要漏掉任何一个现象,特别是溶液中存在酚酞时,溶液酸碱性发生变化时也会导致溶液颜色的改变 107.质量守恒定律中“质量一定要为参加反应的反应物的质量” 108.在酸的通性中,不能体现其通性的是能够产生沉淀的一组实验 2011年计算机二级考试VB常见错误和难点分析 1.标点符号错误 在VB中只允许使用西文标点,任何中文标点符号在程序编译时产生“无效字符”错误,并在该行以红色字显示。用户在进入VB后不要使用中文标点符号。中、西文状态下标点号对照见下表所示。 中、西状态下标点符号对照 2.字母和数字形状相似 L的小写字母“l”和数字“1”形式几乎相同、O的小写字母“o”与数字“0”也难以区,这在输入代码时要十分注意,避免单独作为变量名使用。 3.对象名称(Name)属性写错 在窗体上创建的每个控件都有默认的名称,用于在程序中唯一地标识该控件对象。系统为每个创建的对象提供了默认的对象名,例如,Text1、Text2、Command1、Label1等。用户可以将属性窗口的(名称)属性改为自己所指定的可读性好的名称,如txtInput、txtOutput、cmdOk等。对初学者,由于程序较简单、控件对象使用较少,还是用默认的控件名较方便。 当程序中的对象名写错时,系统显示“要求对象”的信息,并对出错的语句以黄色背景。用户可以在代码窗口的“对象列表”框检查该窗体所使用的对象。 4.Name属性和Caption属性混淆 Name属性的值用于在程序中唯一地标识该控件对象,在窗体上不可见;而Caption属性的值是在窗体上显示的内容。 5.对象的属性名、方法名写错 当程序中对象的属性名、方法名写错时,VB系统会显示“方法或数据成员未找到”的信息。在编写程序代码时,尽量使用自动列出成员功能,即当用户在输入控件对象名和句点后,系统自动列出该控件对象在运行模式下可用的属性和方法,用户按空格键或双击鼠标即可,这样既可减少输入也可防止此类错误 6.变量名写错 用Dim声明的变量名,在后面的使用中表示同一变量而写错了变量名,VB编译时就认为是两个不同的变量。例如,下面程序段求1~100的和,结果放在Sum变量中: Dim sum As Integer,i As Integer Sum=0 For i =1 to 100 Sum=Sun+i Next i Print Sum 显示的结果为100。原因是累加和表达式Sum=Sun+i中的右边的变量名Sum写成Sun。VB对变量声明有两种方式,可以用变量声明语句显式声明,也可以用隐式声明,即不声明直接使用。上述变量名的写错,系统为两个不同的变量各自分配内存单元,造成计算结果不正确。因此,为防止此类错误产生,必须对变量声明采用限制其为显式声明方式,也就是在通用声明段加Option Explicit语句。 7.语句书写位置错 在VB中,除了在“通用声明”段利用Dim等对变量声明语句外,其他任何语句都应在事件过程中,否则运行时会显示“无效外部过程”的信息。若要对模块级变量进行初始化工作,则一般放在Form Load()事件过程中。 8.无意形成控件数组 若要在窗体上创建多个命令按钮,有些读者会先创建一个命令按钮控件,然后利用对该控件进行复制、粘贴,这时系统显示:已经有一个控件为“Command1”。创建一个控件数组吗?的信息,若单击“是”按钮,则系统创建了名称为Command1的控件数组。若要对该控件的 Click事件过程编程,系统显示的框架是: Private Sub Command1_Click(Index As Integer) End Sub Index表示控件数组的下标。 若非控件数组,Click事件过程的框架是: Private Sub Command1_Click() End Sub 请注意直到学习实验 数组前,一律不使用控件数组 9.Print方法中定位问题 定位通过Tab、Spc函数和最后的逗号、分号和无符号来控制。VB中通过Print方法中各参数的综合使用达到所需的结果,但初学者往往难以掌握。 (1)Tab(n)与Spc(n)的区别 Tab(n)从最左第1列开始算起定位于第n列,若当前打印位置已超过n列,则定位于下一行的第n列,这是常常定位不好出现的问题。在格式定位中,Tab用得最多。 Spc(n)从前一打印位置起空n个空格。例如,下面程序段显示了Tab与Spc的区别,效果如图所示。 Private Sub Commandl_Click() Print “1234567890”,Print Tab(1);”**“’;Tab(2);”%%%“;spc(2);”$$$$“ End Sub (2)紧凑格式”;“分号的使用 紧凑格式”;“,即输出项之间无间隔。但对于数值型,输出项之间系统自动空一列,而由于数值系统自动加符号位,因此,大于零的数值,实际空两列。对于字符型之间无空格。 例如,下面程序段,效果如图所示。 Private Sub Command1_Click() Print 1;-2;3 Print”1234“;”5678“ Print”A“;”B“;”C“;”D“,”E“,”F“ End Sub 从该例应区分数值和字符在紧凑格式输出的差异。 10.打开工程时找不到对应的文件 一般,一个再简单的应用程序也应由一个工程.vbp文件和一个窗体.frm文件组成。工程文件 记录该工程内的所有文件(窗体.frm文件、标准模块.bas文件、类模块.cls文件等)的名称和所存放在磁盘上的路径。 若在上机结束后,把文件复制到U盘上保存,但又少复制了某个文件,下次打开工程时就会显示”文件未找到“。也有在VB环境外,利用Windows资源管理器或DOS命令将窗体文件等改名,而工程文件内记录的还是原来的文件名,这样也会造成打开工程时显示”文件未找到“。解决此问题的方法:一是修改.vbp工程文件中的有关文件名;二是通过”工程“菜单的”添加窗体“中的”现存"选项,将改名后的窗体加入工程第二篇:大一上学期C语言期末复习总结和模拟试题带答案
第三篇:2008~2009易错点总结(最终版)
第四篇:2018中考易错点108总结
第五篇:VB易错点总结