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

来源:互联网 发布:unity3d开始界面添加 编辑:程序博客网 时间:2024/06/05 09:38

题目: 
2015 
1、 设计一个程序,输入一个字符串以#结尾,则输出此字符串中连续出现最长的数字串及其开始的下标; 
例如: 
输入:ab125ef1234567# 
输出: 
1234567   开始位置为:8

#include<stdio.h>#include<stdlib.h>#define MAX 30void 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++;}elsej = 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 0