欢迎来到天天文库
浏览记录
ID:11820727
大小:949.00 KB
页数:100页
时间:2018-07-14
《c语言竞赛题目大全》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言竞赛题目大全POWEREDBYSYD1682010年5月7日问题:假设在一个32位的机器上,需要将某个外设寄存器的第X位(最低位为第0位,最高位为第31位)设置成0,将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其它位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。输入的数据仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,(Y-X)的绝对值>=3,保证两次置位不会重合更改后的寄存器值R(16进制输出)。例如:nSampleInput123
2、45678,0,3输出:1234567c解题思路:很简单的位操作,但是需要注意的是Y那里是110,不能直接或上110,而是先两次SET,在CLR。答案:#include#defineCLR(r,x)r&=~(1UL<3、=(1UL<4、置位y-1位CLR(r,y-2);//置位y-2位printf("%x",r);return0;}第1题破译密码问题:据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。密码字母:ABCDEFGHIJKLMNOPQRSTUVWXYZM原文字母:VWXYZABCDEFGHIJKLMNOPQRSTU(注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。)5、输入:最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:1.起始行:START2.密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.3.结束行:END在最后一个数据集之后,是另一行:ENDOFINPUT。输出:每个数据集对应一行,是凯撒的原始消息。nSampleInputSTARTNSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJXENDSTARTNBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJ6、HTSINSWTRJ100ENDSTARTIFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJENDENDOFINPUTnSampleOutputINWAR,EVENTSOFIMPORTANCEARETHERESULTOFTRIVIALCAUSESIWOULDRATHERBEFIRSTINALITTLEIBERIANVILLAGETHANSECONDINROMEDANGERKNOWSFULLWELLTHATCAESARISMOREDANGEROUSTHANHE解题思路凯撒编码,判断字符7、是否是字母,并循环-5即可,记得要循环哦,非常简单的题目哦答案:#include#include#include#defineN202charstr[N]={0};intmain(){char*p;gets(str);while(strcmp(str,"ENDOFINPUT")!=0)//当没遇到消息集的结尾时{if((strcmp(str,"START")!=0)//当消息不是开始&&(strcmp(str,"END")!=0))//消息不是结尾{for(p=str;*p!=8、' ';p++)//对输入的串进行解密{if(isupper(*p))//判断是否为大写字符*p+=*p-5<'A'?26-5:-5;//进行转换,考虑边界问题!}puts(str);//输出字符}gets(str);//接受下一行}return0;}第1题小孩报数问题有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。或者是求最后出圈人的编号等等类似问题。输入:9、第一行输入小孩的人数N(N<=64),接下来每行输入一个小孩的名字(人名不超过15个字符)最后一行输入W,S(W
3、=(1UL<4、置位y-1位CLR(r,y-2);//置位y-2位printf("%x",r);return0;}第1题破译密码问题:据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。密码字母:ABCDEFGHIJKLMNOPQRSTUVWXYZM原文字母:VWXYZABCDEFGHIJKLMNOPQRSTU(注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。)5、输入:最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:1.起始行:START2.密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.3.结束行:END在最后一个数据集之后,是另一行:ENDOFINPUT。输出:每个数据集对应一行,是凯撒的原始消息。nSampleInputSTARTNSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJXENDSTARTNBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJ6、HTSINSWTRJ100ENDSTARTIFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJENDENDOFINPUTnSampleOutputINWAR,EVENTSOFIMPORTANCEARETHERESULTOFTRIVIALCAUSESIWOULDRATHERBEFIRSTINALITTLEIBERIANVILLAGETHANSECONDINROMEDANGERKNOWSFULLWELLTHATCAESARISMOREDANGEROUSTHANHE解题思路凯撒编码,判断字符7、是否是字母,并循环-5即可,记得要循环哦,非常简单的题目哦答案:#include#include#include#defineN202charstr[N]={0};intmain(){char*p;gets(str);while(strcmp(str,"ENDOFINPUT")!=0)//当没遇到消息集的结尾时{if((strcmp(str,"START")!=0)//当消息不是开始&&(strcmp(str,"END")!=0))//消息不是结尾{for(p=str;*p!=8、' ';p++)//对输入的串进行解密{if(isupper(*p))//判断是否为大写字符*p+=*p-5<'A'?26-5:-5;//进行转换,考虑边界问题!}puts(str);//输出字符}gets(str);//接受下一行}return0;}第1题小孩报数问题有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。或者是求最后出圈人的编号等等类似问题。输入:9、第一行输入小孩的人数N(N<=64),接下来每行输入一个小孩的名字(人名不超过15个字符)最后一行输入W,S(W
4、置位y-1位CLR(r,y-2);//置位y-2位printf("%x",r);return0;}第1题破译密码问题:据说最早的密码来自于罗马的凯撒大帝。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A都分别替换成字母F)。而你要获得消息原文,也就是要将这个过程反过来。密码字母:ABCDEFGHIJKLMNOPQRSTUVWXYZM原文字母:VWXYZABCDEFGHIJKLMNOPQRSTU(注意:只有字母会发生替换,其他非字母的字符不变,并且消息原文的所有字母都是大写的。)
5、输入:最多不超过100个数据集组成,每个数据集之间不会有空行,每个数据集由3部分组成:1.起始行:START2.密码消息:由1到200个字符组成一行,表示凯撒发出的一条消息.3.结束行:END在最后一个数据集之后,是另一行:ENDOFINPUT。输出:每个数据集对应一行,是凯撒的原始消息。nSampleInputSTARTNSBFW,JAJSYXTKNRUTWYFSHJFWJYMJWJXZQYTKYWNANFQHFZXJXENDSTARTNBTZQIWFYMJWGJKNWXYNSFQNYYQJNGJWNFSANQQFLJYMFSXJ
6、HTSINSWTRJ100ENDSTARTIFSLJWPSTBXKZQQBJQQYMFYHFJXFWNXRTWJIFSLJWTZXYMFSMJENDENDOFINPUTnSampleOutputINWAR,EVENTSOFIMPORTANCEARETHERESULTOFTRIVIALCAUSESIWOULDRATHERBEFIRSTINALITTLEIBERIANVILLAGETHANSECONDINROMEDANGERKNOWSFULLWELLTHATCAESARISMOREDANGEROUSTHANHE解题思路凯撒编码,判断字符
7、是否是字母,并循环-5即可,记得要循环哦,非常简单的题目哦答案:#include#include#include#defineN202charstr[N]={0};intmain(){char*p;gets(str);while(strcmp(str,"ENDOFINPUT")!=0)//当没遇到消息集的结尾时{if((strcmp(str,"START")!=0)//当消息不是开始&&(strcmp(str,"END")!=0))//消息不是结尾{for(p=str;*p!=
8、' ';p++)//对输入的串进行解密{if(isupper(*p))//判断是否为大写字符*p+=*p-5<'A'?26-5:-5;//进行转换,考虑边界问题!}puts(str);//输出字符}gets(str);//接受下一行}return0;}第1题小孩报数问题有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。或者是求最后出圈人的编号等等类似问题。输入:
9、第一行输入小孩的人数N(N<=64),接下来每行输入一个小孩的名字(人名不超过15个字符)最后一行输入W,S(W
此文档下载收益归作者所有