例。
以下选项中,可作为C语言合法表达式的是______________。
A.3.0%2B.3=2=1=0C.{3,2,1,0}D.(3,2,1,0)
例.表达式”3<2||-1&&!
0”的值是:
A.2B.1C.0D.-1
考点5:
赋值运算符和表达式
重点:
(1)优先级。
(2)左边必须是变量,不能是常量或表达式
例.if(a%2=1)b=a;错
例.已有声明“intn=12;doublea;”,则执行语句“a=n/=5;”后,a的值为________。
考点6:
逗号运算符
重点:
(1)逗号运算符的运算规则,整个表达式的值为最后一个表达式的值。
(2)比赋值运算符优先级要低。
例.假如a=1,b=1;
求c=a++,a+b;和c=(a++,a+b);后a,b,c的值。
例.已有声明“intt=1;”,则执行“printf("%d",(t+5,t++));”时输出的结果是___。
A.1B.6C.2D.7
考点7:
条件运算符
重点:
(1)优先级和运算次序。
例.已有声明“inta=3,b=4,c=5,d=0;”,执行语句
“printf("%d",d=a>b?
(a>c?
a:
b):
(b>c?
b:
c));”时输出____。
A.3B.4C.5D.0
考点8:
位运算
重点:
按位与&,或|,异或^,取反~,左移<<,右移>>,最近几年没有出现位运算题目。
第三章常用的函数
考点1:
scanf和getchar
Ø常用的格式控制符(d,u,c,x,o,f,lf,s)
Ø输入格式
例.已有声明“inta;charb;”,执行语句“scanf("%d%c",&a,&b);”时,若要求将整数2输入到变量a、将字符u输入到变量b,则以下输入形式中正确的是_______。
A.2uB.2uC.2,uD.2'u'
考点2:
printf和putchar
重点:
(1)区别
(2)printf语句输出格式控制符
例.已有声明“intx=0,*p=&x;”,以下语句中有语法错误的是________。
A.printf("%d",*x);B.printf("%d",&x);
C.printf("%d",*p);D.printf("%d",x);
例.如已有声明“chars[]="Hello",i;”,以下语句中,与“for(i=0;s[i];i++)putchar(s[i]);”的执行效果相同的是_______。
A.putchar(s);B.printf("%c",*s);
C.printf("%c",s);D.printf("Hello");
考点3:
puts
例.已有声明“staticchar*p="Apple";”,则执行语句“puts(p+2);”时输出为_______。
A.AppleB.CppleC.ppleD.ple
考点4:
字符串操作函数
重点:
(1)strcpy,strcat
(2)strcmp函数返回值情况
(3)strlwr,strupr
例。
charpl[80]="NanJing”,p2[20]="Young",*p3="Olympic";
strcpy(p1,strcat(p2,p3));
printf("%s\n”,p1);
执行该程序段后的输出是_______。
A.NanJingYoungOlympicB.YoungOlympic
C.OlympicD.NanJing
例.已知声明“char*s1="China",s2[10],*s3="Nanjing",*s4;”,以下字符串赋值语句在执行时可能出现错误的是____。
A.strcpy(s3,s1);B.strcpy(s4,s1);
C.strcpy(s2,s1);D.strcpy(s2,s3);
例.已有声明“inta;chars[80]=”123456”;”,执行语句“strcpy(s+4,"123456");a=strlen(s);”后变量a的值是。
例.已有声明“chars1[4],*s2="character";”,能实现“将s2指向的字符串中最后3个字符组成的子串复制到s1数组”功能的语句是____29____。
A.s1=s2+strlen(s2)-3;B.s1[0]=s2[strlen(s2)-3];
C.strcpy(s1[0],s2[strlen(s2)-3]);D.strcpy(s1,s2+strlen(s2)-3);
考点6:
数学及字符函数
需要掌握的数学函数包括:
1.intabs(intx)求整数的绝对值
2.doublefabs(doublex)求实数的绝对值
3.doublepow(doublex,doubley)求xy
4.doublesqrt(doublex)求平方根
需要掌握的字符函数包括:
1.intisalpha(intch)检查ch是否为字母,是字符返回为1,否则返回为0.
2.intisdigit(intch)检查ch是否为数字,是数字返回为1,否则返回为0.
3.其它islower,isupper,tolower,toupper
第四章C语言的流程控制
这是程序的基本,必须掌握。
考点1:
选择结构if和switch
重点:
(1)if语句的三种结构,if语句中的语句只有一条,可以是逗号语句。
(2)if语句的条件表达式可以是任意的合法C语言的表达式。
(3)else语句的配对问题。
(4)switch后的表达式只能是整型(字符)表达式(值)
(5)case后只能是整型或字符常量
例:
以下关于if语句和switch语句的叙述中错误的是___。
A.if语句和switch语句都可以实现算法的选择结构
B.if语句和switch语句都能实现多路(两路以上)选择
C.if语句可以嵌套使用
D.switch语句不能嵌套使用
例:
以下程序运行时,输出到屏幕的结果是______。
#include
voidmain()
{inta=0,b=1,d=10;
if(a)
if(b)
d=20;
else
d=30;
printf("%d\n",d);
}
例:
设有声明“inta=4,b=3,c=5;”,以下4个程序段中有3个程序段的执行效果是相同的,另一个执行效果不同的是________。
A.if(a>b)c=a,a=b,b=c;
B.if(a>b){c=a,a=b,b=c;}
C.if(a>b)c=a;a=b;b=c;
D.if(a>b){c=a;a=b;b=c;}
考点2:
循环结构
重点:
(1)三种循环的结构,while和do-while的区别
(2)理解循环嵌套的执行过程
例.如果一个循环结构的循环体至少要执行一遍,则最适合描述该循环结构的语句是________语句。
例.以下关于while语句和do-while语句的描述中,错误的是______。
A.while语句和do-while语句都可以使一段程序重复执行多遍
B.while语句和do-while语句都包含了控制循环的表达式
C.while语句和do-while语句都包含了循环体
D.while语句和do-while语句的循环体至少都会被执行一次
例.执行以下程序后的结果是_________。
#include
voidmain()
{intx=3;
do
{
printf("%d\t",x=x-3);
}while(!
x);
}
A.输出一个数:
0B.输出一个数:
3
C.输出2个数:
0和-3D.无限循环,反复输出数
例.2.以下程序运行时,输出到屏幕的结果是 ______。
#include
int main()
{ int a=6,b=15,t=a;
while (t%b!
=0)
t+=a;
printf("%d",t);
return 0;
}
考点3:
break和continue
重点:
(1)break功能,跳出switch语句和提前结束整个循环
(2)continue功能,提前结束本次循环。
例.除goto语句外,在循环结构中执行___
(1)___语句可提前结束本次循环直接进入下—次循环。
第五章函数*
考点1:
函数的定义、声明和调用
重点:
(1)定义:
类型标识符函数名(形参列表)
{声明语句},注意形参的写法
(2)调用:
函数名(实参列表)
注意实参的写法
(3)声明:
类型说明符函数名(类型形参1,类型形参2.。
。
。
。
。
)
类型说明符函数名(类型,类型,。
。
。
。
。
)
(4)形参和实参的关系
(5)一般变量,指针做函数参数的区别(必考)
(6)在上机改错题中,经常有函数头部改错,返回值类型,形参实参如何写。
例.以下程序运行时输出到屏幕的结果中第一行是(9),第二行是_(10)。
#include
intf(int*a)
{intb;
printf("%d\n",b=*a);
a++;
returnb+*a;
}
voidmain()
{inta[3]={2,3,4};
a[0]=f(&a[0]);
printf("%d\n",a[0]);
例.以下程序运行时,输出到屏幕的结果中第一行是___(8)___,第二行是___(9)___。
#include
voidfun(int*x,inty)
{x++,y++;
*x=y;
}
intmain()
{inta[2]={0};
fun(a,a[0]);
printf("%d\n%d",a[0],a[1]);
return0;
}
例.假定一个函数的头部为“char*func(intn)”,则该函数返回值的类型是24。
A.intB.int*C.charD.char*
例.已知fun函数的头部为“voidfun(intx[],intn)",main函数中有声明“inta[10]={1},b=10;",欲在main函数中调用fun函数,则以下调用语句中正确的是25。
A.fun(a,fun(a,b));B.fun(a[10],b);C.fun(a,a[0]);D.fun(b,a);
例.以下程序运行时,输出到屏幕的结果是(8)。
#include
intfun(intx,inty,intz)
{returnx*y*z;}
intmain()
{printf("%d",fun(1.5,2.5,3.5));
return0;
}
例.已有fun函数定义:
voidfun(intx[],intn)
{while(n>0)x[--n]++;}
若main函数中已声明“inta[6]={0};”,则以下main函数调用fun函数的语句中,正确的是____27____。
A.fun(a);B.fun(a,a);C.fun(a,1);D.fun(1,a);
例.已知main函数中有声明“inta=3,b=4;”,若在main函数中通过执行语句“swap(&a,&b);”交换a、b变量的值,则下列swap函数定义中正确的是____28____。
A.voidswap(intx,inty){intt;t=x;x=y;y=t;}
B.voidswap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}
C.voidswap(int*x,int*y){int*p;p=x;x=y;y=p;}
D.voidswap(int*x,int*y){int*p;p=*x;*x=*y;*y=p;}
上机改错题中中,如下错误:
intfun(charstr[],charpag[][])
{inti,k=0,j,flag=1;
。
。
。
。
。
。
。
。
。
。
。
。
}
主函数中调用出现的错误2012年
。
。
。
。
。
insert(string[]);
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
2011年秋(01)
if(allprime(j,a[]))
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
考点2:
递归函数调用(必考)*
重点:
递归函数的调用执行过程,一般出现在运行结果题目中。
例.以下程序运行时,输出到屏幕的结果中第一行是____(15)_____,第二行是_____(16)____。
#include
intfun1(intp[],intn)
{inti,s=0;
for(i=0;is+=p[i];
returns;
}
intfun2(int*s,intn)
{if(n==1)
return*s;
else
return(*s)+fun2(s+1,n-1);
}
voidmain()
{inta[]={1,2,3,4,5};
printf("%d\n%d",fun1(a,3),fun2(a,3));
例.以下程序运行时输出到屏幕的结果中第一行是_(14),第二行是(15)。
#include
voidfun1(int*x,intn)
{inti,t;
for(i=0;i{t=x[i];x[i]=x[n-1-i];x[n-1-i]=t;}
}
voidfun2(int*x,intn)
{intt;
if(n==1)return;
t=x[0];x[0]=x[n-1];x[n-1]=t;
fun2(x+1,n-2);
}
voidmain()
{inti,a[5]={1,2,3,4,5};
fun1(a,5);
for(i=0;i<5;i++)
printf("%d",a[i]);
printf("\n");
fun2(a,5);
for(i=0;i<5;i++)
printf("%d",a[i]);
}
考点3:
变量的作用域和存储类别*
重点:
(1)全局变量:
不在任何函数内定义的变量,从定义开始,下面所有函数能调用
(2)局部变量:
在函数内定义的或形参,只在函数内有效
(3)静态变量特征,重点掌握局部静态变量
(4)静态变量和动态变量区别(初值)
例.以下叙述中错误的是(27)。
A.函数外声明的变量是全局变量
B.函数内声明的变量是局部变量
C.局部变量的生存期总是与程序运行的时间相同
D.形式参数的生存期与所在函数被调用执行的时间相同
例.以下程序运行时输出到屏幕的结果中第一行是(7),第二行是_(8)。
#include
intfun(intx)
{staticinty=1,z=0;
y*=x;
z+=y;
returnz;
}
voidmain()
{intx;
for(x=1;x<3;x++)
printf("%d\n",fun(x));
}
例.以下叙述中错误的是(27)。
A.函数外声明的变量是全局变量
B.函数内声明的变量是局部变量
C.局部变量的生存期总是与程序运行的时间相同
D.形式参数的生存期与所在函数被调用执行的时间相同
第六章编译预处理
考点1:
无参数宏定义
重点:
(1)宏定义一般不加分号
(2)必须定义在函数之外
(3)编译之前的处理,不做语法检测,如果有错误,在编译过程中。
例.以下关于预处理命令的叙述中错误的是_________(21)______。
A.预处理命令由预处理程序解释
B.程序中的预处理命令是以#开始的
C.若在程序的一行中出现多条预处理命令,这些命令都是有效的
D.预处理命令既可以出现在函数定义的外部,也可以出现在函数体内部
例.某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是____(21)___。
A.#defineP3.14;B.