注册 登录
编程论坛 C语言论坛

[讨论]竞赛模拟试题

我爱娇娇 发布于 2004-05-14 08:49, 1693 次点击
 

竞赛模拟试题

一、

1、 题目:输入一个字符串,内有数字和非数字字符,如:

a123x456-1760/302tab5879

将其中连续的数字作为一个整数,统计共的多少个整数,并输出这些数。

2、 输入文件:input1.txt,文件首行是需要测试的字符串个数,第二行开始是字符串,例如:

2

a123x456_1760?302tab5879

89i7394$%2910skd22

3、输出文件:output1.txt,文件首行是第一个字符串中整数的个数,第二行开始是第一个字

符串内包含的整数,然后紧跟着输出下一个字符串的整数个数和其包含的整数,例如:

5

123

456

1760

302

5789

4

89

7394

2910

22

二、

1、 题目:有n个对棋子(n>=4)排成1行,开始位置为白子全部在左边,黑子全部在白子的右边,如下图(n=5)

AAAAABBBBB

移动棋子的规则是:每次必须同时移动相邻两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子左右位置。每次移动必须跳过若干个棋子(不能平移),要求

移动成黑白相间的一行棋子。例如n=5,移动后要求如下图:

BABABABABA

2、输入文件:input2.txt,只有一行,内容为棋子的对数n。

3、输出文件:output2.txt,首行是需要移动的次数,从第二行开始是每次移动的过程。

三、

1、 题目:一根29厘米长的尺子,只允许在上面刻七个刻度,要能用它量出1—29厘米的各种长度。这个刻度应该怎么选择?

2、 输出:直接在屏幕上输出每个刻度的位置。

2 回复
#2
chengstone2004-05-30 15:53

第一道题 我只给你两个函数 你就可以自己搞定了

isdigit() atoi() 头文件是#include<math.h>

isdigit知道是干什么的了把 判断字符是否为数字

第二个就是把字符串变成int类型

剩下的你就可以自己搞定了把 把转换成的int写入文件里 其他的就是字符串的操作了 很简单的

[此贴子已经被作者于2004-05-31 20:04:49编辑过]

#3
Knocker2004-06-05 21:50

不觉得这个是竞赛题,是作业吧?个人觉得做这种题最好不要用库函数,这样才能更好地理解C。

1。main() { char *string="a123x456-1760/302tab5879"; char *ptr_1,*ptr_2; long sum=0; int i=1; while(*string) { if (*string>='0'&&*string<='9') { ptr_1=string; ptr_2=string; while(*ptr_2>='0'&&*ptr_2<='9')ptr_2++; while(ptr_2-ptr_1){sum*=10;sum+=*ptr_1++-'0';}/*printf("%c",*ptr_1++);*/ printf("\n %d sum =%ld",i,sum); i++; sum=0; string=++ptr_2; } else string++; }

}

1