2013蓝桥杯初赛c语言专科组--题目与答案资料

合集下载

蓝桥比赛练习C语言[5篇]

蓝桥比赛练习C语言[5篇]

蓝桥比赛练习C语言[5篇]第一篇:蓝桥比赛练习C语言时间限制:1.0s 内存限制:256.0MB1闰年判断问题描述给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年: 1.年份是4的倍数而不是100的倍数; 2.年份是400的倍数。

其他的年份都不是闰年。

输入格式输入包含一个整数y,表示当前的年份。

输出格式输出一行,如果给定的年份是闰年,则输出yes,否则输出no。

说明:当试题指定你输出一个字符串作为结果(比如本题的yes 或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分。

样例输入2013 样例输出no 样例输入2016 样例输出yes 数据规模与约定1990 <= y <= 2050。

本题的C参考代码如下:1.#include2.int main()3.{4.int y;5.scanf(“%d”, &y);6.if(y%4==0 && y%100!=0 || y%400==0)7.printf(“yes”);8.else9.printf(“no”);10.return 0;11.} 2.01字串问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。

它们的前几个是:00000 00001 00010 00011 00100 请按从小到大的顺序输出这32种01串。

输入格式本试题没有输入。

输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。

样例输出00000 00001 00010 00011 本题的C参考代码如下:1.#include2.int main()3.{4.int i, j, k, l, m;5.for(i = 0;i <= 1;++i)6.for(j = 0;j <= 1;++j)7.for(k = 0;k <= 1;++k)8.for(l = 0;l <= 1;++l)9.for(m = 0;m <= 1;++m)10.printf(“%d%d%d%d%dn”, i, j, k, l, m);11.return 0;12.}3.字母图形问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

C语言初赛题库 带答案

C语言初赛题库 带答案

1、执行以下程序时输人1234567,则输出结果是(D)。

#includemain(){int a =1,b;scanf("%3d%2d",&a,&b);printf("%d%d\n",a,b);}A.12367B.12346C.12312D.123452、C语言主要是借助以下哪个功能来实现程序模块化( A )A.定义函数B.定义常量和外部变量C.三种基本结构语句D.丰富的数据类型3、关于C语言中数的表示,以下叙述正确的是(B)。

A.只有整型数在允许范围内能精确无误的表示,实型数会有误差B.只要在在允许范围内整型和实型都能精确表示C.只有实型数在允许范围内能精确无误的表示,整型数会有误差D.只有八进制表示的数在不会有误差4、若有定义和语句:int a,b; scanf("%d,%d",&a,&b); 以下选项中的输入数据,不能把值3 赋给变量a、5 赋给变量b 的是DA.3,5,B.3,5,4C.3 ,5D.3.55、设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是( C)A.autoB.registerC.staticD.auto或register6、若有定义语句 int b=2; 则表达式(b<2)/(3||b)的值是CA.4B.8C.0D.27、设有定义:int x=3;,以下表达式中,值不为l2的是(D)。

A.x*=x+1B.x++,3*xC.x*=(1+x)D.2*x,x+=68、以下关于long、int和short类型数据占用内存大小的叙述中正确的是(D)。

A .均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定9、若有定义语句:int k1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为(B)。

2010-2013蓝桥杯预赛真题及详细答案

2010-2013蓝桥杯预赛真题及详细答案

第三届蓝桥桥杯预赛真题及详细答案一、微生物增殖假设有两种微生物X和Y, X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。

一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。

现在已知有新出生的X=10, Y=89,求60分钟后Y的数目。

如果X=10,Y=90呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。

把答案写在“解答.txt”中,不要写在这里!答案:0 和94371840(此题比较简单就不写程序了,以下均有程序)二、古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。

请你利用计算机的优势,找到破解的答案。

把ABCDE 所代表的数字写出来。

答案写在“解答.txt”中,不要写在这里!参考答案:21978参考程序:#include<stdio.h>void main(){int k,t1 ,t;for(k=10234;k<50000;k++){bool flag[10]={0};t=k;t1=0;while(t){if(flag[t%10])break ;flag[t%10] = true ;t1 = t1*10 + t%10 ;t /= 10 ;}if( t==0 && t1%k==0){printf("%d * %d = %d\n",k,t1/k,t1);}}}三、比酒量有一群海盗(不多于20人),在船上比拼酒量。

过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。

再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。

当第4瓶酒平分喝下后,大家都倒下了。

2013蓝桥杯试题及答案

2013蓝桥杯试题及答案

2013蓝桥杯试题及答案一、选择题1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 在Java中,以下哪个是合法的类名?A. 2ClassB. classC. ClassD. Class_答案:C3. 在HTML中,用于插入图片的标签是:A. <img>B. <image>C. <picture>D. <photo>答案:A4. 在数据库设计中,实现表之间关系的是:A. 主键B. 外键C. 索引D. 视图答案:B5. 在Python中,以下哪个是正确的字符串格式化方法?A. %sB. .format()C. str()D. printf()答案:B二、填空题6. 在C++中,标准模板库(STL)中的_________容器提供了平均时间复杂度为O(1)的插入和删除操作。

答案:vector7. 在JavaScript中,用于定义一个函数的关键字是_________。

答案:function8. 在SQL中,用于查询数据的关键字是_________。

答案:SELECT9. 在CSS中,用于设置元素宽度的属性是_________。

答案:width10. 在操作系统中,进程和线程的主要区别在于_________。

答案:进程是资源分配的基本单位,线程是执行的基本单位。

三、简答题11. 请简述软件开发过程中的需求分析阶段的主要任务。

答案:需求分析阶段的主要任务是确定软件系统的功能和性能要求。

这包括与客户沟通以了解他们的需求,收集和分析这些需求,然后明确和文档化软件必须执行的功能。

此外,还包括确定系统的性能要求,如响应时间、并发用户数等。

12. 请描述在网络编程中,TCP和UDP协议的主要区别。

答案:TCP(传输控制协议)和UDP(用户数据报协议)是网络层的两种主要协议。

TCP提供面向连接、可靠的字节流服务,它确保数据包按顺序、无误差地传输,适用于需要可靠传输的应用,如网页浏览和文件传输。

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案蓝桥杯第八届C语言试题及答案1. 题目一:字符串反转要求:编写一个函数,实现字符串的反转。

```cvoid reverseString(char* str) {int i = 0, j = strlen(str) - 1;while (i < j) {char temp = str[i];str[i] = str[j];str[j] = temp;i++;j--;}}```答案:上述代码定义了一个名为`reverseString`的函数,它接受一个字符数组`str`作为参数。

通过交换数组两端的字符,实现了字符串的反转。

2. 题目二:寻找最大数要求:给定一个整数数组,找出数组中的最大数。

```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```答案:函数`findMax`接受一个整数数组`arr`和数组的大小`size`作为参数。

它初始化最大数为数组的第一个元素,然后遍历数组,如果发现更大的数,则更新最大数。

最后返回找到的最大数。

3. 题目三:计算阶乘要求:编写一个函数,计算一个整数的阶乘。

```clong long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```答案:函数`factorial`接受一个整数`n`作为参数。

如果`n`为0,直接返回1,因为0的阶乘定义为1。

否则,初始化结果为1,并通过循环计算从1到`n`的乘积,最后返回计算出的阶乘值。

2013年蓝桥杯模拟赛答案

2013年蓝桥杯模拟赛答案

2013年蓝桥杯模拟赛答案⼀、标题: 1的个数从1到20的所有数字中含有多少个“1”仔细数⼀下,应该是12个。

那么从1到1000的整数中,含有多少个“1”呢?请填写该数字。

#include <iostream>using namespace std;#define MAX 1000int main(){int count = 0;int m;for(int i = 1; i <= MAX; i++){int j = i;while(j){m = j % 10;if(m == 1){count++;}j = j / 10;}}cout << count << endl;}题⽬标题: 1的个数参考答案:301得分:10⼆、标题:硬币⽅案有50枚硬币,可能包括4种类型:1元,5⾓,1⾓,5分。

已知总价值为20元。

求各种硬币的数量。

⽐如:2,34,6,8 就是⼀种答案。

⽽ 2,33,15,0 是另⼀个可能的答案,显然答案不唯⼀。

你的任务是确定类似这样的不同的⽅案⼀共有多少个(包括已经给出的2个)?直接提交该数字,不要提交多余的内容。

#include <iostream>using namespace std;#define MAX 20int main(){int count = 0;for(int i = 0; i <= 20; i++){for(int j = 0; j <= 40; j++){for(int k = 0; k <= 200; k++){for(int m = 0; m <= 400; m++){if(i + j + m + k == 50 && i * 100 + j * 50 + k *10 + m * 5 == 2000){count++;}}}}}cout << count << endl;}题⽬标题:硬币⽅案参考答案:50三、标题:四⽅定理数论中有著名的四⽅定理:所有⾃然数⾄多只要⽤四个数的平⽅和就可以表⽰。

蓝桥杯c语言答案

蓝桥杯c语言答案

蓝桥杯c语言答案【篇一:2013蓝桥杯c语言编程答案】代码2. 标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为 36 * 495 = 396 * 45 = 17820类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

答案直接通过浏览器提交。

注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

答案:1423. 标题: 振兴中华小明参加了学校的趣味运动会,其中的一个项目是:跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)从我做起振我做起振兴做起振兴中起振兴中华比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。

