现在的位置: 首页 > 14 二级C语言 > 正文

2011春江苏省二级C上机真题C03 编程题

2011年09月17日 14 二级C语言 ⁄ 共 793字 ⁄ 字号 暂无评论

编程题(24分)。本题涉及到的内容包括二维数组和字符串

【程序功能】
在一个字符串中查找所有等值子串。
如果字符串内的一个子串(其长度大于1)中所有字符均相同,则称之为等值子串。

【编程要求】
1. 编写函数int eqsub(char s[],result[][80])。函数的功能是在s指向的字符串中查找等值子串,将找到的所有等值子串存放到result指向的二维数组中(一行存储一个等值子串),函数返回result数组中等值子串的个数。

2. 编写main 函数。函数功能是声明一维数组s和二维数组result,用测试数据初始化s数组,用数组s和result作为实参调用函数eqsub在s数组中查找所有等值子串,将找到的等值子串输出到屏幕及文件myf2.out中。最后将考生本人的准考证号字符串输出到文件myf2.out中。

【测试数据与运行结果】
测试数据:aaahjdbbbbsdccskdjffff
屏幕输出:aaa bbbb cc ffff

【要求】
1. 源程序文件名myf2.c ,输出结果文件名为myf2.out。
2. 数据文件的打开、使用、关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
 
int eqsub(char s[], char result[][80]) {
	int ri=0, j;
	char t;
	while (*s) {
		t = *s;
		s++;
		if (t==*s) {
			result[ri][0]=t;
			result[ri][1]=t;
			j=2;
			while (t==*++s) result[ri][j++]=t;
			result[ri][j]='\0';
			ri++;
		}	
	}
	return ri;
}
 
int main(int argc, char *argv[])
{
	char s[] = "aaahjdbbbbsdccskdjffff";
	char result[100][80];
	int i, n;
	n = eqsub(s, result);
	for (i=0; i<n; i++)
	    printf("%s ", result[i]);
	return 0;
}

抱歉!评论已关闭.