CCF历年真题C语言答案.docx

上传人:scccc 文档编号:11302915 上传时间:2021-07-21 格式:DOCX 页数:23 大小:31.52KB
返回 下载 相关 举报
CCF历年真题C语言答案.docx_第1页
第1页 / 共23页
CCF历年真题C语言答案.docx_第2页
第2页 / 共23页
CCF历年真题C语言答案.docx_第3页
第3页 / 共23页
CCF历年真题C语言答案.docx_第4页
第4页 / 共23页
CCF历年真题C语言答案.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《CCF历年真题C语言答案.docx》由会员分享,可在线阅读,更多相关《CCF历年真题C语言答案.docx(23页珍藏版)》请在三一文库上搜索。

1、题1:出现次数最多的数#includeint main()int i,j, n, s;int t = 1;int a10001 = 0;scanf(%d, &n);for (i = 0; i at) t=s;if (as = at) t=(st? s:t);printf(%d, t);return 0;题2:ISBN号码#includeint main()int sum=0;char a13 = 0;gets(a);sum = (a0 - 0)*1 + (a2 - 0) * 2 + (a3 - 0) * 3 + (a4 - 0) * 4 + (a6 - 0) * 5 + (a7 - 0) *

2、6 + (a8 - 0) * 7 + (a9 - 0) * 8 +(a10 - 0) * 9;if (sum%11 = a12-0)|(sum%11=10&a12=X) /注意正确情况几种类型printf(Right);elseif (sum%11 = 10) a12 = X;else a12 = sum%11 + 0; puts(a);return 0;题3:相反数#includeint main()int i, j, n,t=0;int a501;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &ai);for (i = 0; i n-1; i+)f

3、or (j = i + 1; j n; j+)if (ai + aj = 0) t+;printf(%d, t);return 0;题4:窗口#includetypedef struct window1int x1,x2,y1,y2,order; window;void Inputwindow(window ws,int n)int i;for(i=1;i=n;i+) scanf(%d%d%d%d,&wsn-i.x1,&wsn-i.y1,&wsn-i.x2,&wsn-i.y2); wsn-i.order=i;int getpos(window ws,int n,int x,int y)int

4、i;for(i=0;i=wsi.x1&x=wsi.y1&y=0;i-)wsi+1=wsi; ws0=w;int main() int i,n,m,x,y,pos; scanf(%d%d,&n,&m); window wsn;Inputwindow(ws,n);for(i=0;im;i+)scanf(%d%d,&x,&y);pos=getpos(ws,n,x,y);if(pos=-1)printf(IGNOREDn);elseprintf(%dn,wspos.order); movewindow(ws,n,pos);return 0; 题5:相邻数对#include#includeint mai

5、n()int i, j, n,t=0;int a1001;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &ai);for (i = 0; i n - 1; i+)for (j = i + 1; j n; j+)if (abs(ai - aj) = 1) t+;printf(%d, t);return 0;题6:画图#includeint main()int i, j, n,k, t = 0;int a1014;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d%d%d%d, &ai0, &ai1, &ai2, &ai3

6、);for (i = 0; i 101; i+)for (j = 0; j 101; j+)for (k = 0; k = ak0 & j = ak1 & i ak3)break;if (k n)t+;printf(%d, t);return 0; 题7:门禁系统#includeint main()int i, n, s = 0;int a1001 = 0 ;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &s);as+;printf(%d , as);return 0;题8:z字形扫描#includeint main()int i, j, k, n;i

7、nt a500500;scanf(%d, &n);for (i = 0; in; i+)for (j = 0; jn; j+)scanf(%d, &aij);for (k = 0; k2 * n - 1; k+)for (i = 0; in; i+)for (j = 0; jn; j+)if (i + j = k)if (k % 2 = 0)printf(%d , aji);elseprintf(%d , aij);return 0;题9:图像旋转#include#define N 1000 int aNN;int main()int i, j, n, m;scanf(%d%d, &n, &m

8、);for (i = 0; i n; i+)for (j = 0; j m; j+)scanf(%d, &aij);for (j = 1; j =m; j+)for (i = 0; i n; i+)if (i != 0)printf( );printf(%d, aim - j);printf(n);return 0;题10:数字排序#includeint main()int i, j, n,s=0;int a1001 = 0; /注意初始化赋值scanf(%d, &n);for (i = 0; i 0; i-) /i为从后找起的频数for (j = 0; j 1001; j+) /数组下标从小