一直要跳到“华”字结束。

要求跳过的路线刚好构成“从我做起振兴中华”这句话。

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?答案是一个整数,请通过浏览器直接提交该数字。

答案:354. 标题: 幻方填空幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。

欧洲最著名的幻方是德国数学家、画家迪勒创作的版画《忧郁》中给出的一个4阶幻方。

他把1,2,3,...16 这16个数字填写在4 x 4的方格中。

如图p1.jpg所示,即:16 ? ? 13? ? 11 ?9 ? ? *? 15 ? 1表中有些数字已经显露出来,还有些用?和*代替。

2013 c语言试题及答案

2013 c语言试题及答案

理论考试(120分钟)一、单项选择题(在每小题的4个备选答案中,选出一个最佳答案,共15小题;每小题2分,共30分)1.一个C程序的执行是从( A)A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2.已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是( B) if (x>y) z=x; x=y;y=z;A. 10,20,30B. 20,30,30C. 20,30,10D. 20,30,20 3.int a=1,b=2,x=3; 表达式:x*=a+b计算后x的值为:( B )A. 5B. 9C. 3D. 64.下列选项,在C语言中能作为合法标识符的是( D)A. %xB. a+bC. 2_int_12_D. int_2_5.#include<stdio.h> (A)void main(){int sum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%d %d\n",pad, sum);}A.7 6B. 6 5C. 7 5D. 6 6 6.若有说明:int a[10];则对a 数组元素的正确引用是( D )A. a[10]B. a[3, 5]C. a(5)D. a[10-10] 7.请读程序#include<stdio.h>#define MUL(x,y) (x)*yvoid main(){ int a=3, b=4, c;c=MUL(a++, b++);printf("%d\n", c);}上面程序的输出结果是(A)。

