《C语言程序设计》课程重点、难点及例题分析
第一章
重点:
(1)算法的特性;(2)简单算法的设计;(3)c程序的基本结构。
难点:
算法设计以及表示方法是本章的难点。算法在程序设计中占有重要的地位,是程序设计的灵魂。算法设计师程序设计必不可少的步骤。结构化的程序设计方法在其中起着重要的作用。用结构化程序设计方法设计算法可使编写的程序结构清晰,易于调试和修改。算法的表示有流程图、N-S图、PAD图以及伪代码等,图形表示使得程序的控制结构清晰。伪代码不能在计算机上执行。
例题:
1.1 C语言源程序的最小单位是:
A.程序行
B.语句
C.函数
D.字符
【分析】程序行、语句和函数都是由字符构成的,字符是C语言最小单位。正确答案:【D】
1.2 C语言源程序文件的后缀是 ,经过编译后生成文件的后缀是 ,经过连接后生成的文件后缀是 。
【分析】文件的后缀即是文件的冠名,主要用来标示该文件的类型。C语言源程序文件的扩展命为”c”;经过编译后生成目标程序,其文件的扩展名为”obj”,目标程序必须经过连接生成可执行程序才能运行,其扩展名为”exe”,本题的答案分别是”c”、 ”obj”、 ”exe”。
第二章
重点:
(1)标示符的正确使用;(2)变量和常量的定义与应用;(3)C语言的各种基本数据类型及其标示方法;(4)C语言的各种运算符的优先级和结合性;(5)C语言表达式的运算以及计算过程的类型转换;
难点:
数据类型的概念;各种类型的数据在内存中的存储方式;运算符对运算对象类型的要求和限制,这涉及到运算对象类型的自动转换和牵制转换的概念;C语言表达式的运算,特别是自增/自减运算等。
例题:
2.1 不是C语言基本数据类型的是: 。
A.指针类型
B.整型
C.无符号长整型
D.单精度型
【分析】c语言的数据类型分为两大类,基本类型和构造类型。指针类型即不是基本类型也不是构造类型。正确答案:【A】
2.2 表达式!2+1>2&&15%5+2的值是:
A.0 B.1 C.2 D.3
【分析】本题是考核对运算符优先级的掌握程度,注意逻辑运算符“!”的优先级高于所有的算数运算符,而“&&”和“||”的优先级则低于所有的关系运算符。正确答案 :【A】
2.3 执行下面的程序断后,输出结果为:
int x=1,y=1,z=1;
x=x+++y+++z++;
printf(“%d,%d,%d”,x,++y,z++);
A.4,3,2
B.3,3,2
C.3,3,3
D.3,2,2
【分析】语句x=x+++y+++z++;可以改写成x=(x++)+(y++)+(z++),执行此语句后,得到结果x=4,y=2,z=2,在执行printf语句,注意printf语句中变量y是一个自增(前缀)运算,所以输出的y的值是3,变量z是一个后缀的自增运算,输出的z的值为2。正确答案:【A】
第三章
重点:
(1)顺序、选择、循环三种结构的设计与使用;(2)格式输入/输出函数的各种使用方法;(3)条件的表示方法与运算策略;(4)if 语句的执行过程:三种形式的if 语句的正确使用方法;(5)switch语句的流程控制;(6)分支嵌套的执行过程以及嵌套的使用;(7)循环语句while、do…while 、for的构成、区别与转换;(8)循环前套的执行过程与前套的使用;(9)break、continue、goto语句的使用方式。(9)
难点:
运用三种基本结构实现简单算法是本章的重点。因此下面的内容需要注意:格式输入/输出函数中的各种格式控制形式的变化与使用,例如精度的使用等;在构成选择条件时的逻辑表达式设置形式;if…else 语句的匹配原则(不以形式上相邻,而从最内层开始);if语句的嵌套;switch语句的嵌套以及switch语句break的正确使用;For 语句表达式的各种省略方式、处理方法;多重循环初始值的设置值与设置点; break、continue、goto三个语句的区别和联系。
例题:
3.1 已知:int x;float y;
c语言程序设计知识归纳语句scanf的调用格式为:scanf(“x=%d,y=%f”,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应当是( )。
A.x=10,y=66.6<回车> B. 10,66.6<回车>
C. 10<回车>66.6<回车> D. x=10<回车>y=66.6<回车>
【分析】本题考察的使scanf函数的输入格式,在scanf函数中,如果格式字符串中除了格式字符外还有其他字符,则在输入数据时,其他字符应原样输入。本题中格式字符中由” x=”、”,”、”y=”等字符,这些字符在输入时应原样输入。正确答案:A
3.2 下面程序的执行的结果为:
#include <stdio.h>
main()
{int x=5;
{int y=x,z;
int x=10;
z=x;
printf(“%d,%d,%d\n”,x,y,z);}
}
【分析】x在开始和后面的复合语句块中分别被定义,它们被赋予了不同的初值.在复合语句块中x等于5的值赋给了y,接着在重新定义x的同时将10赋给了它,所以z的值为10。
最后的输出结果为x=10,y=5,z=10。
3.3 下面程序的执行的结果为:
#include <stdio.h>
main()
{int a,b;
for (a=1,b=1;a<=100;a++)
{if (b>=20) break;
if (b%3= =1) {b+=3;
continue;}
b=-5; }
printf(“%d\n”,a);
}
【分析】for语句的表达式1是一个逗号表达式,这是for语句很有用的一个特性,可一次完成对多个变量的赋初值的功能,应学会使用。循环体中有一条break语句和一条 continue语句,分析程序时要注意它们的作用:当b>=20时,执行break语句直接跳出循环体而执行最后一条printf语句;当b%3= =1时,b+=3后,执行continue语句跳出此次循环,进行下一次循环处理。所以最后的输出结果为8。
3.4程序的功能是统计用0~9之间不同的三个数字构成一个三位数的个数。请填空。
#include <stdio.h>
main()
{int a,b,c,count;
for (a=1;a<9;a++)
for(b=0;b<=9;b++)
if( 【1】 ) continue;
for(c=0;c<=9;c++)
if ( 【2】 ) count++;
printf(“%d”,count);
}
【分析】构成三个数字不同的一个三位数的采用三重循环处理,百位上的数字的取值范围在1~9之间;十位数字和个位数字的取值范围是:0~9。不同的条件是百位、十位、个位上的数不能相等。正确答案: 【1】a= =b 【2】c!=a&&c!=b
第四章
重点:
(1)库函数的正确调用(头文件的正确包含);(2)函数的定义;(3)函数的声明与return语句使用;(4)函数的调用与参数传递原则(传值/传址);(5)函数的嵌套调用与递归调用;(6)变脸个存储类型及其特性。
难点:
函数定义、声明、调用三者之间的联系和区别;函数的调用(无值/带值);参数传递过程中传值与传址之间的区别与正确使用方法;递归函数的构建(条件及形式)和动态执行过程;不同函数中变量的适用范围;变量的生存期和作用域。递归和递推、迭代之间区别和联系。正确包含库函数的头文件,不同的库函数可能头文件不同;
例题:
4.1 以下函数值的类型是 。
fun( float x)
{ float y;
y=3*x-4;
return y;
}
【分析】本题考察函数返回值的应用。当使用return语句返回的值的类型与函数定义时规定的返回值类型不一致时,应意定义时的类型为准。将return语句返回时的值的类型转换为定义是规定的类型,定义函数时如果没有给出返回值的类型,则默认类型为int。所以正确答案应为int类型。
4.2 对于C语言的函数,下列说法正确的是:
A.函数的定义不能嵌套,但函数的调用可以嵌套。
B.函数的定义可以嵌套,但函数的调用不能嵌套。
C.函数的调用和定义都不能嵌套。
D.函数的定义和调用都可以嵌套
【分析】C语言不允许嵌套定义,但是允许嵌套调用。正确答案:【A】
4.3 下面程序的执行的结果为:
#include <stdio.h>
main()
{int x=2,p;
p=f(x,++x);
printf(“%d”,p);
}
int f(int a,int b)
{int c;
if(a>b) c=1;
elseif (a= =b) c=0;
else c=-1;
return(c);
}
【分析】在程序中的第四行有p=f(x,++x);语句,它的作用是将一个函数调用的结果赋给变量p中。在函数体f(a,b)中,a和b所对应的实参为2和3,通过函数体内的条件语句进行判断可知执行的是c=-1这条语句,所以返回值为-1。最后的输出结果为-1。
第五章
重点:
(1)一维数组的定义、引用和初始化;(2)二维数组的定义、引用和初始化;(3)字符数组(字符串)的定义、引用和初始化;(4)各类数组的存储方式;(5)字符串库函数的调用和使用。
难点:
利用数组解决实际问题。c语言的数组必须先定义后使用,不允许动态定义;对数组的存储方式按行存储的理解;二维数组初始化的不同形式;字符数组与字符串之间的关系,字符数组与字符串初始化的区别;字符串库函数的正确使用。
例题:
5.1 以下正确的数组定义为:
A.int a[1][3]={1,2,3,4};
B.float b[3][ ]={{1},{2},{3,4}};
C.long c[2][4]={{1},{2},{3},{1,2,3,4}};
D.double t[ ][2]={0};
【分析】如果二维数组在说明的同时进行初始化,则一维长度可以省略,但不允许省略二维长度,初始化的数据个数不允许超过二维数组定义的数组元素的个数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论