2015上机一 输出字符串中连续出现最长的数字串及其开始的下标

题目: 
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]);
	}
}



猜你喜欢

转载自blog.csdn.net/mr_ystreet/article/details/56671818