A. 12B. 15C. 20D. 168.若用数组名作为函数调用的实参,传递给形参的是数组的( A )A. 数组的首地址B. 数组第一个元素的值C. 数组中全部元素的值D. 数组元素的个数9.阅读以下程序void main(){ int a=5,b=0,c=1;if(a=b+c) printf(“***\n”);else printf(“$$$\n”);}以上程序( C)A. 语法有错不能通过编译B. 可以通过编译但不能通过连接C. 输出***D. 输出$$$10.下列关于函数定义正确的是( D )A. fun(int x,y){ int z;return z;}B. void fun(int x,int y){ return x+y;}C. fun(x,y){int x,y;double z;z=x+y;return z;}D. double fun(int x,int y) { double z;z=x+y;return z;}11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B )A. 地址传递B. 单向值传递C. 由实参传给形参,再由形参传回实参D. 传递方式由用户指定12.具有相同基类型的指针变量P和数组Y,下列写法中不合法的是( D ) A.P = Y B.*P = Y[i]C.P = &Y[i] D.P = &Y13.设x和y均为int型变量,则下列语句:x+=y; y=x-y; x- =y;的功能是(D ) A.把x和y按从大到小排列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 题目标题: 猜年龄美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。

他曾在1935~1936年应邀来中国清华大学讲学。

