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



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值