您好,欢迎来到画鸵萌宠网。
搜索
您的当前位置:首页C语言期末考试复习资料

C语言期末考试复习资料

来源:画鸵萌宠网
C语言期末考试复习资料

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务