复习大纲
?第1章C语言概述
1.了解C语言的特点、C程序的构成、开发过程
2.熟悉常用的关键字,掌握标识符的命名规则;
?第2章数据类型、运算符与表达式数据的描述规则与操作规则
1.掌握基本的数据类型的存储方式及特点;
2.掌握变量及常量的特点和区别,熟悉不同类型的常量;
3.掌握常用运算符的用法及其优先级和结合性;
?算术运算符及其表达式运算;
?赋值运算符及复合赋值运算符;
?自增和自减运算符;
?其他运算符:逗号;
?数据类型的转换和混合运算规则
?第3章顺序结构
1.输入输出函数及格式控制
2.顺序结构程序设计举例
?第4章选择结构
1.关系运算符、逻辑运算符和条件运算符及其表达式;
理解构成逻辑条件的判断表达式和条件语句的应用;
2.用if语句实现选择结构
掌握if 语句的形式和执行流程,if-else嵌套的表示与执行;
3.利用switch语句实现多分支选择结构
?第5章循环结构
1.理解两种循环结构,循环结构两要素:循环体和循环条件;
2.掌握三种循环语句的语句形式及流程,循环控制的方法;
3.掌握多重循环,即循环嵌套的应用;
4.掌握break和continue转向语句跳出循环的方法;
5.结构化程序的特点
6.控制结构的综合应用
?判断闰年,求方程根,数据排序,
?累乘累加,级数逼近,求公约数,
?判断素数,百鸡问题,字符图形
?第6章数组
1.理解数组存储特点,掌握一维数组和二维数组的定义、初始化和元素访问的方法;
2.理解数值数组和字符数组的区别
3.掌握向函数传递数组的方法,理解其实质;
4. 掌握数组的基本应用,如排序与查找算法。
?第7章函数
1.理解函数的概念,掌握各种类型函数的定义方法;
2.理解函数原型的作用,掌握函数的声明方法;
3.掌握函数的调用方法: 嵌套调用和递归调用;
4.掌握传递数据的不同方式:按值传递和按地址传递
5.理解各种变量的作用域与生命期的区别与特点:
自动和静态变量,全局变量和局部变量;
?第8章指针
1.理解地址和指针的概念,学会指针变量的定义和初始化方法;2.掌握指针运算符,学会用指针间接引用数据对象的方法;3.理解指针与数组的联系,熟悉用其操作数组及其元素的方法;4.掌握处理字符串的方法,使用并定义各种字符串函数理解字符数组和字符指针存储字符串的区别
5.理解指针数组的意义,掌握其应用方法;
6.理解二级指针和用指针处理二维数组的方法;
7.掌握动态申请内存的函数用法。
?第9章结构
1.理解结构体的特点,掌握结构体类型的定义方法;
2.掌握结构体类型变量的定义、初始化和使用方法;
3.掌握结构体类型数组的定义、初始化和使用方法;
4.理解结构体指针,向函数传递结构体对象的方法;
5.掌握单向链表的定义和基本操作方法。
? 考试时间100分钟,共100分
? 考试题型
一、 选择题(20分,10题 )基本概念,运行结果
二、 填空题(20分,4小题) 阅读程序,将其补充完整
三、 问答题(15分,3小题) 写出程序执行结果
四、 改错题(15分,3小题) 改正程序中的语法错误和逻辑错误
五、 编程题(30分,3小题) 程序设计
一、选择题(2分)
1 判断正确的c 关键字与c 标识符;
A .case
B .sizeOf
C .Do
D .swicth
2 数组与指针的定义与赋值,以下正确的语句是 。
A .char a[5]= “hello ” , p = “world ” ;
B .char a[10] =”hello ”, *p = “world!”;
C .char a[10],*p ; a=”hello ”; p = a;
D .int n=10; char a[n]=”hello ”, *p = a;
A .for
B .8f
C .h_1
D .a.cpp
A.char a[2][ ]={“hello”,”world”}, *p = a; B.char a[ ][5]={”hello”,”world”}, *p[5] = a; C.char a[ ][ ] ={”hello”,”world”}, **p = a; D.char a[2] [5] ={”hello”,”world”}, *p = a[0];
3表达式与运算符
下列程序的输出结果是:
int func(int a,int b)
{ int c=a+b;
return c;
}
void main()
{ int x=6, y=7,z=8,r;
r=func((x--,y--, x+y), z++);
printf(“%d\n”, r);
}
A.21
B.20
C.19
D.14
执行下列语句后,x的值为()。
Char x=?x?, y = …y?;
x-=(…y?!=?Y?)+ (5 > 3) +( y – x ==1);
A.1 B.3 C.?t? D. 以上答案均不是判断char 型变量是否为小写字母的正确表达式为()。A.?a? <= c <= …z?
B.(c>=a) && (c<=z)
C.(…a?>=c) || (…z?<=c)
D.(c>=?a?) && (c<=?z?)
5 字符串库函数,以下程序输出的结果为()
void main()
{ char a[20]=”country”;
char b[10]=”my”;
strcpy(a,b);
printf(“%d %s”, strlen(a));
}
A.20 my
B.7 myuntry
C.2 my
D.无法执行
5。下面程序输出的结果为()
#include
int sum ( int ap[ ] )
{ int m = 0 , i ;
for ( i = 0 ; i < sizeof(ap); i ++ )
m += *ap++ ;
return m;
}
void main( )
{ int a [ 10 ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ;
printf("sum =%d " , sum ( a )) ;
}
A.55 B. 65 C. 10 D.以上答案均不对8.下面不正确的描述为。
A.调用函数时,实参可以是表达式
B.调用函数时,实参与形参可以共用内存单元C.调用函数时,将为形参分配内存单元
D.调用函数时,实参与形参的类型必须一致
二、程序填空(20分)
1.
#include
int max_grade(int a[],int size); // 求数组最大值
int main( )
{ int grade[10]={90,89,56,78,76,87,65,67,92,88}; //数组初始化int index ; // 最大元素下标
①
printf("max = %d\n", grade[index]);
return 0;
}
int max_grade(int a[],int size)
{
int max=a[0],index = 0, i;
for ( i=1;i { if(a[i]>max) { ② ③ } } ④ } ①index = max_grade(grade,10) ; ②max=a[i]; ③index = i; ④return index; 3.下面程序的功能是:将无符号八进制数字字符串转换为十进制数,例如,输入的字符串是556,则输出的十进制整数为366。请填空。 (每空2分,2个共4分) #include int main() { char *p, s[6]; int n; p=s; gets(p); n=*p- '0' ; while(*(++p)!='\0') { n=n*8+*p-'0'; } printf("%d\n", n); return 0; } 三、程序改错(15分) // 去除数组中重复元素,并按从小到大顺序输出 void sort(int* a,int n) { int i, j,*p ; for ( i=0;i { for (j=i+1;j if (a[i]==a[j]) while(a[i]==a[n-1]) n--; swap(a[j],a[n-1]); // n--; } bublesort(a,n); for ( p=a ;a printf( " %d", *a ); } // 将数组中最大值与最小值分别置于第一个和最后元素位置void find(int a[] , int n) { int max=100, min=0; int n,m,i , j; for ( i=0;i if (*(a+i)>max) max=*(a+i); n=i; if (*(a+i) { min=*(a+i); m=i; } } swap( (a+n),(a+ n)); swap( *(a+m), *a); } 四.写出运行结果(15分) 五、程序设计题(30分) 1.编写函数,实现两个字符串的字符串比较 2.试编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。(10分)