题目截图:
思路:
令 asc[i][j] 表示第 j 个 ascii 码为 i 的字符在字符串中的位置,其中 asc[i][0] 存储 ascii 码为 i 的字符在字符串中的个数。另外,由于要根据输入前后决定输出字符位置,需要设置 c[] 来存储字符第一次出现时的位置前后。最后,将个数大于 1 的字符按要求输出即可。
代码如下:
1 /* 2 找位置 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 #include <math.h> 8 #include <stdlib.h> 9 #include <time.h> 10 11 char str[101]; // 存储输入字符 12 char c[101]; // 存储字符第一次出现前后 13 int asc[256][101]; // asc[i][j] 表示第 j 个 ascii 码为 i 的字符在字符串中的位置 14 15 int main() { 16 while(scanf("%s", str) != EOF) { 17 memset(asc, 0, sizeof(asc)); // 初始化 asc 数组 18 int i, j, k=0; 19 for(i=0; i<strlen(str); ++i) { // 遍历字符串的每个字符 20 if(asc[str[i]-'