计算机二级c语言考试编程题

上传人:第*** 文档编号:34446120 上传时间:2018-02-24 格式:DOC 页数:95 大小:590.50KB
返回 下载 相关 举报
计算机二级c语言考试编程题_第1页
第1页 / 共95页
计算机二级c语言考试编程题_第2页
第2页 / 共95页
计算机二级c语言考试编程题_第3页
第3页 / 共95页
计算机二级c语言考试编程题_第4页
第4页 / 共95页
计算机二级c语言考试编程题_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《计算机二级c语言考试编程题》由会员分享,可在线阅读,更多相关《计算机二级c语言考试编程题(95页珍藏版)》请在金锄头文库上搜索。

1、编 程 题1.请编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。注意: 部分源程序存在文件prog.c中。请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。#include #include #include #include #define N 81/*本题的考核点是C语言中的for循环语句的使用。解题思路:对于本题,我们给出的参考函数采取的算法是:将第一个元素与最后一个元素互换,第二个元素与倒数第二个互换的方式进行倒排序。因为我们

2、一次互换两个元素,所以for循环语句执行length/2次(length是字符串的长度)就可以把全部元素互换一遍。*/void fun ( char *s )int i ,length;char tmp;length = strlen( s ); /*统计字符串s中字符的个数*/for (i = 0;i #include #include /*本题的考核点是3行3列矩阵转置算法。解题思路:通过两重循环和一个中间数组完成转置。方法是通过循环将原数组中的i行j列上的数赋值给中间数组的j行i列,最后再将中间数组的值赋给原数组,形成转置后的矩阵。*/void fun(int array33) int

3、i,j;int b33;for (i=0;i#include #include #define MAX 200/*本题的考核点是找出小于指定数的所有素数的算法。解题思路:从2到指定数lim,找出所有的素数,素数的判断方法是:只能被1和其自身整除,而不能被其它任何数整除的数。*/int fun(int lim,int aaMAX) int i,j=0,k=0;for (i=2;i#include #include #define M 4#define N 5/*本题的考核点是c语言中嵌套循环语句和条件判断语句的使用。解题思路:二维数组的周边元素的特点是:它有一个下标为0或为数组上界。所以我们只需

4、判断数组的下标是否为0或数组上界即可。按行、列进行循环可以保证符合条件的元素只被运算一次。*/int fun ( int aMN )int i, j, sum = 0;for (i = 0; i #include #include #include /*本题的考核点是对除首、尾字符外的其它字符按降序排列的算法。解题思路:只对除首、尾字符外的字符排序,排序可用多种方法来实现,本题用的是选择法,通过一变量来记录大数的下标,再与前面的数交换,从而实现降序排序。*/int fun(char *s,int num)int i,j,h,t;for (i=1;i#include #include #defi

5、ne M 3#define N 4void fun(int ttMN,int ppN)int i, j, min;for(i = 0; i ttji)min = ttji;ppi = min;/*本题的考核点是C语言中循环嵌套语句的使用。解题思路:从题目的要求来看,我们应建立一个两重循环来按行、列寻找最小元素。因为题目要求出每列中的最小元素,所以列循环应放在外面,行循环放在里面。我们给出的参考函数中,定义了一个变量min来保存最小元素,在行循环中比较出最小元素,并在行循环结束时赋给数组pp的相应元素。*/NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭

6、文件。 */int i, j, k, m, tMN, pN ;FILE *rf, *wf ;rf = fopen(bc3.in, r) ;wf = fopen(bc3.out, w) ;for(m = 0 ; m #include #include #include /*本题的考核点是从一组字符串中找出最长串的算法。解题思路:通过求字符串长度函数对一组字符串的字符进行比较,并将地址赋给一指针变量。*/fun(char(*a)81,int num,char *max) int i;*max=a0;/*将第一个字符串赋值给max指针*/for (i=1;istrlen(*max) *max=ai;

7、/*假如字符串ai的长度比指针max中的字符串的长度长,则将ai字符串赋值给max指针*/NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */char ss1081,*ps;int n,i,j;FILE *rf, *wf ;rf = fopen(b16.in, r) ;wf = fopen(a16.out, w) ;for (j=0;j#include #include #include/*本题的考核点是统计子串在主串中出现次数的算法。解题思路:将主串中的字符从第一个位置开始逐个与子串中的字符作比较,若子串出现在主串中,次数加1,主串中的指针移

8、动到下一个位置继续与子串比较,反之,主串中的指针也同样移动到下个位置,直至主串中的字符全部比较结束。*/int fun(char *str,char *substr)unsigned int i=0;int j,k=0,add;while (i#include #include #include#define N 5/*本题的考核点是二维数组、循环语句和条件语句。解题思路:使用循环语句控制行,然后对首行和末行使用内循环求取所有元素的和。对于其他行则取其首尾元素的值。最后求这些数总和的平均值。*/double fun ( int wN )int i,j,count=0;double averag

9、e,sum=0.0;for(i=0;i#include #include/*本题的考核点是实现两个字符串的连接。解题思路:1、定义两个字符型指针point1、point2,分别指向字符串p1和p2;2、point1起始指向字符串p1的第一个字符,通过循环,令其指向p1串尾,为未来的连接工作做好准备;3、point2起始指向字符串p2的第一个字符,通过循环,不断将指针指向p2的下一个字符;4、将point2指向的字符通过指针point1逐一连接在字符串p1末尾;5、连接完毕后,将指向字符串p1末尾的指针point1指向0,以保证指针不越界。*/void fun(char p1, char p2)

10、char *point1,*point2;point1=p1;point2=p2;while(*point1!=0) point1+;/*将指针point1指向字符串末尾的结束符位置上*/while(*point2!=0) *point1=*point2;/*将point2指向的字符通过指针point1逐一连接在字符串p1末尾*/point1+;/*point1指针指向p1字符串中的下一个字符*/point2+;/*判断point2是否指向字符串末尾的结束符位置上,如果是则连接完成退出循环*/*point1=0;/*将point指针指向0,以保证指针不越界*/NONO ( )/* 本函数用于打

11、开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。*/int i ;FILE *rf, *wf ;char s180, s240 ;rf = fopen(bc02.in, r) ;wf = fopen(bc02.out, w) ;for(i = 0 ; i #include #include/*本题的考核点是矩阵A加上A的转置算法。解题思路:A的转置即指原先在i行j列的元素现放置在j行i列上,通过一个两重循环即可求得矩阵与其转置的和。*/void fun(int a33,int b33)int i,j;for(i=0;i#include #include #include/*本题的

12、考核点是求数组中各元素的平均值。解题思路:1、首先定义两个变量total和average,分别放置总分数和平均分;2、通过循环,计算出数组score中各个分数的总和,并放至total中;3、根据由主函数传过来的m,计算平均分,并放至average中;4、定义指针p_below,指向主函数中的数组below,通过这个指针的操作设置below中各元素的值;5、通过循环,让每个分数和平均分比较,低于平均分的分数通过指针p_below分配给below;6、在以上循环的同时,定义了一个变量j,每当发现一个平均分的分数,j便自动加1;7、最后返回j值,即是数组score中低于平均分的元素个数。*/int

13、fun(int score, int m, int below)int total=0;/*用于计算m个学生的成绩之和*/int average=0;int *p_below=below;/*用于存放成绩低于平均分的学生的成绩*/int i=0;int j=0;/*用于计算成绩低于平均分的学生的人数*/for(i=0;i#include #include#define M 200int aa1000;/*本题的考核点是循环语句和整除算法。解题思路:使用循环语句使循环变量依次从1递增到1000,并将每个值与7和11进行取余比较,将符合条件的值存放入数组中并统计符合条件的值的个数。*/void f

14、un(int *n)int i,count=0;*n=0;for(i=1;i#include #include #include#define N 5/*本题的考核点是C语言中循环嵌套和 if 语句的使用。解题思路:对于本题,我们给出的参考函数采取的算法是:使用嵌套循环,外循环是行循环,内循环是列循环,这样可以对整个数组中的元素进行符合条件的运算。本题要求是对数组左下半三角元素中的值全部置成0,观察二维数组可以看出,数组左下半三角中的元素 ,行坐标值都等于列坐标值。*/void fun ( int aN )int i,j;for (i=0;i#include #include #include

15、#define N 5/*本题的考核点是C语言中循环嵌套和 if 语句的使用。 解题思路:对于本题,我们给出的参考函数采取的算法是:使用嵌套循环,外循环是列循环,内循环是行循环,这样可以对整个数组中的元素进行符合条件的运算。本题要求是对数组上半三角元素中的值乘以m,观察二维数组可以看出,数组上半三角中的元素 ,行坐标值都小于等于列坐标值。*/void fun ( int aN, int m )int i,j;/*先列后行对数组右上半三角元素中的值乘以m*/ for (i=0;i=3);printf(m=%4dn,m);fun(a,m);printf(THE RESULTn);for(i=0;i#include #include/*本题的考核点是统计给定字符串中 a 到 z 26个字母各自出现的次数。解题思路:1、由于存放26个小写字母的数组pp在主函数中未赋初值,所以在函数fun()中第一步就是将其初始化,以保证程序运行安全;2、定义一个指针变量p_tt指向字符串tt;3、根据指针指向是否为空,建立循环,检验字符串中的每一个字符,使用switch分支判断语句,累加计算出各个字母的 个数;4、在上面的循环中,将每个字母的个数存放到pp数组相对应的元素中。*/void fun(char *tt,int pp) int i;for(i=0;i=a

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号