C语言竞赛题目大全 POWERED BY SYD168 2010年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进制输出)。例如: ? Sample Input 12345678,0,3 输出: 1234567c 解题思路: 很简单的位操作,但是需要注意的是Y那里是 110,不能直接或上110,而是先两次SET,在CLR。 答案: #include
END START IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END ENDOFINPUT ? Sample Output IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE 解题思路 凯撒编码,判断字符是否是字母,并循环-5即可,记得要循环哦,非常简单的题目哦 答案: #include
2
? Sample Output Zhangsan Xiaohua Xiaoming Xiaowang Lisi 解题思路:(暂空) 方阵填数 第3题 答案: #include
第五套 a[j][i] = m++; } } if(n%2==1) a[n/2][n/2] = m; } void main() { int n, i, j; cin>>n; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) a[i][j] = 0; } Fun(n); for(i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout << a[i][j] << \} cout < 2. 3. 4. 5. 6. 输出这个整数。 输入年、月、日,输出该日期是该年的第几天。 将学生的学号和成绩存储在数组中,利用循环计算出数组中存储学生的平均成绩,找出高于平均分的学生信息并输出。 输入五个国家的名字,按字母顺序(即按ASCII码从小到大的顺序)排列输出。 用指针实现:任意输入20个数,将它们按照从大到小的顺序输出。 编写一个简单的通讯录管理系统。通讯录包括:姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。 进制转换问题 第5题 1. 问题描述 实现将N进制到M进制数的转换(1 < N,M <= 36)。对于11到36进制数,其基数使用从A到Z的英文字母(全部为大写)代替。例如对于11进制,其基数10(十进制)使用\表示;对于36进制,其基数35(十进制)使用\表示。被转换的数全部为正数且小于2147483647(long型的最大值)。下表为十进制数100对应的各进制数: 进制 数值 10 100 11 91 16 64 27 3J 35 2U 2. 要求: (1).实现10进制数到M进制数的转换。(2).程序具有较强的容错能力(例如对错误的输入数字串的处理)。(3). N进制到M进制数(1 < N,M < 36)的转换(扩展要求,选做)。 3. 输入: 输入文件名为convert.in,文件内容格式为第一列为被转换数的进制数,第二列为被转换数,第三列为转换后的进制。这三列内容均为字符串形式。每列之间使用一个空格隔开。 4. 输出: 输出文件名为convert.out,文件内容为转换后的数。对于一切错误,则输出“error”字符串。 5. 输入输出文件样例: 样例1 convert.in 10 100 27 样例2 convert.in 3 140 27 答案: #include 4 convert.out error convert.out 3J /* 判断数据data有没有错,如果没错则转换为M进制,如果错则把error 写入out中 */ if (judge(N, data) == 1) { convert(out, N, data, M); } else { strcpy(out, \ } printf(\ /* 把得到的结果写入convert.out文件中去 */ FILE *fw = fopen(\ if (fw != NULL) { fprintf(fw, \ fclose(fw); fw = NULL; } return 0; } /* 判断data有没有错,先把data转换为字符串,然后再进行判断 */ int judge(int N, long int data) { char b[100]; //data转换后放入b中 ten_to_m(b, data, 10); //相当于itoa char *s = b; while (*s != '\\0') { if ((*s-'0') >= N) { return 0; } s++; } return 1; } /* N进制转为M进制,先把N进制转为十进制,再把十进制转为M进制 */ void convert(char out[], int N, long int data, int M) { int a = n_to_ten(N, data); ten_to_m(out , a, M); } /* 十进制转为M进制,当M=10时此函数相当于itoa */ void ten_to_m(char out[], long int data, int M) { int i = 0; int tmp = data; int len; char t; /* 把data转为字符倒序的放入字符数组out中去 */ 5