编程题(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; } |