文章教程

全国计算机等级考试二级C语言真题汇编与专用题库五、程序设计题参考答案及解析

8/24/2020 9:04:40 PM 人评论 次浏览

五、程序设计题参考答案及解析

第1套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:求数组的最大值,需运用循环语句。因为数组是二维数组,所以应使用二层加for循环嵌套。使用for循环语句时需注意循环变量的取值范围。

【解题思路】

此类求最大值或最小值的问题,可以采用逐个比较的方式,将数组中的所有元素遍历一遍,从中找出数组的最大值或最小值。首先定义变量max,用来存放数组第一个元素的值,然后利用for循环逐个找出数组中的元素,并与 max比较,如果元素值大于 max,则将该值赋予 max,循环结束后, max的值即为数组的最大值,最后将该值返回。

【解题宝典】

该类题目考查较多,需要掌握逐个比较的方法。对于m×n二维数组,如果采用逐个查找方法,代码实现如下:

第2套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:迭代法求给定多项式的值。迭代法是让计算机对一组指令(或一定的步骤)进行重复执行。每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋初值操作。

【解题思路】

首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始,以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s表示求和后的结果。需注意 s1 和 s的初值都为1.0,因为循环变量从第二项开始累加。

第3套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:if语句,用来判断能被7整除或者能被11整除,但又不能同时被7 和11 整除的数,此处需充分理解“逻辑与”和“逻辑或”的区别;for循环语句的循环条件用来控制循环变量的取值范围。

【解题思路】

该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可,下面来看判断语句。题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数,能同时被7 和11 整除的整数一定能被77 整除,且不能被77 整除的数不一定就是能被7 或11 整除的数,因而可得出程序中的if语句。注意(i% 7==0||i% 11==0)两边必须要有小括号。

第4套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除字符串中所有*号,需用循环语句遍历字符串,用判断语句判断字符是否为*号,由此可以决定该程序应使用循环判断结构。

【解题思路】

用循环操作从字符串开始往后逐个进行比较,如果不是要删除的字符(用if(a[i]!= '*')来控制)就保留。变量i和j用来表示原字符串的下标和删除*号后新字符串的下标。注意,下标变量j要从0开始,最后还要加上字符串结束标识“\0”。

第5套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:不使用字符串函数实现字符串连接操作。通过for循环语句来完成,最后需加上字符串结束标识“\0”。

【解题思路】

本题用两个循环完成操作,第1个循环的作用是求出第1个字符串的长度,即将i指到第1个字符串的末尾;第2个循环的作用是将第2个字符串的字符连到第1个字符串的末尾;最后在第1个字符串的结尾加上字符串结束标识“\0”。

第6套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体类型成员运算;指向结构体类型的指针变量做函数参数。

【解题思路】

本题考查自定义形参的相关知识点,程序流程为:在fun函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a,此时,引用成员的方式可以使用指向运算符,即a->ave和a->s[i],也可用(*a).ave和(*a).s[i]。

第7套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:链表的操作,对链表的主要操作包括建立链表、结构的查找与输出、插入一个结点、删除一个结点。

【解题思路】

题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均数。遍历链表时应定义一个指向结点的指针p,因为头结点中没有数值,所以程序中让p直接指向头结点的下一个结点,使用语句“STREC *p=h->next;”。

第8套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:如何判断非素数;循环判断结构;数组的引用。

【解题思路】

题目要求将1~m之间的非素数存入数组中,应使用循环判断结构。循环语句用来遍历1~m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存入数组中。本题是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。

【解题宝典】

判定一个数是否为素数,即判断该数是否除了能被1和它本身整除外,不能被任何数整除。

代码实现如下:

此语句需要熟记,很多判断素数的题目可通过此法解决。

第9套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:for循环语句遍历字符串,并通过if条件语句判断字符串是否结束。

【解题思路】

从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不是“\0”,判断语句用来判断当前字符是否为指定字符,最后返回指定字符的个数。

第10套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:如何通过指针来计算平均分。

【解题思路】

