上海市高等教育自学考试
计算机信息管理专业(大专段)
《高级语言程序设计(一)》实践性环节考核大纲
2005年修订
一、 考核目标
掌握C语言简短程序的编制、调试和运行方法的全过程。
二、 运行环境
硬件:IBM PC 386(或其兼容机)。
软件:DOS 3.3 以上版本支持下的Turbo C软件。
三、 考试方式
闭卷考核:
四、 考核时间:
1小时。
五、 考核范围
1、 能根据题目要求,正确地说明相应变量的各种数据类型。
例如,整型、实型、字符型及其数组、数组型、结构型、指针型和枚举型。
2、 能根据题目要求,正确地编写和应用教科书所涉及的运算符、表达式和指针变量。
例如,+,-,*,/,%,&(地址运算符),*(指针),>=,>,<,<=,==,!=,++,--,!,?:,=,+=,-=,*=,/=,&&,|| 等组合的表达式。
3、 能根据题目要求,正确地编写和应用其相应的输入语句。
例如,除了输入语句需正确以外,其输入的变量的类型必须是题目所要求的数据类型,否则作为错误处理。
4、 能根据题目要求,正确地编写和应用各种基本语句( if , if else, switch, = , while, do while, for, break, 等语句 );对于循环语句,还必须能正确应用双重循环。
例如,除了能遵照这些语句的格式正确编写以外,还能应用双重循环语句对二维数组进行处理。
5、 能根据题目要求,正确地用控制变量或指针变量将数据输入至一维数组或二维数组,并正确地引用一维数组或二维数组的元素,进行简单的统计和查询。
6、 能根据题目要求,正确地用控制变量或指针变量将数据输入至结构型变量或结构型数组,并正确地引用结构型变量的元素,进行简单的输入、输出、统计和查询。
7、 能根据题目要求,正确地定义函数的数据类型、形参的个数和数据类型;正确地编写函数并实现所需的功能,返回所要求的函数值;正确地调用函数的返回值。
8、 能根据题目要求,正确地定义文本文件;正确地读出、写入或删除文件的内容;两文件间复制。
9、 能根据题目要求,正确地编写和应用其相应的输出语句(包括输出格式字符串和输出表达式表)。
例如,能根据“精确到两位小数”的要求,正确地写出实数的输出语句;
能用双重for 语句编写程序,将二维数组按二维矩阵形式显示出来。
10、 掌握某些简单算法
(1)判断:某个数是否正负数及其数值范围,整数是否奇偶数;
(2)求整数的个位数(十位数、百位数、千位数或万位数)的值;
(3)两数之间比较大小、判相等或不等;
(4)判某个整数能否被另一个整数除尽,求两整数相整除的商和余数;
(5)判某个整数是否是其他两个整数的公约数或公倍数或乘积;
(6)判某个字符是否大写或小写英文字母、或数字字符、或某个特定的字符;
(7)将大写英文字母改为小写英文字母,或反之;
(8)从键盘输入数据至一维数组,或将它顺序(或逆序)显示出来;
(9)对数组进行数据处理:倒序排列,更改或删除某些数据,求最大值、最小值、总和及平均值,统计符合某些条件的成员个数, 大小英文字母互换;
(10)应用switch语句,对于输入值显示出其相应的字符串;
(11)根据键盘输入的行数(与列数),用双重for 语句显示出特定的图案。
例如,由键盘输入整数4和5来设定行数和列数,则显示出如下图案。
# # # # #
# # # # #
# # # # #
# # # # #
六、 例题
模拟题
(一)由键盘输入三个整数给变量a、b、c,若a与b 的乘积等于c ,则显示yes,否则显示no 。
程序调试成功后,选用 File 菜单的 write to 操作,键入a : N2005A1.C <Enter>,将你的程序存人考盘。
(二)由键盘输入一字符串至字符数组,而后将其中的大写英文字母改为小写英文字母,同时将其中的小写英文字母改写为大写英文字母,最后显示出更改后的字符串。
程序调试成功后,选用 File 菜单的 write to 操作,键入a : N2005A2.C <Enter>,将你的程序存人考盘。
(三)按如下要求编制程序:
(1)定义一个描述学生信息的结构型变量(包括学号(整型)和三门课程的成绩(整型));
(2)逐个输入三个学生的学号和三门课程的成绩;
(3)显示出其中总分最高的学生的学号、三门课程成绩和总分。
程序调试成功后,选用 File 菜单的 write to 操作,键入a : N2005A3.C <Enter>,将你的程序存人考盘。
七、 附件:常犯错误的部分例子(从历次考盘中汇总而来)
1、 题目是:由键盘输入两个实数,若两者相等则显示出该值(精确到两位小数)。
错误的答案是:
main()
{ int a, b; /* 题目要求是实型,不能擅自改成整型 */
scanf (" %d%d " , a, b ); /* a , b应为&a , &b */
if ( a = b ) printf (" %f \ n " , a ) ; /* = 应为 = = */
/* %f 应为 %0.2f ,因题目要求“精确到两位小数” */
}
2、 题目是:由键盘输入行数和列数分别给变量m和n ,而后显示类似如下的图案:
# # # # #
# # # # #
# # # # #
错误的答案是:
main{}
{int i , j , m = 3 , n = 5 ; /* 行数和列数不是预先设定的,应该用输入语句输入 */
for ( i = 0 , i < m , i + + ) ; /* ,应改为 ; */
for ( j = 0 ; j < n ; j + + ) ; /* ;应去掉,否则该for 语句执行的是空语句 */
printf ( " # " ) ; /* 上句和下句的 应分别加上 { 和 } */
priintf (" \n " ) ; /* 否则,只能显示一行 */
}
3、 题目是:由键盘输入一字符串至字符数组 c ,而后将其中的大写字母改为小写字母,同时将其中的小写字母也改为大写字母,最后显示出更改后的字符串。
错误的答案是:
main()
{int i =0 ;
char c[ ] ; /* 应定义字符串的长度,例如,80 */
scanf(" %s " , &c ) ; /* 字符串的输入只用数组名,不加地址运算符 */
while ( c[ i ] ! = ' \0 ' ) ; /* ;应去掉,否则循环体是空语句 */
{ if ( ' A ' < = c[ i ] && c [ i ] < = ' Z ' ) ; /* ;应去掉,否则执行的是空语句 */
c[ i ] += a – A ; /* a – A 应为 ' a ' – ' A' */
if ( ' a ' < = c[ i ] && c [ i ] < = ' z ' ) /* 应加 else , 否则大写字母 */
/* 改成小写字母之后又改回成大写字母 */
c[ i ] = c[ i ] + "A" – "a" ; /* 不是字符串,是字符。故应改为' A ' – ' a ' */
}
printf ( " %s \n " , c[ i ] ) ; /* 字符串输出应为 c,也不可用 &c */
}
4、 题目是:由键盘输入20个实数至数组f 中,显示它们的最大值、最小值及总和。
错误的答案是:
main()
{ float f [ 20 ] , max , min , sum ;
int i ;
for ( i = 0 ; i < 20 ; i + + )
scanf ( " %f " , &f ) ; /* 应为 &f[ i ] ,因是逐个元素输入 */
max = min = 0.0 ; /* 输入全是正数或全是负数时就会出错,故应为 f [ 0 ] */
sum = 0.0 ; /* 注意,若用sum = f [0 ], 则下一for语句的i = 0 应改为 i = 1 */
1 for ( i = 0 ; i < 20 ; i + + ) /* 为了使for 的循环体执行如下三个语句, */
2 if ( f [ i ] > max ) max = f [ i ] ; /* 2 3 应加 { }。不要误为 1 3 加{ }*/
if f [ i ] < min min = f [ i ] ; /* 应分别加上 ( ) */
sum += sum + f [ i ] ; 3 /* sum + 应去掉,因用+= ; 3 应加 } */
printf ( " max = %f min = %f sum = %f \n " , max , min , sum ) ;
}
附件下载:
《高级语言程序设计(一)》实践性环节考核大纲(2005)