9、到大if (aj = i) /找自己printf(%d %dn, j, aj);return 0;题11:数列分段#includeint main()int i, n,t=0;int a1001;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &ai);for (i = 0; i n - 1; i+)if (ai != ai + 1) t+;printf(%d, t + 1);return 0;题12:日期计算#includeint main()int y, d, day, i;int mouth13 = 0,31,28,31,30,31,30,31,3

10、1,30,31,30,31 ;scanf(%d%d, &y, &d);if (y % 4 = 0 & y % 100 != 0) | (y % 400 = 0)mouth2+;for (i = 1; i mouthi)d = d - mouthi;if (d = 0)d = mouthi;break;else break; /注意中断,确保月份不出错printf(%dn%d, i, d);return 0;题13:数位之和#includeint main()int n, sum = 0;scanf(%d, &n);while (n)sum = sum + n%10;n = n / 10;pri

11、ntf(%d, sum);return 0;题14:消除类游戏#includeint main()int i, j,k, n, m,t=1;int a3131 = 0 ;int b3131 = 0 ;scanf(%d%d, &n, &m);for (i = 0; i n; i+)for (j = 0; j m; j+)scanf(%d, &aij);for (i = 0; i n; i+)for (j = 0; j = 3)for (k = j - t + 1; k = j; k+)bik = 1;t = 1;for (j = 0; j m; j+)for (i = 0; i = 3)for

12、(k = i - t + 1; k = i; k+)bkj = 1;t = 1;for (i = 0; i n; i+)for (j = 0; j m; j+)if (bij) aij = 0; /将找到的赋0for (i = 0; i n; i+)for (j = 0; j m; j+)printf(%d , aij);printf(n);return 0;题15:折点计数#includeint main()int i, n,t=0;int a1001;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &ai);for (i = 0; i n-2; i+

13、)if (ai + 1 ai & ai + 1 ai & ai + 1 ai + 2) t+;printf(%d, t);return 0;题16:俄罗斯方块#includeint main()int i, j, n;int k = 0,count=0,down=0;int x4, y4;int a1510;int b44;for (i = 0; i 15; i+)for (j = 0; j 10; j+)scanf(%d, &aij);for (i = 0; i 4; i+)for (j = 0; j 4; j+)scanf(%d, &bij);scanf(%d, &n);for (i =

14、0; i 4; i+) for (j = 0; j 4; j+)if (bij = 1)xk = i;yk = j;k+;while (1)for (i = 0; i 4; i+)if (axi + downyi + n - 1 = 0)count+;if (count = 4) down+;count = 0;elseif (xi + down = 14) for (j = 0; j 4; j+)axj + downyj + n - 1 = 1;break;elsefor (j = 0; j 4; j+)axj + down - 1yj + n - 1 = 1;break;for (i =

15、0; i 15; i+)for (j = 0; j 10; j+)printf(%d , aij);printf(n);return 0; 题17:最大波动#include#includeint main()int i, n,t=0;int a1001 = 0 ;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &ai);for (i = 0; i n-1; i+)if (t abs(ai - ai + 1)t = abs(ai - ai + 1);printf(%d, t);return 0;题18:火车购票#includeint main()int i

16、, j, n, t,k;int flag;int a100 = 0 ;int b20 = 0;scanf(%d, &n);for (i = 0; i 20; i+)bi = 5;for (i = 0; i n; i+)scanf(%d, &t);flag = 0;for (j = 0; j = t) /有连续座位for (k = 1; k 0) /无连续座位且有人买票for (j = 0; j = 1) /分散买票printf(%d , j * 5 + (5 - bj) + 1);t-;bj-;printf(n); /注意换行的情况return 0;题19:中间数#includeint mai

17、n()int i,j,n,zuo,you;int t = -1;int a1001;scanf(%d, &n);for (i = 0; i n; i+)scanf(%d, &ai);for (i = 0; i n; i+)zuo = 0; /注意初始化you = 0;for (j = 0; j aj)zuo+;if (ai aj)you+;if (zuo = you)t = ai;printf(%d, t);return 0;题20:工资计算#includeint main()int i, t;int x = 0;scanf(%d, &t);if (t = 3500)printf(%d, t)