本题较简单,只需用一个循环语句就可完成数组元素的求和,再将和除以课程数即可。需要注意的是本题对指针的操作,当指针变量指向一个数组时,用该指针变量引用数组元素,引用方式与数组的引用方式相同。例如,本题中a指向了score,所以通过a引用score中的元素时可以用下标法,也可以用指针运算法,a[i]和*(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为0。例如,若有“int cc[10],*p=cc+5;”,即p指向了cc的第5个元素,则p[0]的作用与cc[5]相同;p[3]的作用是取出从当前地址(即p所指地址)开始往后的第3个元素,它与cc[8]相同;p[-2]的作用是取出从当前地址开始往前的第2个元素,它与cc[3]相同,但不提倡使用负的下标。

【解题宝典】

计算平均分时,掌握以下语句。

第11套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。

【解题思路】

该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2 个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入结构体b中。

【解题宝典】

对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。如何对结构体数组进行类似的操作呢?

掌握以下语句:

第12套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:指针型变量定义;while循环语句;if语句条件表达式;字符串结束标识“\0”。

【解题思路】

函数fun的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。解答本题,首先定义一个临时指针p,初始指向原串首地址;其次利用循环语句把字符串前导*号复制到原串;然后继续移动指针,把串中和串尾的非*号字符复制到原串;最后为修改后的字符串赋结束字符“\0”。

【解题宝典】

要删除字符串中的指定字符,通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。

第13套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:for循环语句,注意循环变量取值范围以及循环体语句作用;数组元素初始化和赋值操作;if语句条件表达式,需注意条件表达式的逻辑运算;字符串结束标识‘\0’。

【解题思路】

要求统计在tt所指字符串中“a”~“z”这26个小写字母各自出现的次数,并依次放在pp所指数组中。首先使用for循环语句初始化pp数组中分别用来统计26个字母的个数,再使用循环判断语句对tt所指字符串中的字符进行逐一比较操作,同时存入相对应的pp数组中。

第14套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除字符串尾部的*号,删除的主要思想是把不删除的字符保留起来。

【解题思路】

对于一个字符串,要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号“\0”。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号“\0”。

第15套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:字符串长度比较运算,使用循环语句实现,注意其循环条件。

【解题思路】

本题中,第1个for循环的作用是求出s串的字符个数i,第2个for循环的作用是求出t串的字符个数j。因为任何循环都要控制一条语句,所以在每一个for循环语句后面加上一个分号,以结束循环。

第16套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体类型;字符串比较函数strcmP的应用。

【解题思路】

本程序先使结构体变量str中的学号为空串,成绩为-1。循环体的功能是搜索所有学生的学号,并判断是否有学号与b所指字符串相同(即找到)。若找到,则给str重新赋值(str=a[i]);若没找到,则str成员的值还是原有值(即未找到时学号返回空串,成绩返回-1)。

【解题宝典】

常见的字符串处理函数总结如下。

第17套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:循环判断结构;字符串的操作;逻辑运算符的使用。

【解题思路】

本题要求删除除了下标为偶数同时ASCII码值也为偶数的字符,即保留下标为偶数同时ASCII码值也为偶数的字符。循环语句用于遍历字符串,条件语句用于判断当前字符是否符合要求。注意判断条件是下标为偶数,同时ASCII码值也为偶数,所以应使用逻辑与“&&”运算符。

第18套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:迭代法求方程的实根;do…while循环语句,其形式如下。

do{

语句

}while(表达式);

do…while循环与while循环的不同之处在于,前者先执行循环中的语句,然后判断表达式是否为真。如果为真,则继续循环;如果为假,则终止循环。因此,do…while循环至少执行一次循环语句。

【解题思路】

用迭代法求方程的一个实根,题目已经给出了算法,只要按照算法用合适的程序表达就可以解题了。

第19套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:移动字符串中指定字符的位置,一般采用while循环语句,通过指针型变量来完成。

【解题思路】

首先定义一个指针并指向字符串的首地址;其次利用循环语句找出字符串的前导*号的个数n;然后利用循环语句把剩余的字符复制到另一个字符串中;最后在字符串的末尾接上n个*号。

第20套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体数组中最小数据的查找,需要通过for循环语句和if条件语句来完成。

【解题思路】

本题中第1个循环语句的作用是遍历数组,找出最低分数,第2个循环语句的作用是将数组中的元素与最低分进行比较,查找是否存在与最低分相等的成绩记录。

第21套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:计算表达式的值运用for循环语句通过累加操作求和;平方根函数sqrt的使用。

【解题思路】

首先计算从1~m各数的对数的和,因此循环变量的范围是1~m,每次循环都进行一次累加求和。该题需要注意的是,log函数的形式参数应当为double型变量,而用于循环的基数变量为整数,需要进行强制转换。在返回的时候求出平方根。

第22套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除字符串前导*号和尾部*号,其主要思想是把不删除的字符保留起来。

【解题思路】

由于程序已经给出前导*号和尾部*号的个数,所以只要用循环语句将中间的字符保留起来。注意循环变量i的初值h和终止值n-e,由于h和e分别表示a中的前导*号和尾部*号的个数,n是字符串的长度,所以从a[h]到a[n-e-1]之间的所有字符都要保留。循环结束后在新串的尾

部加上字符串结束标记符‘\0’。

【解题宝典】

解题技巧:

a[n-e]的作用是在最后一个字母后加上字符串结束符‘\0’。本程序采用了strcpy库函数。

第23套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除字符串中指定字符,采用保留非指定字符的方法操作。

【解题思路】

本题使用了一种i永远是奇数的循环方法,即“for(i=1;i<k;i=i+2)”,因为开始时i的值为1,当i+2循环时,值永远是奇数。循环结束后在新串的尾部加上结束符‘\0’。

第24套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:如何取出数n的各个位数值;知道数n的各个位数值,又如何表示该数;指针型变量的使用。

【解题思路】

本题的主要问题在于如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数(a/10),分别用10 对它们求余可得到它们的个位数(a% 10)。得到后对应乘以1000、100、10、1就可得到c的千位数、百位数、十位数和个位数。注意使用c时要进行指针运算。

第25套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除字符串中非尾部*号,删除的主要思想是把不删除的字符保留起来。

【解题思路】

本题用两个循环语句来实现。第1个循环的作用是将指针p所指字母以前所有非*号的字符保留下来,即删除指针p以前所有的*号;第2个循环的作用是将指针p以后的所有*号保留下来。最后在新串的结尾加上结束符。

第26套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:排序算法;结构体类型。

【解题思路】

对N个数进行排序的算法很多,其中最简单的排序算法是冒泡算法。利用双层for循环嵌套和一个if判断语句来实现,外层循环用来控制需比较的轮数,内层循环用来控制两两比较。

【解题宝典】

冒泡法算法思路:如果有N个数,则要进行N-1 次比较,在每一次比较中要进行N-1次两两比较(这种算法较好理解但不是最好的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较,并将其中较大的数放在前或在后(若要求从小到大排序,则大的数要放在后面,反之对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,第1轮比较结束后,最大(或最小)数肯定在最后,第2轮比较结束后,次最大(或次最小)数肯定在倒数第2个,依此类推。所以进行第1轮比较时必须比较到最后一个数,而进行第2轮比较时只要比较到倒数第2个数,进行第i轮比较时只需比较到第N-i-1个数即可(这种算法较难理解,但它是最好的)。

选择法算法思路:如果有N个数,则从头到倒数第2个数逐个向后移动,每移动1个数总是对其后面的所有数进行搜索,并找出它们的最大(或最小)数,然后与该数进行比较,若大于(或小于)该数则进行交换,交换后再移动到下一个数,依次交换到结束。此外,选择法还可用如下思路:如果有N个数,则从头到倒数第2个数逐个移动,每移动一个数总是将这个数与其后的所有数进行两两比较,在比较时按顺序将进行比较的这两个数排序(即交换)。

插入法算法思路:先对前两个数进行排序。然后把第3个数插入到前两个数中,插入后前3个数依然有序;再把第4个数插入到前3个数中,插入后前4个数依然有序;依次插完所有的数。具体执行方式(假设从小到大排序):从第2个数开始往后逐个走动直到最后,每走动1 个数总是将该数(先将其存到1个临时变量中)与前面的数进行比较(比较的顺序总是从后往前进行),在比较时只要发现该数比被比较的数小,就将被比较的数往后移1位,然后再与前1个数进行比较,直到发现该数比被比较的数大或已比较到头(即第1个数的前面),并将该数存入当前被比较数的后1位(存储空间)。

例如,整型一维数组a中有N个元素,要求将其按从小到大排序。注意元素下标是从0开始的。

冒泡法:

选择法:

插入法:

第27套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体类型;for循环语句和if条件语句。

【解题思路】

本题中第1个循环的作用是求出所有分数的总和,然后进行“av=av/N;”的运算得到平均值;第2 个循环的作用是将大于等于平均分的学生存入b所指存储单元中。注意同一结构体变量之间可以互相赋值。

本程序中直接用*n来表示b的下标,注意开始时要给*n赋初值0,且使用时不能少*号,因为单独的n是一个指针变量,而要用的是它所指向的存储单元中的值。

第28套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:整除的判定方法;if语句条件表达式中“逻辑与”和“逻辑或”的区别;for循环语句;一维数组的定义与引用。

【解题思路】

本题应使用循环判断语句实现,首先要确定循环变量的取值范围,题且要求找到1~m之间符合要求的数,所以循环变量的取值范围为1~m。if条件语句用来对每一个数进行判断,注意题目要求能被7或11整除,因此条件表达式中应使用逻辑或“||”运算符。

【解题宝典】

整除用求余运算来实现。

某数值n如果能被数值 m1 或 m2 整除,则代码实现如下:

if(n% m1==0||n% m2==0)

某数值n如果能被数值 m1 和 m2 整除,则代码实现如下:

if(n% m1==0&&n% m2==0)

第29套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:要删除字符串中的指定字符,一般采用的方法是保留不删除的字符;字符串结束标识‘\0’。

【解题思路】

在此提供另一种解答方法。

第30套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体类型;指针型变量;链表的相关知识。

【解题思路】

本题使用循环语句遍历链表中的每个结点,用判断语句比较结点数据域的大小。

注意:h是一个指向结构体类型的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符“->”。

第31套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:查找一维数组中的最大值及其下标,使用循环判断结构实现;指针变量的应用。

【解题思路】

查找最大值及其下标需要定义两个变量,该程序直接使用形参max和d,由于它们都是指针变量,所以在引用它所指向的变量时要对它进行指针运算。循环语句用来遍历数组元素,条件语句用来判断该数组元素是否最大。

【解题宝典】

该程序考查求最大值,需要掌握以下语句。

第32套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除指定字符串中下标为偶数和ASCII码值为偶数的字符,即把字符串中下标为奇数和ASCII码为奇数的字符保留;奇数的判定。

【解题思路】

本题要求除了下标为奇数同时ASCII码值也为奇数的字符,其余的所有字符都删除,即要留下下标为奇数同时ASCII码值也为奇数的字符。所以if的条件语句应为:if(i% 2!=0&&s[i]%2!=0)。

第33套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:矩阵的操作;如何表示矩阵及其转置矩阵的各个元素。

【解题思路】

行列数相等的二维数组的转置就是行列互换,即转置后的第i行第j列正好对应原矩阵的第j行第i列。本题使用双层循环实现矩阵的转置,并将计算结果存入矩阵b中,外层循环控制矩阵的行下标,内层循环控制矩阵的列下标。

【解题宝典】

若要将矩阵a转置后还存入a中,可用以下程序。

注意第2个循环的初值。

若要将矩阵a转置后存入矩阵c中,可用以下程序。

注意数组c和a的下标。

第34套 程序设计题参考答案及解析

【参考答案】

【解题思路】

题目要求实现将二维数组元素存入一维数组,需使用for循环语句来控制二维数组元素的下标,同时使用指针变量配合操作。

可以用两个循环来处理问题,由于是按列的顺序取出,所以第1个循环用于控制列下标,第2 个循环用于控制行下标。

第35套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:如何取出数值n的各个位数值;知道数n的各个位数值,又如何表示该数;指针型变量的使用。

【解题思路】

本题主要的问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。得到后对应乘以1000、100、10、1即可得到c的千位数、百位数、十位数和个位数。注意使用c时要进行指针运算。

第36套 程序设计题参考答案及解析

【参考答案】

【解题思路】

本题考查:字符串连接操作。本程序中第1 个for循环的作用是对二维数组行的控制,第2个循环的作用是从同一行中取出字符并存放到一维数组b中,语句是b[k++]=a [i][j];。

第37套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:删除字符串中指定字符,一般采用保留非指定字符的方法。

【解题思路】

本题要求删除字符串中指定下标的字符,即把非指定下标的字符保留,所以if语句条件表达式的内容是if(i!=n)。字符串最后不要忘记加上字符串结束标识‘\0’。

第38套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:一维数组的应用。

【解题思路】

本题要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后,可以根据输入的p值,通过for循环语句,将p+1~n-1(含n-1)之间的数组元素依次向前移动p+1个存储单元,即w[j-1]=w[j];,同时将0~p个数组元素逐一赋给数组w[n-1],也就是通过语句w[n-1]=ch;来实现此操作的。

第39套 程序设计题参考答案及解析

【参考答案】

【解题思路】

看到程序后,很容易便能想到用循环嵌套的方法,本题中按列的顺序依次放到一个字符串中,所以列标变化慢,行标变化快。

注意:第1个循环条件为i<N(即列);第2个循环条件为j<M(即行),因为在循环的嵌套中越在内层,循环变化就越快。

第40套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:给定表达式值的计算,注意变量数据类型及强制转换操作;for循环语句;return语句。

【解题思路】

此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。

本题中表达式的规律是1+2+…+n的倒数之和,那么可以通过for循环语句来实现第1项到第n项的变化。其实就是累加算法,方法是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,因为该变量的作用是累加器,所以初始值应为0(或0.0,根据变量数据类型来确定),再通过for循环语句来完成累加过程。

本题中s1用来表示每一项的分母,每一项的分母都是由前一项分母加项数。注意,由于s1定义成一个整型,所以在s=s+1.0/s1语句中不能把1.0写成1。

第41套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:ASCII码值为奇数或偶数的判定方法;删除字符的思想,即保留非删除字符。

【解题思路】

要删除ASCII码值为奇数的字符,也就是要保留ASCII码值为偶数的字符,由于最终是要求出剩余字符形成的新串,所以本题的算法是对原字符串从头到尾扫描,找出ASCII码值为偶数的字符并依次存入数组。

第42套 程序设计题参考答案及解析

【参考答案】

【解题思路】

该程序的流程是:定义变量 i和 j,其中 j用于控制删除后剩下的数在数组中的下标,i用于搜索原数组中的元素。j始终是新数组中最后一个元素的下一个元素的下标,所以 if 语句中的条件是 a[j - 1]!= a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立,则表示出现了不同的值,所以 a[i]要保留到新数组中。注意本题中i和j的初值都要从1 开始,该算法只能用于数组已排序的题目中。

第43套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:while循环语句,注意循环条件的设定;指针型变量。

【解题思路】

本题的重点是要选择好判断条件,首先是需要判断前导*号的结束,然后判断是否指向最后一个字母,最后补充尾部*号,只要思路对了即可正确解答。

第44套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:如何取出数n的各个位数值;知道数n的各个位数值,又如何表示该数值;指针型变量的使用。

【解题思路】

本题的主要问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。得到后对应乘以1000、100、10、1,就可得到c的千位数、百位数、十位数和个位数。注意使用c时要进行指针运算。

第45套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:循环判断语句;字符串的操作。

【解题思路】

字符串中前导*号不能多于n个,多余的应删除。首先需要通过while循环统计字符串前导*号的个数,然后通过if条件语句完成前导*号的个数和n的比较,如果前导*号多于n个,需要把n个*号和其余字符重新保留。

第46套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:如何取出数n的各个位数值;知道数n的各个位数值,又如何表示该数;指针型变量的使用。

【解题思路】

本题的主要问题是如何取出a和b的个位数和十位数,取出后如何表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。得到后对应乘以1000、100、10、1,就可得到c的千位数、百位数、十位数和个位数。注意使用c时要进行指针运算。

第47套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:字符串转换为整数的算法操作。

【解题思路】

if语句的作用是判断该字符串为正数还是负数,while循环的作用是将字符串转成相应的整数。注意:*p是一个字符(例如‘9’、‘4’),并不是一个数,要将其转成相应的数字需令其减去′0′(不是′\0′),即*p-′0′就得到*p这个字符的相应数字,例如′0′-′0′=0、′8′-′0′=8 等。必须在程序的前面加#include<stdlib.h>,函数atol的作用是将字符串转换成长整型数,它是一个库函数。

【解题宝典】

要实现字符串转换为整数的操作,而且不允许使用相应的字符串函数,因此我们需要通过字符减去′0′来实现,即*p-′0′就得到*p这个字符的相应数字。

掌握以下语句。

第48套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:变量数据类型及初始化;循环语句。

【解题思路】

根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把f看成是前两项之和,而f0始终代表第n-2项,f1代表第n-1项。退出循环时得到的数f,就是大于指定数的最小的数。

第49套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:结构体类型;for循环语句;if条件语句。

【解题思路】

本题使用循环语句和条件判断语句来实现程序操作,第1个循环语句的作用是求出总分,然后求出平均分 av。第2个循环的作用是将分数低于平均分的学生记录存入结构体数组b中。

第50套 程序设计题参考答案及解析

【参考答案】

【考点分析】

本题考查:数组元素的引用;循环判断结构。

【解题思路】

将指定字符串中奇数位置的字母转换为大写,首先需要判断奇数位置,再判断该位置字符是不是小写字母,如果是小写字母,则将小写字母转换为大写字母。字母大小写转换操作中,只要将小写字母减去32即可转换为大写字母。

第51~109套 程序设计题参考答案及解析(见光盘)

教程类别