编程要求:输入一个带数字串的字符串,在字符串中,找到最长的数字字符串并且输出其长度、起始为止以及内容。
本例程序中,我认为最主要的是需要在满足条件的时候,传递出合适的变量值,例如最长的数字字符串长度len和最长字符串的最后一位地址finloc,除此之外,是对再循环中的变量赋初值,例如最长数字字符串的长度len。
在我注释的一行内容,会使得程序在运行的时候,输出两行最长数字字符串;在只注释掉之后,只会出现一行,由此可以知道,主函数在调用函数的时候,调用一次,程序就执行一次,但是,之后return 返回的值不会打印出来,需要在主函数中编写打印语句;
在上课过程中,虽然已经编写出来,但是在老师演示过程中,我认识到,在程序编写中,我应该更加注意增强程序可读性,应该多尝试用对应变量的英文单词缩写来表示变量,而不是一味地只使用I,j,k,m,n这一类变量名。
/*****************************************************
copyright (C), 2014-2015, Lighting Studio.Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <string.h>
int shuzi(char *s);
int main()
{
char s[1024];
printf("Enterthe string : ");
scanf("%s",s);
printf("%s\n",s);
// shuzi(s);
printf("Themax is %d numbers\n",shuzi(s));
return 0;
}
int shuzi(char *s)
{
inti,j = 0,max = 0,len = 0,finloc = 0;
j= strlen(s);
for(i= 0;i < j;i++)
{
len= 0;
while((s[i]>= 48) && (s[i] <= 57))
{
len++;
i++;
}
if(len > max)
{
max= len;
finloc= i;
}
}
printf("thestring is :");
for(i= finloc-max;i < finloc;i++)
{
if((s[i]>= 48) && (s[i] <= 57))
{
printf("%c",s[i]);
}
}
printf("\n");
printf("Thelocation is %d",finloc-max+1);
printf("\n");
returnmax;
}