第三届蓝桥杯C语言本科组复赛题与及解析
- 格式:doc
- 大小:267.00 KB
- 文档页数:21
2016蓝桥杯c-c++B组省赛试题及解析第一题煤球数目有一堆煤球,堆成三角棱锥形。
具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:171700#include<>int main(){int a[101] ={0};for(int i = 1 ; i < 101 ; i ++) a[i] = a[i-1] + i;int ans = 0;for(int j = 1 ; j < 101 ; j ++) ans += a[j];printf("%d\n",ans);return 0;}第二题生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:26#include<>int main(){int start,end;for(start = 1 ; start < 236 ; start ++){for( end = start ; end < 236 ; end ++ ){int sum = 0;for(int i = start; i <= end; i ++)sum += i;if( sum == 236){printf("start : %d end : %d\n",start,end); }}}return 0;}第三题凑算式B DEFA + --- + ------- = 10C GHI(如果显示有问题,可以参见【图】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
c复赛试题及答案
# c复赛试题及答案
1. 问题描述
编写一个程序,计算并输出1到100之间所有整数的和。
2. 输入格式
无输入。
3. 输出格式
输出一个整数,表示1到100之间所有整数的和。
4. 样例输入
无。
5. 样例输出
5050
6. 问题分析
本题要求计算1到100之间所有整数的和。
这是一个简单的数学问题,可以通过循环或者数学公式来解决。
7. 算法描述
使用循环结构,从1遍历到100,将每个数累加到总和中。
8. 代码实现
```c
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
printf("%d\n", sum);
return 0;
}
```
9. 测试结果
程序运行后,输出结果为5050,符合预期。
10. 注意事项
- 确保循环从1开始,到100结束。
- 使用`printf`函数输出结果。
11. 扩展思考
- 如何计算1到任意正整数n的和?
- 可以使用公式`n * (n + 1) / 2`来计算。
12. 评分标准
- 程序正确输出结果,得满分。
- 程序有语法错误或逻辑错误,不得分。
13. 附加说明
- 本题考查基本的循环结构和累加求和。
- 注意代码的可读性和规范性。
蓝桥杯 c 试题及答案蓝桥杯是中国著名的信息技术竞赛,被誉为“程序员的奥林匹克”。
每年举办的蓝桥杯分为初赛和复赛两个阶段,覆盖了大学生、高中生和中学生等多个年龄段。
本文将为大家介绍蓝桥杯 C 试题及答案,希望能对参赛者有所帮助。
一、试题概述蓝桥杯 C 试题是蓝桥杯竞赛中的一道编程题目,通常难度较大,需要对编程语言有一定的掌握和理解。
该题目主要涉及算法、数据结构、编程思想等方面的知识,要求选手提交一个能够运行的程序,并输出符合题目要求的结果。
二、题目要求蓝桥杯 C 试题通常以具体的问题场景为背景,要求选手使用编程语言解决实际的问题。
试题要求选手根据题目描述,编写相应的程序代码,并在规定的时间内提交答案。
三、解题思路解决蓝桥杯 C 试题首先需要仔细阅读题目要求和描述,理解问题的背景和具体需求。
在编写程序时,需要灵活运用所学的算法和数据结构知识,合理选择合适的数据类型和数据结构来解决问题。
解题思路可以从以下几个方面展开:1. 根据题目描述建立适当的数据模型;2. 分析题目需求,确定解题思路;3. 编写代码实现解题思路;4. 测试代码,确保程序运行正确。
四、参考答案由于蓝桥杯竞赛的试题内容每年都有所变化,因此无法提供具体的参考答案。
但是,在参加蓝桥杯之前,可以通过学习历年的蓝桥杯 C 试题,了解题型和解题方法,提高自己的编程能力。
在备战蓝桥杯时,可以参考以下几点建议:1. 多做练习题,熟悉各种题型;2. 学习常用的算法和数据结构,如排序、查找、树、图等;3. 加强对编程语言的掌握,熟悉常用的语法和函数库;4. 参加类似的编程比赛,提高解题速度和编码能力;5. 与他人讨论、交流,学习他人的解题思路和方法。
总之,蓝桥杯 C 试题及答案是参赛者备战蓝桥杯竞赛的重要参考资料。
希望本文的介绍能够对参赛者有所帮助,并祝愿大家在蓝桥杯竞赛中取得好成绩!。
1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据以下条件判断哪些人参加了竞赛:〔1〕A参加时,B也参加;〔2〕B和C只有一个人参加;〔3〕C和D或者都参加,或者都不参加;〔4〕D和E中至少有一个人参加;〔5〕如果E参加,那么A和D也都参加。
00110 c、d#include<stdio.h>int main()int a,b,c,d,e; /*0表示不参加, 1表示参加.*/for(a=0;a<2;a++)for(b=0;b<2;b++)for(c=0;c<2;c++)for(d=0;d<2;d++)for(e=0;e<2;e++)if(a&&!b) continue;if(b&&c||!b&&!c) continue;if(c&&!d||!c&&d) continue;if(!d&&!e) continue;if(e&&(!a||!d)) continue;printf("%d%d%d%d%d",a,b,c,d,e);return 0;2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑假设干人,但有以下限制条件:1)A和B两人中至少去一人;2)A和D不能一起去;3)A、E和F三人中要派两人去;4)B和C都去或都不去;5)C和D两人中去一个;6)假设D不去,那么E也不去。
试编写一个程序,输出问应当让哪几个人去?#include<stdio.h>int main()int a,b,c,d,e,f;for(a=1;a>=0;a--)for(b=1;b>=0;b--)/*1:去 0:不去*/for(c=1;c>=0;c--)for(d=1;d>=0;d--)for(e=1;e>=0;e--)for(f=1;f>=0;f--)if(a+b>=1&&a+d!=2&&a+e+f==2&&b==c&&c+d==1&&(d+e==0||d==1 ))printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d",a,b,c,d,e,f);return 0;3、警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。
1、A、B、C、D、E五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛:(1)A参加时,B也参加;(2)B和C只有一个人参加;(3)C和D或者都参加,或者都不参加;(4)D和E中至少有一个人参加;(5)如果E参加,那么A和D也都参加。
00110 c、d#include<stdio.h>int main(){int a,b,c,d,e; /*0表示不参加, 1表示参加.*/for(a=0;a<2;a++)for(b=0;b<2;b++)for(c=0;c<2;c++)for(d=0;d<2;d++)for(e=0;e<2;e++){if(a&&!b) continue;if(b&&c||!b&&!c) continue;if(c&&!d||!c&&d) continue;if(!d&&!e) continue;if(e&&(!a||!d)) continue;printf("%d%d%d%d%d",a,b,c,d,e);}return 0;}2、某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:1)A和B两人中至少去一人;2)A和D不能一起去;3)A、E和F三人中要派两人去;4)B和C都去或都不去;5)C和D两人中去一个;6)若D不去,则E也不去。
试编写一个程序,输出问应当让哪几个人去?#include<stdio.h>int main(){int a,b,c,d,e,f;for(a=1;a>=0;a--)for(b=1;b>=0;b--)/*1:去 0:不去*/for(c=1;c>=0;c--)for(d=1;d>=0;d--)for(e=1;e>=0;e--)for(f=1;f>=0;f--){if(a+b>=1&&a+d!=2&&a+e+f==2&&b==c&&c+d==1&&(d+e==0||d==1))printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d",a,b,c,d,e,f);}return 0;}3、警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。
大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。
答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。
第三届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛C/C++程序设计本科组比赛选手须知:●比赛时间为4小时(9:00-13:00)。
●参赛选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等身份信息或其它与竞赛题目无关的内容,否则成绩无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”,总计100分。
结果填空:5分代码填空:16 分程序设计:19+27+33 = 79分结果填空题:要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案存入【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)存入【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
选手的程序只有能运行出正确结果的时候才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对每个编程题目,要求选手把所有函数写在一个文件中。
调试好后,存入与【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。
例如,不能使用CString类型(属于MFC类库)。
1.结果填空(满分5分)题目在【准考证+姓名文件夹】下对应题号的“题目.rar”中,请先解压该文件。
解压密码以考场公布为准。
把答案存入【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
蓝桥杯c组试题及答案一、选择题(每题5分,共20分)1. 下列关于C语言的描述,错误的是:A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持函数式编程答案:B2. 在C语言中,用于定义一个结构体的关键字是:A. structB. unionC. enumD. typedef答案:A3. 下列关于指针的描述,正确的是:A. 指针可以存储变量的地址B. 指针可以存储变量的值C. 指针不能存储数组的地址D. 指针不能存储函数的地址答案:A4. 在C语言中,用于定义一个函数的关键字是:A. functionB. defC. voidD. int答案:D二、填空题(每题5分,共20分)1. 在C语言中,表示逻辑与的运算符是______。
答案:&&2. 用于声明一个整型变量的关键字是______。
答案:int3. 在C语言中,数组的索引是从______开始的。
答案:04. C语言中,用于结束一个程序的语句是______。
答案:return三、编程题(每题30分,共60分)1. 编写一个C语言程序,实现计算并输出100以内所有偶数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 2; i <= 100; i += 2) {sum += i;}printf("Sum of even numbers from 1 to 100 is: %d\n", sum); return 0;}```2. 编写一个C语言程序,实现一个简单的计算器,可以计算两个整数的加、减、乘、除。
```c#include <stdio.h>int main() {int a, b;char op;float result;printf("Enter first number: ");scanf("%d", &a);printf("Enter operator (+, -, *, /): ");scanf(" %c", &op);printf("Enter second number: ");scanf("%d", &b);switch (op) {case '+':result = a + b;break;case '-':result = a - b;break;case '*':result = a * b;break;case '/':if (b != 0)result = (float)a / b;else {printf("Division by zero error!\n"); return 1;}break;default:printf("Invalid operator!\n");return 1;}printf("Result: %.2f\n", result);return 0;}```。
蓝桥杯c语言历年试题及答案蓝桥杯C语言历年试题及答案1. 题目:求两个整数的最大公约数(GCD)。
答案:可以使用辗转相除法(欧几里得算法)来求解两个整数的最大公约数。
2. 题目:编写一个函数,实现字符串的反转。
答案:可以使用双指针法,一个指针指向字符串的开头,另一个指向字符串的结尾,然后交换这两个指针所指向的字符,直到两个指针相遇。
3. 题目:计算一个整数数组中所有元素的和。
答案:遍历数组中的每个元素,并将它们累加到一个变量中。
4. 题目:判断一个整数是否是素数。
答案:如果一个数大于1,且除了1和它本身外,不能被其他自然数整除,则它是素数。
5. 题目:实现一个函数,计算一个整数的阶乘。
答案:可以使用递归或循环来实现。
递归方法中,n的阶乘等于n 乘以(n-1)的阶乘。
6. 题目:编写一个程序,实现字符串的去重。
答案:可以使用哈希表来存储已经出现过的字符,遍历字符串时,如果字符未出现过,则将其添加到结果字符串中。
7. 题目:实现一个函数,计算数组中每个元素出现的次数。
答案:可以使用哈希表来存储每个元素及其出现的次数。
8. 题目:编写一个程序,实现二分查找算法。
答案:二分查找算法的基本思想是将数组分为两部分,取中间元素与目标值比较,如果相等,则找到目标值;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。
9. 题目:实现一个函数,计算一个整数的各位数字之和。
答案:可以使用循环,每次取整数的最后一位数字,然后将其加到一个变量中,并将整数除以10。
10. 题目:编写一个程序,实现快速排序算法。
答案:快速排序算法是一种分治法策略,通过选择一个基准值,将数组分为两部分,一部分包含小于基准值的元素,另一部分包含大于基准值的元素,然后递归地对这两部分进行快速排序。
以上是蓝桥杯C语言历年试题及答案的示例。
蓝桥杯c语言试题蓝桥杯是中国著名的计算机科学与技术大赛,每年都吸引着众多C 语言爱好者和程序设计师的参与。
C语言作为一种被广泛使用的编程语言,也成为了蓝桥杯的重点考察内容之一。
在本文中,我们将介绍一道蓝桥杯C语言试题,并提供解答思路和示例代码。
题目描述:给定一个正整数n(1 <= n <= 1000),请编写一个程序,找出1到n之间所有能被3或5整除的数的和。
解答思路:为了求解给定数n范围内能被3或5整除的数的和,我们可以使用循环和判断语句来筛选出满足条件的数,并进行累加求和。
具体步骤如下:1. 初始化一个变量sum,用于存储满足条件的数的和。
2. 使用循环遍历1到n之间的所有数,可以使用for循环或while循环。
3. 在循环中,使用if语句判断当前数是否能够被3或5整除。
4. 若当前数可以被3或5整除,将该数累加到sum中。
5. 循环结束后,输出sum的值,即为满足条件的数的和。
示例代码:```c#include <stdio.h>int main() {int n;printf("请输入一个正整数n:");scanf("%d", &n);int sum = 0;for (int i = 1; i <= n; i++) {if (i % 3 == 0 || i % 5 == 0) {sum += i;}}printf("1到%d之间所有能被3或5整除的数的和为:%d\n", n, sum);return 0;}```通过以上示例代码,我们可以实现对给定数n范围内能被3或5整除的数的求和。
在程序运行时,用户需输入一个正整数n,程序将输出1到n之间能被3或5整除的数的和。
总结:本文介绍了一道蓝桥杯C语言试题,并提供了解答思路和示例代码。
使用循环和判断语句,可以轻松实现对给定数范围内能被指定数值整除的数的求和。
第三届蓝桥杯C语言本科组复赛题与及解析1:假设有两种微生物 X 和 YX出生后每隔3分钟分裂一次<数目加倍),Y出生后每隔2分钟分裂一次<数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草!//Muse牧马指证这道题的答案是错的并给出了代码。
我理解错了题意,误以为是“兔子繁殖”了。
//代码:#include <cstdio>int main(>{longint X=10, Y=90。
for(int k=1。
k<=120。
k++>//半分钟一个单位{if(k%2==1>Y -= X。
//因为X出生半分钟后就要吃Y,尔后每1分钟要吃Y,所以永远都是奇数个半分钟的时候吃Y,又因为此时X不会增长<题目为了减小讨论的复杂度),所以直接减X数量即可。
if(k%4==0>Y *= 2。
//每2分钟翻倍if(k%6==0>X *= 2。
//每3分钟翻倍,X和Y的翻倍是相互独立的,不需要另作讨论。
}printf("%d", Y>。
return0。
}b5E2RGbCAP2:ABCDE * ? = EDCBA“ABCDE代表不同的数字,问号也代表某个数字!"21978//5层循环就OK了3:有一群海盗<不多于20人),在船上比拼酒量。
过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。
再打开一瓶酒平分,又有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。
当第4瓶酒平分喝下后,大家都倒下了。
等船长醒来,发现海盗船搁浅了。
他在航海日志中写到:“......昨天,我正好喝了一瓶.......奉劝大家,开船不喝酒,喝酒别开船......”请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。
如果有多个可能的答案,请列出所有答案,每个答案占一行。
格式是:人数,人数,...例如,有一种可能是:20,5,4,2,0p1EanqFDPw//松鼠123 告诉我这道题的答案要严格递减的,所以我删掉了不符合要求的组合。
20 5 4 2 018 9 3 2 015 10 3 2 012 6 4 2//先求处4个数【递减的,4层循环就OK】的最小公倍数,然后求倒数和是否为14:某电视台举办了低碳生活大奖赛。
题目的计分规则相当奇怪:每位选手需要回答10个问题<其编号为1到10),越后面越有难度。
答对的,当前分数翻倍;答错了则扣掉与题号相同的分数<选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他<她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。
例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。
每个答案占一行。
DXDiTa9E3d101101000001110100000010110011//赢或不赢,只有10道题,递归去吧。
5:顺时针转置矩阵sizeof(int>*rank*rankrank-1-i/rank+rank*(i%rank>//经神@雕指正。
我写的4而不是rank。
应该是rank才对。
RTCrpUDGiTvoid rotate(int* x, int rank>{int* y = (int*>malloc(___________________>。
// 填空for(int i=0。
i<rank * rank。
i++>{y[_________________________] = x[i]。
// 填空}for(i=0。
i<rank*rank。
i++>{x[i] = y[i]。
}free(y>。
}int main(int argc, char* argv[]>{int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14, 15,16}}。
int rank = 4。
rotate(&x[0][0], rank>。
for(int i=0。
i<rank。
i++>{for(int j=0。
j<rank。
j++>{printf("%4d", x[i][j]>。
}printf("\n">。
}return0。
}5PCzVD7HxA6:大数乘法n3/base+n2/base+n4%baser[2]/basevoid bigmul(int x, int y, int r[]> {intbase = 10000。
int x2 = x / base。
int x1 = x % base。
int y2 = y / base。
int y1 = y % base。
int n1 = x1 * y1。
int n2 = x1 * y2。
int n3 = x2 * y1。
int n4 = x2 * y2。
r[3] = n1 % base。
r[2] = n1 / base + n2 % base + n3 % base。
r[1] = ____________________________________________。
/ / 填空r[0] = n4 / base。
r[1] += _______________________。
// 填空r[2] = r[2] % base。
r[0] += r[1] / base。
r[1] = r[1] % base。
}int main(int argc, char* argv[]>{int x[] = {0,0,0,0}。
bigmul(87654321, 12345678, x>。
printf("%d%d%d%d\n", x[0],x[1],x[2],x[3]>。
return0。
}jLBHrnAILg7:6*6棋盘放棋子,使每行每列都是3个<0未放1放了)NumRow!=3 || NumCol!=3f(x,r,c+1>x[r][c]==1int N = 0。
bool CheckStoneNum(int x[][6]>{for(int k=0。
k<6。
k++>{int NumRow = 0。
int NumCol = 0。
for(int i=0。
i<6。
i++>{if(x[k][i]> NumRow++。
if(x[i][k]> NumCol++。
}if(_____________________> returnfalse。
// 填空 }returntrue。
}int GetRowStoneNum(int x[][6], int r>{int sum = 0。
for(int i=0。
i<6。
i++> if(x[r][i]> sum++。
return sum。
}int GetColStoneNum(int x[][6], int c>{int sum = 0。
for(int i=0。
i<6。
i++> if(x[i][c]> sum++。
return sum。
}void show(int x[][6]>{for(int i=0。
i<6。
i++>{for(int j=0。
j<6。
j++> printf("%2d", x[i][j]>。
printf("\n">。
}printf("\n">。
}void f(int x[][6], int r, int c>。
void GoNext(int x[][6], int r, int c>{if(c<6>_______________________。
// 填空elsef(x, r+1, 0>。
}void f(int x[][6], int r, int c>{if(r==6>{if(CheckStoneNum(x>>{N++。
show(x>。
}return。
}if(______________> // 已经放有了棋子{GoNext(x,r,c>。
return。
}int rr = GetRowStoneNum(x,r>。
int cc = GetColStoneNum(x,c>。
if(cc>=3> // 本列已满GoNext(x,r,c>。
elseif(rr>=3> // 本行已满f(x, r+1, 0>。
else{x[r][c] = 1。
GoNext(x,r,c>。
x[r][c] = 0。
if(!(3-rr >= 6-c || 3-cc >= 6-r>> // 本行或本列严重缺子,则本格不能空着!GoNext(x,r,c>。
}}int main(int argc, char* argv[]>{int x[6][6] = {{1,0,0,0,0,0},{0,0,1,0,1,0},{0,0,1,1,0,1},{0,1,0,0,1,0},{0,0,0,1,0,0},{1,0,1,0,0,1}}。
f(x, 0, 0>。
printf("%d\n", N>。
return0。
}xHAQX74J0X8:这个程序的任务就是把一串拼音字母转换为6位数字<密码)。
我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximin g>作为输入,程序输出6位数字。
变换的过程如下:第一步. 把字符串6个一组折叠起来,比如wangximing则变为:wangximing第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:228202220206120185第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。