计算机等级考试三级数据库技术100道上机题内容摘要:

/*如果当前数是偶数且小于后面连续 5 个数 */ { b[t]=a[i]。 /*将满足条件的数存入数组 b 中 */ t++。 /*并统计满足条件的数的个数 */ } } for(i=0。 it1。 i++) /*利用选择法对 b 数组中的元素进行从小到大的排序 */ { for(j=i+1。 jt。 j++) { if(b[i]b[j]) { temp=b[i]。 b[i]=b[j]。 b[j]=temp。 } } } } 【模板速记】 记忆口诀:一定义二筛选三排序。 定义指定义相关变量,筛选指选出满足条件的数并存入数组,排序指按照要求排序,详见模板五。 做题时,需灵活应用本模板,切勿死记硬背。 【易错提示】 循环嵌套的循环控制条件, if判断语句中表达式,数组排列的顺序。 5讲。 第十一题: 【考点分析】 本题考查对 字符数组中的字符进行计算以及替换。 考查的知识点主要包括 :字符串数组的访问 ,字符 ASCII码的位运算 ,if判断结构以及逻辑表达式。 【解题思路】 首先通读题目 ,得知此题属于字符计算问题。 其次分析题干要求 ,本题要求实现StrCharJL()函数的功能 ,分析后可以归纳出 3个关键点 :关键点 1如何对字符数组的元素逐一访问。 关键点 2 如何对字符的 ASCII 码做左移的位运算。 关键点 3 如何根据条件 (移位后的 ASCII 值小于等于 32 或大于 100)对计算结果进行判断 ,并分别对满足与不满足条件的情况进行处理。 接着分析每一步的解决方法 ,关键点 1 通过字符串处理函数 strlen 获取字符串的长度 ,再通过获得的长度使用下标法对字符 数组的元素逐一访问。 关键点 2 可以直接对字符的 ASCII 码进行位运算。 关键点 3 通过 if 判断结构和逻辑表达式即可实现功能。 【参考答案】 void StrCharJL(void) { int i,j。 /*定义循环控制变量 */ int str。 char ch。 for(i=0。 imaxline。 i++) /*以行为单位获取字符 */ { str=strlen(xx[i])。 /*求得当前行的字符串长度 */ for(j=0。 jstr。 j++) { ch=xx[i][j]4。 if(ch=32 || ch100) continue。 /*如果左移 4 位后字符的 ASCII 值小于等于 32 或大于 100,则原字符保持不变 */ else xx[i][j]+=4。 /*否则就把左移后的字符 ASCII 值加上原字符的 ASCII*/ } } } 【易错提示】 根据字符 ASCII码的位计算。 if判断语句中的逻辑表达式。 第十二题: 【考点分析】 本题考查 对字符数组中的字符计算。 考查的知识点主要包括: 字符串数组的访问,字符 ASCII码的算术运算, if判断结构以及逻辑表达式。 【解题思路】 首先通读题目,得知此题属于字符计算问题;其次分析题干要求,本题要求实现 ChA(void)函数的功能,分析后可以归纳出 3个关键点: 关键点 1如何对字符数组的元素逐一访问; 关键点 2按照要求取每个位置的字符和其下一个字符相加,并将结果作为该位置上的新字符,需要注意的是,末尾位置的新字符是该位原字符和第 1个原字符相加的结果; 关键点 3最后要将所得的结果逆序保存。 接着分析每一步的解决方法,对于 关键点 1通过字符串处理函数 strlen获取字符串的长度,再通过获得的长度用下标法对字符数组的字符元素逐一访问; 关键点 2在遍历访问字符时,可以直接取下一个位置的字符进行运算,在进行计算之前需要首先保存第 1个位置的字符,以作为计算最后位置新字符的条件; 关键点 3可以通过 for循环对数组从首尾同时遍历的算法实现。 【参考答案】 void ChA(void) { int i,j,k。 /*定义循环控制变量 */ int str。 /*存储字符串的长度 */ char ch,temp。 /*定义字符暂存变量 */ for(i=0。 imaxline。 i++) /*以行为单位获取字符 */ { str=strlen(xx[i])。 /*求得当前行的字符串长度 */ ch=xx[i][0]。 /*将第一个字符暂存入 ch*/ for(j=0。 jstr1。 j++) /*将该字符的 ASCII值赋值为下一个字符的 ASCII值加 1,得到新的字符 */ xx[i][j]+=xx[i][j+1]。 xx[i][str1]+=ch。 /*将最后一个字符的 ASCII值与第一个字符的 ASCII值相加,得到最后一个新的字符 */ for(j=0,k=str1。 jstr/2。 j++,k) /*将字符串逆转后仍按行重新存入字符串数组 xx中 */ { temp=xx[i][j]。 xx[i][j]=xx[i][k]。 xx[i][k]=temp。 } } } 【易错提示】 最后一个字符的计算,逆序存储算法的选择。 第十三题: 【考点分析】 本题考查 对字符串的查找和统计。 考查的知识点包括: 指针对字符串的访问方法, C语言循环嵌套结构。 【解题思路】 首先通读题目,得知此题属于字符串处理问题;其次分析题干要求,本题要求实现 findStr(char *str, char *sunstr)函数,该函数需要实现在一个字符串中查找另一个字符串,并统计出现次数的功能,分析后可以归纳出实现功能的 3个关键点; 关键点 1如何实现对字 符串中字符的遍历; 关键点 2如何实现对子字符串的查找功能; 关键点 3如何统计子串其出现的次数。 接着分析每一步的解决方法。 对于 关键点 1使用循环和指针的方式可以实现对字符串的访问; 关键点 2通过嵌套的循环可以实现查找功能,具体方法是,外层循环控制对主串的遍历,内层是对子串的遍历,当主串中当前字符和子串第 1个字符相同时,继续判断其后的字符是否和子串的下一个字符相同,依次类推,则每次内层循环遍历过子串就表示找到一次; 关键点 3每找到一次子串的同时,累加一个记数器,作为出现次数的统计结果。 【参考答案】 int findStr(char *str, char *substr) { int n=0。 /*定义计数器变量,统计出现次数 */ char *p,*r。 /*定义指针变量来分别指向两个字符串 */ while(*str) /*如果字符串没有结束,则一直循环下去 */ { p=str。 /*指针 p 指向字符串首地址 */ r=substr。 /*指针 r 指向子字符串首地址 */ while(*r) /*若子字符串没有结束,则循环继续 */ {if(*r==*p) /*如果子字符串的第一个字符等于字符串中的该字符,则继续比较下一个字符 */ { r++。 p++。 } else break。 /*否则退出循环 */ if(*r==39。 \039。 ) /*如果子字符串在字符串中出现了一次 */ n++。 /*则 n 加 1,进行统计 */ } str++。 /*指向字符串中的下一个字符 */ } return n。 /*返回统计结果 n*/ } 【易错提示】 遍历字符串时指针的使用;查找子串的算法使用。 第十四题: (同 38题) 【考点分析】 本题考查 对字符数组中字符排序。 考查的知识点包括: 字符串数组的访问,数组排序算法。 【解题思路】 首先通读题目,得知此题属于字符排序问题;其次分析题干要求,本题要求实现 SortCharD()函数,该函数需要实现将字符数组中的元素排序的算法。 分析后可以归纳出实现该功能的关键点是:如何按 照字符从大到小的顺序对数组中的字符进行排序。 这可以通过循环嵌套的起泡法来实现。 【参考答案】 void SortCharD() { int i,j,k。 /*定义循环控制变量 */ int str。 /*存储字符串的长度 */ char temp。 /*定义数据交换时的暂存变量 */ for (i=0。 imaxline。 i++) /*以行为单位获取字符 */ { str=strlen(xx[i])。 /*求得当前行的字符串长度 */ for(j=0。 jstr1。 j++) /*对字符按从大到小的顺序进行排序 */ {for(k=j+1。 kstr。 k++) { if(xx[i][j]xx[i][k]) { temp=xx[i][j]。 xx[i][j]=xx[i][k]。 xx[i][k]=temp。 } } } } } 【易错提示】 排序时 if结构中的逻辑表达式。 第十五题: (同 5 65题) 【考点分析】 本题考查 选票的统计。 考查的知识点主要包括: C语言循环结构, if条件判断结构和逻辑表达式,二维数组操作。 【解题思路】 首先通读题目,得知此题属于选票的统计题型;其次分析题干要求,本题要求实现 CountRs(void)函数的功能,该函数需要统计出 100条选票数据,并将统计结果保存入数组yy中;接着归纳出本题有 2个关键点: 关键点 1如何统计每张选票的选择情况; 关键点 2根据题目给出的条件 一 张选票选中人数小于等于 5个人时则被认为无效 判断选票是否有效。 首先,对数组 yy元素初始化为 0;接着通过一个 循环嵌套结构 依次判断每张选票数据的十个选举标志,同时每张选票的投票数量,对于不满足条件的选票数据直接跳过,并统计有效选票的投票情况到数组 yy中。 【参考答案】 void CountRs(void) { int i,j。 /*定义循环控制变量 */ int t。 /*用来存储每张选票中选中人数,以判断选票是 否有效 */ for(i=0。 i10。 i++) /*初始化数组 yy*/ yy[i]=0。 for(i=0。 i100。 i++) /*依次取每张选票进行统计 */ { t=0。 /*初始化计数器变量 */ for(j=0。 j10。 j++) /*统计每张选票的选中人数 t*/ if(xx[i][j]==39。 139。 ) t++。 if(t5) /*当 t值大于 5时为有效选票 */ {for(j=0。 j10。 j++) /*统计有效选票 */ if(xx[i][j]==39。 139。 ) yy[j]++。 } } } 模板七 选票问题 【模板速记】 记忆口诀:一定义二初始化三统计。 定义指定义相关变量,初始化指初始化数组,统计是统计每个人选票的数量,详见模板七。 做题时,需灵活应用本模板,切勿死记硬背。 【易错提示】 数组 yy未初始化,判断选票是否有效的逻辑表达式错误 第十六题: 【 考点分析】 本题考查的知识点主要包括 : 结构体成员的访问,元素的排序 , if判断结构和逻辑表达式。 【解题思路】 此题属于 结构体的筛选排序问题。 分析题干要求 ,可以归纳出 3 个关键点 :关键点 1 通过条件 每组数据中第 2 个数大于第 1 个数和第 3 个数之和 对每组数据进行判断。 关键点2 保存满足条件的数到新数组中并统计其数量。 关键点 3 对新数组中的数再按照第 2 个数和第 3个数之和的大小进行降序排列。 关键点 4 函数的返回值为之前统计的满足的数据的组数。 接着分析具体的解决方法 ,首先通过 if 判断结构和逻辑表达式实。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。