前言
- 昨天收到朋友一个题目,让我实现一下,人家让我用
c语言
实现。
- 可是小编最近在学
Perl
,后来也用Perl实现了一下!
题目
- 输入一个字符串,请输出其中包含的最大整数
- 输入:abc123mm4567nn987xyz
- 输出:4567
C语言实现
#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 1000
/*
*str2nu:字符串转数字
* */
int str2num(char *str, int begin, int end){
int result = 0;
for(int i = end;i >= begin; i--) {
result += (str[i] - '0') * (int)pow(10, end - i);
}
return result;
}
int main(){
char str[MAX + 5];
scanf("%s",str);
int begin = 0, end = 0, max = -1;
//字符串遍历操作
for(int i = 0, len = strlen(str); i < len; i++){
if(str[i] <= '9' && str[i] >= '0'){
begin = i;
for(;str[i] >= '0' && str[i] <= '9';){ i++;}
end = i - 1;
int number = str2num(str, begin, end);
max = (number > max) ? number : max;
}else{
continue;
}
}
//判断输出
if(max == -1) {
printf("no digits exist!\n");
} else {
printf("max = %d\n",max);
}
return 0;
}
Perl实现
#!/usr/bin/perl
my @numbers;
while(<>){
push @numbers, split /\D+/,$_;
}
my @result = reverse sort{$a <=> $b} @numbers;
print $result[0]."\n";
后记