全国计算机等级考试二级c语言南开百题之编程题

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

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

1、析:由题意已知 m 个人的成绩存放在 score 数组中,题目要求编写 fun 函数返回低于平均分的人数,并将低于平均分的分数放在 below 所指的数组中。例如,当 score 数组中的数据为 10、20、30、40、50、60、70、80、90 时,函数返回的人数应该是 4,below 中的数据应为 10、20、30、40。为了实现题目要求,fun 函数必须首先计算平均分数。计算平均分的方法只要使用循环累加 score 数组中的所有成绩,然后将累加得到的合计值除以人数 m 就得到平均分。得到平均分之后,可以再次使用循环逐个地判断 score 数组中的每一个成绩是否低于平均分,如果的确低于平

2、均分,则将该分数放入 below 数组最后位置,同时将记录低于平均分的人数的变量增加一。当循环结束的时候,就能完成题目的要求。官方答案注解如下:#include #include #include int fun(int score,int m, int below)/* aver 变量用于累加 score 数组中所有的分数,所以初始化为 0 */int i,k=0,aver=0;/* 累加 score 数组中所有的成绩,aver 存放最新的合计值 */for(i=0;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr();n=fun(score,9,bel

3、ow);printf(people=%dn,n);printf(nBelow the average score are :);for(i=0;i#include void fun(int * a, int * n)int i,j=0;/* 从 2 至 999 检查在这个范围之内的整数是否符合条件 */for(i=2;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr();fun(aa,/* 按照每一行 10 个数据的格式输出 aa 数组中的元素 */for(k=0;k#include void fun(int x, int pp, int *n)int i

4、=1,j=0,k=0,*t=pp;/* 逐个检查 0 至 x 范围之内的整数,将非偶数放入 t 所指数组中 */for(i=0;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr();printf(nPlease enter an integer number:n);/* 使用 scanf 函数输入 x 的值 */scanf(%d,fun(x,aa,/* 输出 aa 数组中的元素 */for(i=0;i#include void fun(char *tt, int pp)int i;/* 将 pp 数组的各个元素初始化为 0 */* pp0存放a字母出现的次

5、数, pp1存放b 字母出现的次数 */* pp2存放c字母出现的次数, pp3存放d 字母出现的次数 */* 剩下的依次类推 */for(i=0;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr() ;printf(nPlease enter a char string:);/* 使用 scanf 函数输入 aa 字符串 */scanf(%s,aa);fun(aa,bb);/* 输出存放在 bb 数组中各个字母出现的个数 */for(k=0;k #include void fun(int m, int k, int xx)int g=0,i,j,flag

6、=1;/* 从 m+1 开始逐个检查后续的整数是否为素数 */* for(i=m+1;i=i 表达式成立说明以上 for 循环没有中途退出,没找到能整除 i 的数*/* 所以 j=i 表达式成立也说明 i 是一个素数*/* 所以 flag=1&j=i 从中取一个也对 */if (flag=1&j=i)/* 只有在 k 还有名额的情况下才能将找到的素数 i 放入 xx 数组 */if (k=0)/* xxg+=i;相当于 xxg=i;g+; */* g 必须加一,以便存放下一个素数 */xxg+=i;/* 将一个素数放入 xx 数组,用掉了一个名额,所以 k 减一 */k-;else/* 按照题

7、意只需找出 k 个素数,所以当 k */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr();printf(nPlease enter two integers:);/* 输入 m 与 n 的值,输入时必须按照输入格式在两个整数之间输入一个逗号 */scanf(%d,%d,/* 输出存放在 zz 数组中的大于整数 m 且紧靠 m 的 k 个素数 */for(m=0; m#include # define LEN 20void fun(char a, char b, int n)int i,j=0;/* 使用 for 循环将 a 字符串数组中下标不是 n 的字符全部

8、拷贝到 b 数组中 */for (i=0;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr() ;printf(Enter the string:n);/* 使用 gets 函数输入 str1 字符串 */gets(str1);printf(Enter the position of the string deleted:);/* 使用 scanf 函数输入在 str1 字符串中要删除的字符的下标 n */scanf(%d,/* 调用 fun 函数在 str1 字符串删除下标为 n 的字符,新字符串放入 str2 数组*/fun(str1, str2, n

9、);/* 输出删除之后的新字符串 str2 */printf(The new string is:%sn,str2);7分析:题目要求编写一个函数 int fun(int*s,int t,int*k),用来求出数组的最大元素在数组中的下标并存放在 k 所指的存储单元中。例如, 输入如下整数:876 675 896 101 301 401 980 431 451 777则输出结果为:6,980。为了实现题目要求,可以预先假设 s 所指数组第一个元素为最大值,将它存入 max 变量中。然后将 max 逐个地与 s 数组中每一个元素比较大小,只要发现有比 max 更大的数组元素,则将它覆盖 max,

10、同时该元素的下标放入 k 所指存储单元。当 max 与 s 数组中每一个元素都比较结束,max 必然存放了 s 数组中最大的元素,相应的,k 所指存储单元必然存放了 max 存放的 s 数组中最大的元素的下标。官方答案注解如下:#include #include /* fun 函数是在 s 所指数组中找出最大值的下标放入 k 所指的存储单元中 */* 从 main 函数可以看出 t 参数为 s 所指数组中元素的个数 */void fun(int *s, int t , int *k)int i ,max;/* 假设数组第一个元素 s0为最大值 */max=s0;/* 将 max 逐个地与 s

11、数组中每一个元素比较大小 */for (i=0;imax)/* 如果比 max 更大,则将 si覆盖 max,同时下标放入 k 所指存储单元 */* 这样就能确保 max 为在 s 数组中目前发现的最大值 */max=si;*k=i; main() int a10=876,675,896,101,301,401,980,431,451,777, k ;/* clrscr 函数定义在 conio.h,所以存在#include */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr( ) ;fun(a,10,/* 输出在 a 数组的最大元素在数组中的下标 k 以及最大元

12、素 ak的值 */printf(%d, %dn, k, ak);8分析:题目要求编写函数 fun,函数的功能是:根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传入。S = 1 + 1/(1+2) + 1/(1+2+3) + + 1/(1+2+3+n)例如:若 n 的值为 11 时,函数的值为 1.833333。官方答案注解如下:#include #include #include float fun (int n)int i;/* s 变量用于存放公式 S 中已经累加过的前几项的合计值 */* s 变量初始化为公式 S 的第一项的值 1.0 */* t 变量用于存放公式 S 中每一

13、项的分母 */* 由于计算分母需要累加,所以 t 初始化为计算分母的第一项的值 1.0 */float s=1.0,t=1.0;/* 从公式 S 的第 2 项开始累加 */for (i=2;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr();printf(nPlease enter N:);/* 使用 scanf 函数输入 n 的值 */scanf(%d,s=fun(n);/* 输出计算得到的公式 S 的值 s */printf(The result is: %fn,s);9分析:题目要求编写函数 fun,它的功能是:根据以下公式求 P 的值,结果由函数

14、值带回。m与 n 为两个正整数且要求 mn。P=m!/(n!(m-n)!)例如:m=12,n=8 时,运行结果为 495.000000。公式中的 m!、n!和(m-n)!都是计算它们各自的阶乘,例如 m!是计算整数 m 的阶乘。m!的计算公式是 m*(m-1)*(m-2)*3*2*1。要计算公式 P 的值,首先需要计算 m、n 和(m-n)的阶乘。计算某个整数的阶乘可以使用循环分别计算出 m!、n!和(m-n)!,然后将计算得到的值代入公式 P 即可计算公式 P 的值。官方答案注解如下:#include #include float fun( int m, int n)/* 为了不让计算结果的

15、小数部分丢失,保持计算的精度,定义 p 和 t 为 float */float p,t=1.0;int i; /* 使用循环计算 m! */for (i=1;i */* clrscr 函数作用是清除输出窗口中已经存在的所有信息 */clrscr();printf(P=%fn, fun(12,8);10分析:编写函数 fun,它的功能是:利用以下所示的简单迭代方法求方程 cos(x)-x=0 的一个实根。X(n+1)=cos(X(n)迭代步骤如下:(1)取 x(1)初值为 0.0;(2)x(0)=x(1) ,把 x(1)的值赋给 x(0);(3)x(1)=cos(x(0) ,求出一个新的 x(1

16、);(4)若 x(0)-x(1)的绝对值小于 0.000001,则执行步骤(5),否则执行步骤(2);(5)所求 x(1)就是方程 cos(x)-x=0 的一个实根,作为函数值返回。程序将输出结果 Root=0.739085。为了实现以上要求,只能按照迭代步骤一步一步地编写程序。具体过程见官方答案注解。官方答案注解如下:#include #include #include float fun()/* 第(1)步:取 x(1)初值为 0.0 */float x1=0.0,x0;do /* 第(2)步:x(0)=x(1),把 x(1)的值赋给 x(0) */x0=x1;/* 第(3)步:x(1)=c

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

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

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