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