C语言复习摘要
一、数据类型:
基本类型(整型、实型、字符型、枚举类型),构造类型(数组、结构体、共用体)、指针类型、空类型。基本类型也叫简单类型,构造类型也叫复杂类型
二、标识符:
标识符只能由字母、下划线、数字构成,且必须以字母或下划线开头,且对字母的大小写敏感。
三、常量
1、整型常量,如:32,0x32,0X32,0x3f,0xea,8L,8l,067
2、实型常量,如:3.14,1e23,0.8E8,0.8E-8,0.8E+8
3、字符常量,如:‘a’,‘\n’, ‘\w’,‘\\’,‘\0’
4、字符串常量,如:“windows”,“a”,(其本质是一个地址常量,'a'和“a”的区别?)
5、地址常量,若有定义:int  k,a[10];char s[20];则:&k,a,s, NULL都是地址常量
6、符号常量,C语言中无符号常量,用宏定义实现,如:#define PAI    3.1415926
7、以下都是非法常量:0xfg,3.1e2.8,‘aw’,‘w\’,0x,068
四、表达式
表达式是C语言中的一个极其重要的概念,要点:先确定表达式的类型,再确定表达式的值的类型,最后确定表达式的值。
1、算术表达式(应注意变量类型的自动转换——原则:低级向高级转换):
(1)、整型表达式:参加运算的都是整型量,结果也是整型数。如(x为整形变量):x+20*9+3 (2)、实型表达式:参加运算的存在实型量,运算过程中先转换成实型,结果也是实型。如:x+20*9+3.0,x+20*9+sqrt(3)
2、赋值表达式:将赋值运算符“=”右边的值赋给左边的变量,其值为赋值后左边变量的值,类
型为左边变量的类型。如:x=3(注:若x为整型变量,则该表达式的结果类型为整型,若x 实型变量,则该表达式的结果类型为为实型)
3、逻辑表达式:用逻辑运算符(!,&&,||)连接的整型量,结果为整数(0或1)。逻辑表达式
可认为是整型表达式的一种特殊形式。如(注意其中用的是赋值运算符而不是比较运算符):((x=3)&&(y=0))
4、关系表达式:用关系运算符将两个表达式连接起来的式子,结果为整数(0或1)。如:
x>3,a>b,(a=3)>(b=5),(a>b)>(b>c)特别的,表达式
5>3>1 的值为多少(1还是0)?
5、强制类型表达式:用“(类型)”运算符使表达式的类型进行强制转换。如:(float)a
6、逗号表达式(也叫顺序表达式):形式为:
表达式1,表达式2,…,表达式n
顺序求出表达式1,表达式2,…,表达式n的值。其结果为表达式n(最后一个表达式)的值。如(假设有说明: int  x;则表达式(x=10,x*2,x+3)的值是多少?
7、条件表达式:形式为:
表达式0?表达式1:表达式2
若“表达式0”的值非零,则条件表达式的值等于“表达式1”的值。若“表达式0”的值为零,则条件表达式的值等于“表达式2”的值。如:设:int x=6则
(x>6)?(0?x+1:x-1):(10?2*x:x/2)的值为:12。
8、数学表达式转换为C语言表达式。注意其中的开平方,开立方的转换。
根号a一般使用sqrt(a),也可以使用pow(a,0,5)
a的立方根:pow(a, 1.0/3.0)
一般的:pow(x,y)表示求x的y次幂
五、自加、自减运算:
若有定义:int k=5;则:表达式:(k++)、(++k)、(k--)、(--k)有何区别?
六、控制结构:
1、选择控制:if,switch
2、循环控制:while,do while,for(不要使用goto)
七、预处理命令:
三种:头包含、宏定义、条件编译
#define 宏名字符串
#define 宏名(参数1,参数2,…,参数n)字符串
#include “文件名”(或<;文件名>)
#ifndef XXXX
...
#endif
#ifdef XXXXX
...
#endif
八、函数:
1、函数的定义、函数的原型说明
2、函数的调用:嵌套调用(特别是递归调用)
3、函数的形参类型(值传递、地址传递(c++中的传引用))
九、指针:
若有定义int *p;则p是一个地址变量,*p等效于一个整型变量。分析:
int a[3]={5,8,20},*p;p=a;则:*p++,(*p)++,++*p,*++p有何区别
注意:*,++,--这三种运算符号,优先级别一样,结合次序是从右向左
十、结构体:
结构体的定义、键盘(文件)输入、屏幕(文件)输出、结构体数组、使用malloc为结构体变量开辟内存空间
十一、文件:
使用文件的一般步骤是:打开文件—>操作文件—>关闭文件。文件分为文本文件(也叫ASCII文件)和二进制文件。
C语言复习练习题
注:以下练习仅是考试中可能出现的题型以及涉及到的部分算法,需弄懂解题方法,绝不可死记答案
一、填空题
1、执行int a=12;a+=a-=a*a 语句后a= ;
2、若int x=4;则表达式:x?(10?x+1:x-1):(0?2*x:x/2)的值为
3、写出表达式的值:
9+5/2 ;8+2<=9 ;8%3+6 ;!(3<2)||(8!=7);
3/9*180 ;5*‘d’;!!(8<9);(x=5*3,x*10,(x>100));
4、语句:n1=2;n2=++n1;n1=n2++;执行后,n1= ;n2= ;
5、若有定义:int a[6] ,*p=a;则p+3表示;*(p+3)表示;*p+3表示;
6、语句printf(“c:\\\\dos”)的输出结果是;
7、若有int x=3,y=13,z=2;执行语句z*=x-- +(++y)后,z的值是
8、写出下列表达式的求值结果
(1)3!=5 ;(2)1782%100*5 ;
(3)sizeof(long int);(4)2/4*(5+4);
(5)2 *‘e’;(6)!!(5>4);
(7)已知x=0,x?(0?x+1:x-1):(8?x+4:x/2);
9、若有int x=3,y=13,z=2;执行语句z*=x-- +(++y)后,z= ;
10、语句printf(“c:\\\\dos”)的输出结果是;
11、设有宏定义 #define MOD(x,y)  x%y
则执行下面语句的输出为。
int z,a=15,b=100;
z=MOD(b,a);
printf(“%d\n”,z);
12、C语言存储字符串时,用特殊的字符表示字符串的结束
13、定义C函数时,若函数没有返回值,则返回值类型应设为
14、语句:int a=5,*p=&a;*p+=2;printf(“%d%d”,a,*p);输出的值是
二、多项选择题
1、与语句if(a!=0)... 等效的语句是()。
(A)、if(!a)...;(B)、if(a)...;(C)、if(!a==0)...;(D)、if(a>0||a<0)
2、向磁盘上已有的文本文件添加字符串,文件打开的方式可以是()。
(A)、“r+”;(B)、“a”;(C)、“w+”;(D)、“a+”
3、若有定义int a[3][4];以下哪些是对该数组元素正确的描述()。
(A)、a[3][2];(B)、a[2][3];(C)、*(a+1);(D)、*(a[1]+1)
字符串常量中最大的是4、能正确计算5!(5的阶乘)的程序段是()。
(A)、 i=1;s=1;(B)、i=1;s=1;
while(i<=5)                        while(i<5)
{                                    {
s=s*i;                              s=s*i;
i++;                                i++;
};                                    };
(C)、i=1;s=1;(D)、i=1;s=1;
do{                                  do{
s=s*i;                                s=s*i;
i++;                                  i++;
}while(i<=5);                        }while(i<5);
5、若函数头文件已被正确的包含,以下能正确输入一个字符串的C程序有()。
A、char s[41];scanf(“%s”,s);
B、char str[41],*s;s=str;gets(s);
C、char *s;scanf(“%s”,s);
D、char *s;s=(char *)malloc(41);scanf(“%s”,s);
三、读程序,写出运行结果
1、main()
{  int i, j;
for (i=0;i<=3;i++)
{ for (j=0;j<=5;j++)
{  if (i==0|| j==0|| i==3|| j==5) printf (“*”);
else printf (“#”);
}
printf(“\n”);
}
}
2、当运行下面程序时,从键盘输入 book↙
books ↙
运行结果是;
char a1[80],a2[80],*s1=a1,*s2=a2;
gets(s1);gets(s2);
if(!strcmp(s1,s2)) printf(“*”);
else printf(“#”);
printf(“%d”,strlen(strcat(s1,s2)));
3、下面程序功能是求算式:xyz+yzz=532中x、y、z的值(其中xyz和yzz分别表示一个3位数)。void  main()
{  int x,y,z,i,result=532;
for(x=1;x<10;x++)
for(y=1;y<10;y++)
for(      ;;z++)
{ i=100*x+10*y+z+100*y+10*z+z;
if(    )
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。