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”,(其赋值表达式和赋值语句中其本质是一个地址常量)
5、 地址常量,若有定义:int k,a[10];char s[20];则:&k,a,s,NULL都是地址常量
6、 符号常量,用宏定义实现,如:#define PAI 3.1415926
7、 以下都是非法常量:0xfg,3.1e2.8,‘aw’,‘w\\’,0x,068
四、 表达式(要点:先确定表达式的类型,再确定表达式的值的类型,最后确定表达式的值):
1、 算术表达式(应注意变量类型的自动转换——原则:低级向高级转换):
(1)、整型表达式:参加运算的都是整型量,结果也是整型数。如:x+20*9+3
(2)、实型表达式:参加运算的都是实型量,运算过程中先转换成double型,结果也是double型。如: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)
假设:int a=1,b=2,c=3; 则:(c>b>a)的值是 0
5、 强制类型表达式:用“(类型)”运算符使表达式的类型进行强制转换。如:(float)a
又如: (int *)
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语言表达式
五、 自加、自减运算:若有定义:int k=5;则:表达式:(k++)、(++k)、(k--)、(--k)有何区别?
六、 控制结构:
1、 选择控制:if,switch
2、 循环控制:while,do while,for(不要使用goto)
七、 预处理命令:
#define 宏名 字符串
#define 宏名(参数1,参数2,…,参数n) 字符串
#include “文件名”(或<文件名>)
八、 函数:
1、函数的定义、函数的原型说明
2、函数的调用:嵌套调用(特别是递归调用)
3、函数的形参类型(值传递、地址传递(c++中的传引用))
九、 指针:若有定义int *p;则p是一个地址变量,*p等效于一个整型变量。分析:
int a[3]={5,8,20},*p;p=a;则:*p++,(*p)++,++*p,*++p有何区别
注意:*,++,--这三种运算符号,优先级别一样,结合次序是从右向左
十、 链表:创建、释放、排序、追加节点、插入节点、
十一、 文件:使用文件的一般步骤是:打开文件—>操作文件—>关闭文件。文件分为文本文件(也叫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;prin
tf(“%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);
}
}
4、 若用0到9之间不同的3个数构成一个三位数,下面程序将统计共有多少不同的方法
void main()
{ int i,j,k,count=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
if( ) continue;
else for(k=0;k<=9;k++)
if( ) count++;
printf(“%d\\n”
,count);
}
5、 下面的程序是判断输入的字符串是否是“回文”
#include
#include
main()
{ char s[81],*p1,*p2;int n;
gets(s);
n=strlen(s);
p1=s;p2=s+n-1;
while( )
{
if(*p1!=*p2)break;
else{p1++; ;}
}
if(p1
else printf(“Yes\\n”);
}
6、 下面程序功能是找出100到1000以内的素数。
#include
void main()
{ int m,k,j;
for(m=100;m<=1000;m++)
{ k=sqrt(m);
for(j=2; ;j++)
if(m%j 0)break;
if(j>k)printf(“%5d”,m)
}
}
7、 下面程序的运行结果是 。
#include
void main(void)
{ int a=2,b=3,c;
c=a;
if(a>b) c=1;
else if(a==b) c=0;
else c=-1;
printf(“c=%d”,c);
}
8、 下面程序的运行结果是 。
#include
void main(void)
{ int a=40,b=5;
while(b { b=2*b; a=a+10; } printf(“a=%d,b=%d”,a,b); } 9、 下面程序的运行结果是 。 #include void main(void) { int i,j; for(i=1;i<=3;i++) { for(j=1;j<=3;j++) if((i==j)||(i+j==4)) printf(“*”); else printf(“ ”);//注:此处输出语句输出一个空格 printf(“\\n”); } } 10、 下面程序运行时,若输入: SWJTU↙,则输出结果是 。 #include void main(void) { char s[81],*p=s; gets(p); while(*++p); while (p--!=s) putchar(*p); } 11、 下面程序运行时,若输入一个整数:20,则输出结果是 。 #include int sub(int a) { return(a%2); } void main(void) { int a,e[10],c,i=0; scanf(“%d”,&a; while(a) { c=sub(a); a=a/2; e[i++]=c; } for(;i>0;i--) printf(“%d”,e[i-1]); } 12、 程序填空 1、 以下程序的功能是:找出1—100000中能被23整除的整数,要求按每行5个数的格式输出。 #include void main(void) { long int m,k=0L; for(m=1L;m<=100000L;m++) { if( ) { printf(“%10ld”,m); k++; if(k%5==0) ; } } } 2、 以下程序的功能是根据公式 e=1+1/1!+1/2!+1/3!+…求e的近似值,精度要求为最后一项的值小于10-6。 #include void main(void) { int i; double e,t; ; t=1.0; for(i=1; ;i++) { t*=(double)i;e+=(1.0/t);} printf(“e=%f\\n”,e); } 3、 设数组a包含10个整型元素。下面 程序的功能是将a中的元素反序放入数组b中,即将a[0] 赋给b[9],a[1] 赋给b[8]....,然后按每行3个元素输出数组b中元素的值。 #include void main(void) { int a[10],b[10],i ; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) ; for(i=0;i<10;i++) { printf(“%4d”,b[i]); if( ) printf(“\\n”);; } } 4、 函数Sort是对N元整型数组排序(从大到小)。 void Sort(int a[],int N) { int i,j, t; for(i=0;i for(j=i+1; ;j++) if(a[i] a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务