public class HelloBlogger {
public static void main(String [] args) {
System.out.println("Hello Blogger!!");
}
}
2009年1月20日星期二
测试代码高亮
2008年12月31日星期三
字符串中找出数字并求和
由键盘输入一个字符串,其中包括字母和数字,输出字符串中十进制数的和。
入:AJJJH FJ 378 ,DH DSAUH 1507
出:375+1507=1882
分析:
扫描字符串,发现数字标记数字起始位置。当数字变回非数字字符时,提取数字并将其转换为数字,累加数字求和。
C代码:
入:AJJJH FJ 378 ,DH DSAUH 1507
出:375+1507=1882
分析:
扫描字符串,发现数字标记数字起始位置。当数字变回非数字字符时,提取数字并将其转换为数字,累加数字求和。
C代码:
#include < stdio.h >
#include < stdlib.h >
#include < math.h >
#include < string.h >
#define MAX 256
int main(int argc, char **argv)
{
char buffer[MAX], ch;
int i = 0, len;
int start_flg = 0, start_pos = 0, sum = 0;
memset(buffer, '\0', sizeof(char) * MAX);
ch = getchar();
while (ch != 0x0A) {
buffer[i] = ch;
ch = getchar();
i++;
}
len = strlen(buffer);
for (i = 0; i <= len; i++) {
if (!start_flg && buffer[i] >= '0' && buffer[i] <= '9') {
start_pos = i;
start_flg = 1;
} else if (start_flg && (buffer[i] < '0' || buffer[i] > '9')) {
buffer[i] = '\0';
int tmp = atoi(buffer + start_pos);
sum += tmp;
printf("%d\n", tmp);
start_flg = 0;
}
}
printf("%d\n", sum);
return 0;
}
2008年12月30日星期二
字符串操作
由键盘输入一个不超过40个字符的字符串,已知其中有两个“A”,请你编程完成以下任务:
(1)求出每个“A”所在的位置
(2)求出两个“A”之间的字符及字符个数
C代码:
(1)求出每个“A”所在的位置
(2)求出两个“A”之间的字符及字符个数
C代码:
#include < stdio.h >
#include < stdlib.h >
#include < math.h >
#include < string.h >
#define MAX_LEN 40
int main(int argc, char **argv)
{
char buffer[MAX_LEN];
int len;
int p1, p2, i;
int flg = 1;
memset(buffer, '\0', sizeof(char) * MAX_LEN);
scanf("%s", buffer);
len = strlen(buffer);
for (i = 0; i < len; i++) {
if (buffer[i] == 'A' && flg) {
p1 = i;
flg = 0;
} else if (buffer[i] == 'A') {
p2 = i;
break;
}
}
printf("p1: %d, p2: %d\n", p1, p2);
printf("len: %d\n", p2 - p1);
for (i = p1; i < p2-1; i++) {
printf("%c", buffer[p2-i-1+p1]);
}
printf("\n");
return 0;
}
圆环上求素数
给出一个取数长度L(1<=L<=5),然后从1开始按顺时针方向连续取L个数字,拼成一个长为L位的数,此时共有9个长为L位的数,然后输出这9个数中的素数。
例如:L=2,此时9个长度为2位的数为:
12,23,34,45,56,67,78,89,90.其中素数有:23,67,89
分析:
先根据长度求出9个数,这里注意并没有0打头的数,所以只有9个。使用数组和下标模运算模拟环状的数据结构。使用循环计算出对应的数据,存入结果数组中。遍历数组,确定素数。
C代码:
例如:L=2,此时9个长度为2位的数为:
12,23,34,45,56,67,78,89,90.其中素数有:23,67,89
分析:
先根据长度求出9个数,这里注意并没有0打头的数,所以只有9个。使用数组和下标模运算模拟环状的数据结构。使用循环计算出对应的数据,存入结果数组中。遍历数组,确定素数。
C代码:
#include < stdio.h >
#include < stdlib.h >
#include < math.h >
#include < string.h >
#define LEN 9
int main(int argc, char **argv)
{
int ring[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int re[LEN];
memset(re, 0, sizeof(int) * LEN);
int l, i, j, flg;
scanf("%d", &l);
for (i = 0; i < 10; i++) {
for (j = 0; j < l; j++) {
re[i] = re[i] + ring[(i+j) % 10] * (int)pow((double)10, (double)(l-1-j));
}
}
for (i = 0; i < LEN; i++) {
flg = 1;
for (j = 2; j < re[i]; j++) {
if (re[i] % j == 0) {
flg = 0;
}
}
if (flg) {
printf("%d\t", re[i]);
}
}
printf("\n");
/**
for (i = 0; i < LEN; i++) {
printf("%d\n", re[i]);
}
*/
return 0;
}
2008年12月28日星期日
05年第四题 约定的密码
05年第四题 约定的密码
林林和他的几个同学对计算机程序设计都相当有兴趣,假期临近了,他们平时商量研究的一些问题想利用假期进一步完善.因为放假他们无法天天见面,因此他们决定以电子邮件来传送每个人的研究报告,但考虑邮件在传输过程中有可能出现问题,因此商定了一组加密的方式。你作为研究组的成员之一,编程将明码破解出密码。
明码方式一:由四部分组成(此四部分,两两之间用一个空格隔开,以一个$为结束标志),第一部分为数字1用来表示方式1;第二部分为一个键盘符号(不包括空格和$)组成的字符串(长度不超过30个字符);第三部分(m)、第四部分(n) 均为正整数(0<30),表示对于给定的字符串从第m个字符起,截取n个。然后将截得的字符串逆序输出则为密码。
例如:
明码的键盘输入:1 abcdefghlmnopq 3 5$
密码的屏幕输出:gfedc
明码方式二:由三部分组成(此三部分,两两之间用空格隔开,以一个$为结束标志),第一部分为数字2表示方式2;其后为两个不超过五位长的正整数(m,n,2<99999),
求这两个数从m到n之间的所有素数(质数),并将这些素数连结成的没有空格的字符串为密码。
例如:
明码的键盘输入:2 30 80$
密码的屏幕输出:3137414347515357596167717379
分析:
本题分为两种模式,一种是字符串反向输出,另一种是求某区间内的素数。具体内容是基本算法,本体主要难度在于对输入的处理,应根据空格和$符号对输入进行拆分,在分别根据条件进行处理。
C代码:
林林和他的几个同学对计算机程序设计都相当有兴趣,假期临近了,他们平时商量研究的一些问题想利用假期进一步完善.因为放假他们无法天天见面,因此他们决定以电子邮件来传送每个人的研究报告,但考虑邮件在传输过程中有可能出现问题,因此商定了一组加密的方式。你作为研究组的成员之一,编程将明码破解出密码。
明码方式一:由四部分组成(此四部分,两两之间用一个空格隔开,以一个$为结束标志),第一部分为数字1用来表示方式1;第二部分为一个键盘符号(不包括空格和$)组成的字符串(长度不超过30个字符);第三部分(m)、第四部分(n) 均为正整数(0
例如:
明码的键盘输入:1 abcdefghlmnopq 3 5$
密码的屏幕输出:gfedc
明码方式二:由三部分组成(此三部分,两两之间用空格隔开,以一个$为结束标志),第一部分为数字2表示方式2;其后为两个不超过五位长的正整数(m,n,2
求这两个数从m到n之间的所有素数(质数),并将这些素数连结成的没有空格的字符串为密码。
例如:
明码的键盘输入:2 30 80$
密码的屏幕输出:3137414347515357596167717379
分析:
本题分为两种模式,一种是字符串反向输出,另一种是求某区间内的素数。具体内容是基本算法,本体主要难度在于对输入的处理,应根据空格和$符号对输入进行拆分,在分别根据条件进行处理。
C代码:
#include < stdio.h >
#include < stdlib.h >
#include < math.h >
#include < string.h >
int main(int argc, char **argv)
{
int len, i, t;
char buffer[60];
char s[4][31], ch;
int last, current;
for (i = 0; i < 4; i++) {
memset(s[i], '\0', sizeof(char) * 31);
}
len = 0;
ch = getchar();
while (ch != 0x0A) {
buffer[len] = ch;
ch = getchar();
len++;
}
buffer[len] = '\0';
t = 0;
last = 0;
current = 0;
for (i = 0; i < len; i++) {
if (buffer[i] == ' ' || buffer[i] == '$') {
current = i;
strncpy(s[t], &buffer[last], current - last);
t++;
last = current;
}
}
if (s[0][0] == '1') {
len = strlen(s[1]);
printf("%d\n", atoi(s[3]));
for (i = atoi(s[2]); i < atoi(s[2]) + atoi(s[3]); i++) {
printf("%c", s[1][len-i]);
}
printf("\n");
} else {
int min, max, j, flg;
min = atoi(s[1]);
max = atoi(s[2]);
for (i = min; i <= max; i++) {
flg = 1;
for (j = 2; j < i; j++) {
if (i % j == 0) {
flg = 0;
break;
}
}
if (flg == 1) {
printf("%d", i);
}
}
printf("\n");
}
return 0;
}
订阅:
博文 (Atom)
