全国计算机等级考试二级C语言上机编程题参考答案.doc

上传人:asd****56 文档编号:70331494 上传时间:2023-01-19 格式:DOC 页数:6 大小:289.50KB
返回 下载 相关 举报
全国计算机等级考试二级C语言上机编程题参考答案.doc_第1页
第1页 / 共6页
全国计算机等级考试二级C语言上机编程题参考答案.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《全国计算机等级考试二级C语言上机编程题参考答案.doc》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C语言上机编程题参考答案.doc(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 全国计算机等级考试二级C语言考前辅导 编程题型 Page 5整数分离与合并(1) 将两个两位的正整数a、b合并形成一个整数放在c中:将a的十位和个位数放在c的千位和十位,b的十位和个位数放在c的百位和个位。例如:若a = 45, b = 12,使c = 4152。 void fun(int a, int b, int *c)/ c是指针 *c = a/10*1000+b/10*100+a%10*10+b%10; (2) 判断整数x是否是同构数(规定x是不大于100的正整数)。若是,函数返回1,否则返回0。如果某个整数能够在它的平方数的最右边出现,就是“同构数”。例如:5的平方数是25,5是2

2、5右边的数,所以5是同构数。 int fun(int x) return (x = 10 & x*x%100 = x); (3) w是大于10的无符号整数,求w后n-1位的数作为函数值返回。例如:若w是234,则返回34。 unsigned fun(unsigned w) unsigned t = w, m = 1; while (t) t /= 10; m *= 10; return w % (m / 10); 四舍五入(4) 对变量x中的值保留2位小数,并对第3位进行四舍五入(规定x中的值为正数)。 double fun(double x) return (int)(x * 100 + 0

3、.5) / 100.0; (5) 求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根,并作为函数值返回。整除和素数问题 double fun(int n) int i; double s = 0; for (i = 1; i n; i+) if (i % 3 = 0 & i % 7 = 0) s += i; return sqrt(s);/平方根 (6) 求1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过函数返回这些数的个数。 int fun(int *a, int m) int i, j = 0; for (i = 1; i = m; i+) if (i % 7 =

4、 0 | i % 11 = 0) aj+ = i;/ j+模式 return j; (7) 求3到n之间所有素数的平方根之和,并返回。 double fun(int n) int i, k; double s = 0; for (i = 3; i = n; i+) for (k = 2; k i; k+)/判断素数 if (i % k = 0) break;/整除中止 if (i = k) s += sqrt(i);/是素数 return s; (8) 求出小于或等于lim的所有素数并放在a数组中,该函数返回所求的素数的个数。 int fun(int lim, int aMAX) int i,

5、 k, j = 0; for (i = 2; i = lim; i+) for (k = 2; k i; k+) if (i % k = 0) break; if (k = i) aj+ = i;/ j+模式 return j; (9) 将大于整数m且紧靠m的n个素数存入x所指的数组中。 void fun(int m, int n, int x ) int i, k, j = 0; for (i = m + 1; j n; i+) for (k = 2; k i; k+) if (i % k = 0) break; if (k = i) xj+ = i;/ j+模式 (10) 求数组前n个数的

6、小数部分的和,并返回。求总和均值极值 double fun(int n, double a ) int i; double s = 0; for (i = 0; i n; i+) s += ai - (int)ai;/原数-整数 return s; (11) 把a数组的n个数的平方值,与b数组中逆序的n个数的平方值一一对应相加,存放在c数组中。 void fun(int a , int b , int c , int n) int i; for (i = 0; i n; i+)ci = ai * ai + bn-1-i * bn-1-i; (12) 计算并返回a数组中n门课程的平均分。 dou

7、ble fun(int *a, int n) int i; double s = 0; for (i = 0; i n; i+) s += ai; return s / n; (13) 返回a数组n个学生中低于平均分的人数,并将低于平均分的分数放在b所指的数组中。 int fun(int a , int n, int b ) int i, j = 0; double s = 0; for (i = 0; i n; i+) s += 1.0 * ai / n;/平均分 for (i = 0; i n; i+) if (ai s) bj+ = ai;/ j+模式 return j; (14) 求N

8、N的二维数组周边元素的平均值并作为函数值返回给主函数。 double fun(int aNN) int i, k; double s = 0; for (i = 0; i N; i+) for (k = 0; k N; k+) if (i=0 | k=0 | i=N-1 | k=N-1) s += aik; return s / (4*N-4);/除以个数 (15) 求出s数组t个元素中最大元素在数组中的下标,并存放在k所指的存储单元中。 void fun(int *s, int t, int *k) int i, m = 0; for (i = 1; i sm) m = i; *k = m;

9、 (16) 求出数组aMN里每列中的最小元素,并依次放入bN数组中。 void fun(int aMN, int bN) int i, k, m; for (k = 0; k N; k+)/共N列 m = a0k; for (i = 0; i M; i+)/每列M行 if (aik m) m = aik;bk = m; (17) 求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中数列f(n)的定义为:数学公式求值 f(0) = 0,f(1) = 1,f(n) = f(n-1) + f(n-2) int fun(int t) int a = 0, b = 1, c = 0; w

10、hile (c = t) c = a + b; a = b; b = c; return c; (18) 根据以下公式求P的值,结果由函数值带回。 float fun(int m, int n) int i; float x = 1, y = 1, z = 1;for (i = 1; i = m; i+) x *= i;/ m!for (i = 1; i = n; i+) y *= i;/ n!for (i = 1; i = m-n; i+) z *= i;/ (m-n)! return x / y / z; (19) 根据以下公式计算s,结果由函数值返回。 double fun(int m)

11、 int i; double s = 0; for (i = 1; i = m; i+)s += log(i); return sqrt(s);/平方根 (20) 计算下列级数和,结果由函数值返回。若x = 0.3,n = 10,则函数值为1.349859。 double fun(double x, int n) int i; double s = 1, z = 1, m = 1; for (i = 1; i = n; i+)s += (z *= x) / (m *= i); return s; (21) 根据以下公式计算s,结果由函数值返回。 float fun(int n) int i,

12、t = 0;/ t作分母 float s = 0; for (i = 1; i = e) s += v; v *= n+ / (2*n+1); return s * 2; (23) 求给定10个数的方差,结果作为函数值返回:其中X是10个数的平均值。 double fun(double x10) int i; double v = 0, s = 0; for (i = 0; i 10; i+) v += xi / 10;/ v是平均值 for (i = 0; i = 1e-6); return x1; (25) 把二维数组左下角元素全置为0。 如:原来值为:4 9 2 则返回:0 9 2矩阵问

13、题 3 5 7 0 0 7 8 1 6 0 0 0 void fun(int aNN) int i, k; for (i = 0; i N; i+) for (k = 0; k = i; k+)/循环至i列 aik = 0; (26) 矩阵转置,如:输入10 20 30 输出10 40 70 (即行列互换)40 50 6020 50 8070 80 9030 60 90 void fun(int aNN) int i, k, t; for (i = 0; i N; i+) for (k = 0; k i; k+)/至i-1列 t = aik; aik = aki; aki = t; (27)

14、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如:s数组中存放ABCD0EFGH0则a中应保存AEBFCGDH。 void fun(char sMN, char *a) int i, k, j = 0; for (k = 0; k N - 1; k+)/跳过0列 for (i = 0; i M; i+) aj+ = sik;/ j+模式 aj = 0;/串尾添0 (28) 一维数组a中有n个整数,把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。移动数组元素 void fun(int a , int p, int n) int i, k, t; for (k

15、= 0; k = p; k+) t = a0; for (i = 1; i n; i+) ai-1 = ai;/数据前移 an-1 = t; (29) 假定输入的字符串中只包含字母和*号,将字符串中的前导*号全部移到字符串的尾部。 void fun(char *a) int i, n = strlen(a); while (a0 = *) for (i = 1; i n; i+) ai-1 = ai;an-1 = *;/尾部添*号 (30) 统计一个长度为2的字符串a在另一个字符串b中出现的次数。 int fun(char *a, char *b)统计子串个数 int i, n = 0;/计数

16、器置0 for (i = 0; i strlen(b); i+) if (bi = a0 & bi+1 = a1) n+; return n; (31) 统计字符串中单词的个数,作为函数值返回。字符串在主函数中输入,规定单词之间由若干空格隔开,一行的开始和结束都没有空格。 int fun(char s ) int i, n = 0;/计数器置0 for (i = 0; i strlen(s); i+) if (si != & (si+1 = | si+1 = 0) n+; return n; (32) 判断字符串是否为回文数。若是则函数返回1,否则返回0。回文是指顺读和倒读都是一样的串。 in

17、t fun(char *a)字符串回文 int i, m = strlen(a); for (i = 0; i m / 2; i+) if (ai != am-1-i) return 0; return 1; 数据分类统计(33) 统计数组a中的各年龄段的人数(N个)。09岁的人数放在b0中,1019岁的人数放在b1中,以此类推,100岁及以上的放在b10中。 void fun(int *a, int b11) int i; for (i = 0; i 11; i+) bi = 0;/计数器置0 for (i = 0; i = 100) b10+; else bai/10+; (34) 统计在

18、t字符串中26个字母a到z各自出现的次数,并依次放在p所指的数组中。 void fun(char *t, int p ) int i; for (i = 0; i 26; i+) pi = 0;/计数器置0 for (i = 0; i = a & ti = z) pti-a+; (35) 统计在字符串a中,以下字符出现的次数,并存到b数组中,其中:字符+出现的次数存到b0中,字符-出现的次数存到b1中,字符*出现的次数存到b2中,字符/出现的次数存到b3中,字符&出现的次数存到b4中,其它字符出现的次数存到b5中。 void fun(char *a, int b ) int i; b0 = b

19、1 = b2 = b3 = b4 = b5 = 0; for (i = 0; i strlen(a); i+)if (ai = +) b0+;else if (ai = -) b1+;else if (ai = *) b2+;else if (ai = /) b3+;else if (ai = &) b4+;else b5+;/其它字符 (36) 把字符串a中的内容逆置。字符串转换 void fun(char *a) char t; int i, m = strlen(a); for (i = 0; i m / 2; i+) t = ai; ai = am-1-i; am-1-i = t; (

20、37) 将s所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 void fun(char *s) int i; for (i = 1; i = a & si = z) si -= 32;/转为大写 (38) 将一个字符串转换为一个整数,例:把456转换为456,把-23转换为-23。 long fun(char *a) int i = 0, t = 1; long s = 0; if (a0 = -) t = -1; i = 1; /处理负号 for ( ; i strlen(a); i+) s = s * 10 + ai - 0; return s * t;

21、 (39) 在字符串的所有数字字符前加一个$字符。例如:输入:A1B23CD4,输出:A$1B$2$3CD$4。 void fun(char *s) char tN; int i, j = 0; for (i = 0; i = 0 & si = k ? a : b); 删除指定数据(42) 删除一个字符串中指定位置的字符。其中a存放原字符串,b存放删除后的字符串。例如,a串为World,n为3,则使b串为Word。 void fun(char a , char b , int n) strcpy(b, a); strcpy(b+n, a+n+1); (43) 将a所指字符串中除了下标为偶数、同

22、时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的新串放在t所指的数组中。 void fun(char *a, char *t) int i, j = 0, m = strlen(a); for (i = 0; i m; i += 2) if (ai%2 = 0) tj+ = ai;/ j+模式 tj = 0;/串尾加0 (44) 删除数组中相同的数,使之只剩一个。数组已按从小到大排列,函数返回删除后数组中数据个数。若原数组是:2 2 2 3 4 4 5 5 6 6 6,删除后,数组前面元素的内容是:2 3 4 5 6,函数返回5。 int fun(int a , int n

23、) int i, j = 0; for (i = 0; i = 0) si = 0;/尾部置0 (48) 字符串只包含字母和*号,使字符串尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做。字符串中间和前面的*号不删除。不得使用字符串函数。 void fun(char *a, int n) int i = 0, t = 0, v; while (ai) i+;/后移到0 v = i;/存串长度 while (a-i = * & i = 0) t+;/计*号个数 if (t n) av-(t-n) = 0;/截断串 (49) 字符串只包含字母和*号,除了字符串前

24、导的*号之外,将串中其它*号删除。不得使用字符串函数。 void fun(char *s) int i = 0, j; while (si = *) i+;/找第1字母 for (j = i; si; i+) if (si != *) sj+ = si;/ j+模式 sj = 0;/串尾加0 (50) 字符串只包含字母和*号,除了前导和尾部*号之外,删除其它*号。指针h已指向第一个字母,p已指向最后一个字母。不得使用字符串函数。 void fun(char s , char *h, char *p) int j = h - s, i; for (i = h - s; i p - s; i+)

25、if (si != *) sj+= si;/ j+模式 while (sj+ = si+) ;/拷尾部*号 (51) 从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。 void fun(char (*a)81, int num, char *max)二级指针 int i; *max = a0; for (i = 0; i strlen(*max) *max = ai; (52) 对a数组中长度为n个字符的字符串,除首尾字符外,将其余n-2个字符按ASCII码降序排列。排序问题 void fun(char *a, int n) char t; int i, k; for

26、 (i = 1; i n - 2; i+)/冒泡排序 for (k = i + 1; k n - 1; k+) if (ai ak)t = ai; ai = ak; ak = t; (53) N名学生的学号和成绩已放入结构体数组w中,按分数从高到低排列结构体数组中N个记录。 typedef struct char a10; int b; S; void fun(S wN) S t; int i, k; for (i = 0; i N - 1; i+)/冒泡排序 for (k = i + 1; k N; k+) if (wi.b wk.b) t = wk; wk = wi; wi = t; (5

27、4) 把分数最低的学生数据放在b数组中(可能不止一个),函数返回分数最低的学生的人数。 typedef struct char a10; int n; S;在结构体中查找 int fun(S aN, S bN) int i, j = 0, m = a0.n; for (i = 1; i N; i+) if (ai.n m) m = ai.n;/最小值m for (i = 0; i N; i+) if (m = ai.n) bj+ = ai;/ j+模式 return j; (55) N名学生的学号和成绩已放入结构体数组a中,请把指定分数范围内(m至n)的数据放在b所指的数组中,分数范围内的学生

28、人数由函数值返回。 typedef struct char num10; int s; STR; int fun(STR *a, STR *b, int m, int n) int i, j = 0; for (i = 0; i = m & ai.s = n) bj+ = ai; / j+模式 return j; (56) 返回指定学号的学生数据。若没有该学号,则把学号置空串、成绩置-1,作为函数值返回。 typedef struct char a10; int b; S; S fun(S *w, char *c) int i; S m = , -1;/空串,-1 for (i = 0; i

29、next;/跳头结点 double max = p-s; while (p)/未到链尾 if (p-s max) max = p-s; p = p-next;/到下1结点 return max; (58) N名学生的成绩已放入一个带头结点的链表中,h指向头结点。求出平均分,由函数值返回。 typedef struct slist double s; struct slist *next; STREC; double fun(STREC *h) double t = 0; STREC *p = h-next; /跳头结点 while (p) /未到链尾 t += p-s;/求总分 p = p-next;/到下1结点 return t / N;

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

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com