题目:
2015
1、 设计一个程序,输入一个字符串以#结尾,则输出此字符串中连续出现最长的数字串及其开始的下标;
例如:
输入:ab125ef1234567#
输出:
1234567 开始位置为:8
#include<stdio.h> #include<stdlib.h> #define MAX 30 void main() { char a[MAX]; int i = 0, j = 0, n = 0, maxCount = 0, maxStart = 0; printf("请输入字符串并以#结尾:"); gets_s(a, 20); //scanf("%s", a); while (a[j] != '#') { while ((a[j] > '9' || a[j] < '0')&&a[j]!='#') i++, j++; while ((a[j] >= '0'&&a[j] < '9')&&a[j]!='#') j++; if (j-i >= maxCount) { maxCount=j - i; maxStart = i; } i = j; } if (maxCount == 0) { printf("没有最大数字串\n"); exit(0); } printf("最大字符串为:"); while (n < maxCount) { printf("%c", a[maxStart + n]); n++; } printf("开始位置为:%d\n", maxStart); }
方法二
#include <stdio.h> void main() { char a[100]; scanf("%s", a); int i,j=0,max=0,index; for (i = 0;a[i] != '\0';i++) { if (a[i] >= '0'&&a[i] <= '9') { j++; } else j = 0; if ( j >=max) { index = i - j+1; max = j; } } printf("数字串开始下标%d\n", index); for (i=index;i < index+max;i++) { printf("%c", a[i]); } }