一次,他参加某个重要会议,年轻的脸孔引人注目。

于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。

我年龄的4次方是个6位数。

这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。

”请你推算一下,他当时到底有多年轻。

通过浏览器,直接提交他那时的年龄数字。

注意:不要提交解答过程,或其它的说明文字。

答案:182. 标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。

有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为36 * 495 = 396 * 45 = 17820类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。

满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。

答案直接通过浏览器提交。

注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。

答案:1423. 标题: 振兴中华小明参加了学校的趣味运动会,其中的一个项目是:跳格子。

地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)从我做起振我做起振兴做起振兴中起振兴中华比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。

一直要跳到“华”字结束。

要求跳过的路线刚好构成“从我做起振兴中华”这句话。

请你帮助小明算一算他一共有多少种可能的跳跃路线呢?答案是一个整数,请通过浏览器直接提交该数字。

答案:354. 标题: 幻方填空幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。

欧洲最著名的幻方是德国数学家、画家迪勒创作的版画《忧郁》中给出的一个4阶幻方。

他把1,2,3,...16这16个数字填写在4 x 4的方格中。

如图p1.jpg所示,即:16 ? ? 13? ? 11 ?9 ? ? *? 15 ? 1表中有些数字已经显露出来,还有些用?和*代替。

请你计算出? 和 * 所代表的数字。

并把 *所代表的数字作为本题答案提交。

答案是一个整数,请通过浏览器直接提交该数字。

答案:125. 题目标题:公约数公倍数我们经常会用到求两个整数的最大公约数和最小公倍数的功能。

下面的程序给出了一种算法。

函数 myfunc 接受两个正整数a,b经过运算后打印出它们的最大公约数和最小公倍数。

此时,调用 myfunc(15,20)将会输出:360// 交换数值void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}void myfunc(int a, int b){int m,n,r;if(a<b) swap(&a,&b);m=a;n=b;r=a%b;while(r!=0){a=b;b=r;r=a%b;}printf("%d\n",b); // 最大公约数printf("%d\n", ____________________________________); // 最小公倍数}请分析代码逻辑,并推测划线处的代码,通过网页提交。

答案: m*n/b标题:三部排序一般的排序有许多经典算法,如快速排序、希尔排序等。

但实际应用时,经常会或多或少有一些特殊的要求。

我们没必要套用那些经典算法,可以根据实际情况建立更好的解法。

比如,对一个整型数组中的数字进行分类排序:使得负数都靠左端,正数都靠右端,0在中部。

注意问题的特点是:负数区域和正数区域内并不要求有序。

可以利用这个特点通过1次线性扫描就结束战斗!!以下的程序实现了该目标。

其中x指向待排序的整型数组,len是数组的长度。