18、;for (i = 3600; i = 3600 & i = 5100 & i = 8100 & i = 12600 & i = 38600 & i = 58600 & i = 83600)x += (i - 83500)*0.45 + 45 + 300 + 900 + 6500 + 6000 + 8750;if (i - x = t)printf(%d, i);break;return 0;题21:分蛋糕#includeint main()int i, n, k;int sum = 0, t = 0;int a1001;scanf(%d%d, &n, &k);for (i = 0; i n;

19、 i+)scanf(%d, &ai);for (i = 0; i =k)t+;sum = 0;else if (i = n - 1) /注意这里的else ift+;printf(%d, t);return 0;题22:学生排队#includeint main()int i, j, n, m;int p, q, k;scanf(%d%d, &n, &m);int a1001 = 0 ;for (i = 1; i = n; i+)ai = i;for (i = 1; i = m; i+)scanf(%d%d, &p, &q);for (j = 1; j = n; j+)if (aj = p)br

20、eak; /注意中断if (q = q; k-) /注意循环移动数组中的元素aj + k + 1 = aj + k;aj + q = p;else if (q 0)for (k = 0; k q; k+)aj + k = aj + k + 1;aj + q = p;for (i = 1; i = n; i+)printf(%d , ai);return 0; 题23:打酱油#includeint main()int N, t = 0;scanf(%d, &N);if (N 30)t = N / 10;else if (N 50)t = (N - 30) / 10 + 4;elset = (N

21、/ 50) * 7 + (N - (N / 50) * 50) / 30) * 4 + (N - (N / 50) * 50 - (N - (N / 50) * 50)/30)*30) / 10;/注意计算printf(%d, t);return 0;题24:公共钥匙盒#include struct seq int key;int action;int time;int main() int num, order;int i = 0, j = 0;int w = 0, s = 0, c = 0;scanf(%d%d, &num, &order);int keysnum;struct seq a

22、rrorder * 2, temp;for (i = 0; i num; i+)keysi = i + 1;for (i = 0; i order; i+)scanf(%d%d%d, &w, &s, &c);arr2 * i.key = w;arr2 * i.action = 0;arr2 * i.time = s;arr2 * i + 1.key = w;arr2 * i + 1.action = 1;arr2 * i + 1.time = s + c;for (i = 0; i order * 2; i+)for (j = i + 1; j arrj.time)temp = arri;ar

23、ri = arrj;arrj = temp;else if (arri.time = arrj.time)if (arri.action = 0 & arrj.action = 1)temp = arri;arri = arrj;arrj = temp;else if (arri.action = arrj.action & arri.key arrj.key)temp = arri;arri = arrj;arrj = temp;for (i = 0; i order * 2; i+)if (arri.action = 0)for (j = 0; j num; j+)if (keysj =

24、arri.key)keysj = 0;break;elsefor (j = 0; j num; j+)if (keysj = 0)keysj = arri.key;break;for (i = 0; i order * 2; i+)printf(%d %d %dn, arri.key, arri.action, arri.time);for (i = 0; i num; i+)printf(%d , keysi);return 0;题25:最小差值#include#includeint main()int i, j, n,t;int a1001 = 0 ;scanf(%d, &n);for (

25、i = 0; i n; i+)scanf(%d, &ai);t = 999; /注意t赋一个较大值,因为2=n=1000,差值最大为998for (i = 0; i n - 1; i+)for (j = i + 1; j abs(ai - aj)t = abs(ai - aj);printf(%d, t);return 0;题26:游戏#includeint main()int i, n, k,t;int count = 0;int a1001 = 0 ;scanf(%d%d, &n, &k);for (i = 0; i 1)if (ai = 1)count+;if (count%k = 0) | (count % 10 = k)ai = 0;t-;i+;i = i%n; /圈数for (i = 0; i n; i+)if (ai = 1)printf(%d, i + 1);return 0;题27:跳一跳#includeint main()int i, n;int sum = 0,t=0;while (1)scanf(%d, &n);if (n = 0)break;elseif (n = 1)sum+;t = 0;if (n = 2)sum = sum + 2 * (t + 1);t+;printf(%d, sum);return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1