云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 全国计算机等级考试二级C语言资料(机试) - 图文

全国计算机等级考试二级C语言资料(机试) - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 4:50:00

上机编程题重点题型归类分析 加双下划线和灰背景的为可出填空的地方,请注意!

上机编程题重点题型归类分析

加双下划线和灰背景的为可出填空的地方,请注意! 第 13 页 共 30 页

分类一:数学问题

? 题型一:整数合并

1、函数fun的功能是: 将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。 例如,当a=45,b=12。调用该函数后,c=1425。 请编写fun函数实现该功能:

void fun(int a, int b, long *c) {

*c=a/10*100+a+b/10*1000+b*10;//取多位数各位上的数字 }

【解题思路】本题主要考了以下几个知识点: (1)如何获得一个二位数的个位和十位:

不管是几位数,获得个位数的方法:a即可获得个位 两位数获得十位的方法:a/10 (2)十进制中四位数的构成:

如十进制的1234=1*1000+2*100+3*10+4*1

也就是说:只要知道该四位数的各位上的数码,通过以上组合的方式就可以组合成一个四位数。如:b的十位放在c的千位,b/10*1000就是c的千位上的数了,其它的依次类推

? 题型二:累加、累乘求和

2、编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

例如,当n = 10,x=0.3时,函数值为1.349859。 #include #include

double fun(double x , int n) { int i;

第 14 页 double a=1,b=1,s=1; for(i=1;i<=n;i++) {

a*=x; /* a负责求解分子部分x的次方数 */ b*=i; /* b负责求解分母部分的阶乘 */ s+=a/b; /* s作为总和 */ }

return s;

}

main() {

printf(\}

【解题思路】将复杂的多项式拆分开,找出各项或其中一部分的规律

(1)计算表达式的值,应根据题目要求定义变量数据类型以及如何初始化,找出各项的共同点。

(2)本程序中a,b用来表示每项的分子与分母(即各项中的阶乘),注意其初值都为1

? 题型三:素数判定

3、请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17, 5,则应输出:19, 23, 29, 31, 37。函数fun中给出的语句仅供参考。 #include

void fun(int m, int k, int xx[]) {

/* 以下代码仅供参考 */ int i, j=0, t=m+1;

while(j

/* 以下完成判断素数,并存放到数组xx中 */ } }

共 30 页

main() {

int m, n, zz[1000] ;void

printf( \ scanf(\ fun( m, n, zz) ;

for( m = 0 ; m < n ; m++ ) printf(\ printf(\}

【参考答案】

for(i=2;i

循环时的i的值是多少*/

if(t==i) {

xx[j++]=t; /*如果是素数,放入数组xx中,已找到素数的个数变量j的值

增1*/

}

t++;/*不管是否为素数,t的值都要增1,以便于while循环对下一位数判断*/ 【解题思路】素数是历年考试中的重点和难点,掌握素数的基本概念:即除了1和t本身外,不能被“其它数”整除,“其它数”应该是从2到t-1的范围,从而确定循环变量的起始值、终止值

(1)本题答案中粗体部分是判断一个整数t是否为素数,通过for循环语句;if语句;break语句,与if语句连在一起满足条件时跳出循环。

(2)外层的while循环将大于m且紧靠m,即从m+1开始向后逐一判定,当个数j的值等于k时结束循环 ? 题型四:Fibonacci数列

4、编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:

F(0)=0,F(1)=1 F(n)=F(n-1)+F(n-2) 例如:当t = 1000时,函数值为:1597。 第 15 页 #include #include int fun( int t) { }

main() /* 主函数 */ { int n; void n=1000;

printf(\}

【参考答案】 int fun( int t) { int a=1,b=1,c=0,i; for(i=4;i<=t;i++) { if(c

【解题思路】当前项等于前面两项之和,然后把前面的第二项改为当前的前面第一项,把当前项改为前面的第二项。如此循环。 提示:用递归写是不是更简单更好理解。 int fun( int t) { if(t<=1) return 1;

共 30 页

}

else return fun(t-1)+fun(t-2); 分类二:一维数组操作

? 题型一:在一维数组中按指定条件筛选

1、请编写函数fun,它的功能是: 求出 1 到 1000 之间能被 7 或11整除、但不能同时被 7 和 11 整除的所有整数并将它们放在a所指的数组中,通过 n 逻辑或\的区别; 注意:(i%7==0||i==0)两边必须要有小括号 ? 题型二:一维数组最值求解

2、请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如, 输入如下整数: 876 675 896 101 301 401 980 431 451 777,则输出结果为: 6, 980 #include

返回这些数的个数。 #include

void fun (int *a, int *n) { }

main( )

{ int aa[1000], n, k ; void

fun ( aa, &n ) ;

for ( k = 0 ; k < n ; k++ )

if((k + 1) % 10 == 0) printf(\ else printf(\}

【参考答案】

void fun (int *a, int *n) {int i,j=0;

for(i=1;i<=1000;i++)

if((i%7==0||i==0)&&iw!=0) /*指定的条件*/

a[j++]=i; /*满足条件存放到数组后,j的值增1*/ *n=j; /*传回满足条件的数的个数*/ }

【解题思路】将指定条件的数值“依次”追加到数组,在这个过程中追加元素的个数从0开始计算,因此变量j作为下标的初值设为0,存到数组后j增1,即现已找到的个数为1,同时1也是下一次待存入元素的下标,依次类推

(1)if语句,但是又不能同时被7和11整除的数,在这里充分理解\逻辑与\和\

第 16 页 void fun(int *s, int t, int *k) { }

main( ) {

int a[10]={876,675,896,101,301,401,980,431,451,777}, k ;void fun(a, 10, &k) ;

printf(\}

【参考答案】

void fun(int *s,int t,int *k) {

int i,n;

n=0; /*假设第一个元素是最大值,n作为最大值的下标,初值为0*/ for(i=1;i

if(s[n]

【解题思路】求最值问题是数组应用的基本考核方式,具体方法: (1)假设第一个元素为最大(小)值

(2)与之后的其他元素“依次”比较,若比假设值大(小),则将该值设为假设值,依次类推

? 题型三:一维数组排序

3、函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

共 30 页

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

上机编程题重点题型归类分析 加双下划线和灰背景的为可出填空的地方,请注意! 上机编程题重点题型归类分析 加双下划线和灰背景的为可出填空的地方,请注意! 第 13 页 共 30 页 分类一:数学问题 ? 题型一:整数合并 1、函数fun的功能是: 将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。 例如,当a=45,b=12。调用该函数后,c=1425。 请编写fun函数实现该功能: void fun(int a, int b, long *c) { *c=a/10*100+a+b/10*1000+b*10

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com