void sort3p(int* x, int len){int p = 0;int left = 0;int right = len-1;while(p<=right){if(x[p]<0){int t = x[left];x[left] = x[p];x[p] = t;left++;p++;}else if(x[p]>0){int t = x[right];x[right] = x[p];x[p] = t;right--;}else{__________________________; //填空位置}}}如果给定数组:25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0则排序后为:-3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25请分析代码逻辑,并推测划线处的代码,通过网页提交答案:p++7. 标题:核桃的数量小张是软件项目经理,他带领3个开发组。

工期紧,今天都在加班呢。

为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。

他的要求是:1. 各组的核桃数量必须相同2. 各组内必须能平分核桃(当然是不能打碎的)3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)程序从标准输入读入:a b ca,b,c都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c<30)程序输出:一个正整数,表示每袋核桃的数量。

例如:用户输入:245程序输出:20再例如:用户输入:311程序输出:3#include <stdio.h>void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}int f(int a, int b){int m, n, r;if (a<b) swap(&a, &b);m = a, n = b, r = a % b;while (r != 0){a = b;b = r;r = a % b;}return m * n / b;}int main(){int a, b, c;scanf("%d %d %d", &a, &b, &c);printf("%d", f(f(a,b), f(b,c)));return0;}8. 题目标题:打印十字图小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)$$$$$$$$$$$$$$ $$$$ $$$$$$$$$ $$$$ $ $ $$ $$$ $$$$$ $$$ $$ $ $ $ $ $$ $ $$$ $ $$$ $ $$ $ $ $ $ $ $$ $ $ $$$$$ $ $ $$ $ $ $ $ $ $$ $ $$$ $ $$$ $ $$ $ $ $ $ $$ $$$ $$$$$ $$$ $$ $ $ $$$$ $$$$$$$$$ $$$$ $$$$$$$$$$$$$$对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。

输入格式:一个正整数 n (n<30) 表示要求打印图形的层数输出:对应包围层数的该标志。

例如:用户输入:1程序应该输出:..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..再例如:用户输入:3程序应该输出:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..请仔细观察样例,尤其要注意句点的数量和输出位置。

#include <stdio.h>void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}int go(int i, int j, int n){if (i > n * 2 + 3)i = n * 4 + 6 - i;if (j > n * 2 + 3)j = n * 4 + 6 - j;if (i < j) swap(&i, &j);if (i <= 2 && j <= 2) return0;if (i % 2 == 1 && j >= i - 2) return1;if (j % 2 == 1 && j != i - 1) return1;return0;}int main(){int n;scanf("%d", &n);int i, j;for (i = 1; i <= n*4+5; i++){for (j = 1; j <= n*4+5; j++){if (go(i, j, n))printf("$");elseprintf(".");}printf("\n");}return0;}9. 标题:带分数100可以表示为带分数的形式:100 = 3 + 69258 / 714还可以表示为:100 = 82 + 3546 / 197注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。

类似这样的带分数,100有11种表示法。

题目要求:从标准输入读入一个正整数N (N<1000*1000)程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。

注意:不要求输出每个表示,只统计有多少表示法!例如:用户输入:100程序输出:11再例如:用户输入:105程序输出:6#include <stdio.h>#define N 9int num[N] = {1,2,3,4,5,6,7,8,9};int tag[3][3] = {{4,3,2},{5,3,1},{6,2,1}};void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}int go(int i, int n){int a, b, c;int count = 0;for (a = 0; a < 3; a++){int r[3] = {0} , d = 0;for (b = 0; b < 3; b++)for (c = 0; c < tag[a][b]; c++)r[b] = r[b] * 10 + num[d++];if (r[0] + r[1] / r[2] == n && r[1] % r[2] == 0) count++;if (r[0] + r[2] / r[1] == n && r[2] % r[1] == 0) count++;if (r[1] + r[0] / r[2] == n && r[0] % r[2] == 0) count++;if (r[1] + r[2] / r[0] == n && r[2] % r[0] == 0) count++;if (r[2] + r[0] / r[1] == n && r[0] % r[1] == 0) count++;if (r[2] + r[1] / r[0] == n && r[1] % r[0] == 0) count++; }while (i < N){int k = i + 1;while (k < N){swap(num + i, num + k);count += go(i + 1, n);swap(num + i, num + k);k++;}i++;}return count;}int main(){int n;scanf("%d", &n);printf("%d", go(0, n));return0;}10. 标题:剪格子如图p1.jpg所示,3 x 3的格子中填写了一些整数。

相关文档
最新文档