1、找出字符串中的最长数字串
#include <stdio.h>
int main()
{
char str[100];
int i;
int flag = 0;
int loct = 0,loct_long = 0;
int len = 0,len_long = 0;
printf("Please input a string:\n");
scanf("%s",str);
i = 0;
while(str[i] != '\0')
{
if(str[i] <= '9' && str[i] >= '0')
{
if(flag == 1) //判断这个数字是否为一个数字串的开始
{
loct = i; //记录下一个数字串的首地址
flag = 0;
}
len++; //记录数字串的长度
}
else
{
flag = 1;
if(len > len_long) //与上一个字符串长度比较
{
len_long = len;
loct_long = loct;
}
len = 0;
}
i++;
}
if(len > len_long) //以防最后一个字符为数字的情况
{
len_long = len;
loct_long = loct;
}
for(i = loct_long;i < loct_long + len_long;i++)
{
printf("%c",str[i]);
}
printf("\n");
return 0;
}
2、将数字字符串转化为数
#include <stdio.h>
int transform(char * p) //把数字字符串转化为整数
{
int num = 0;
int i = 0;
while(*(p + i) != '\0')
{
num = num * 10 + (*(p + i) - '0');
i++;
}
return num;
}
int main()
{
char n_str[100];
int num;
printf("Please input a string with number:\n");
scanf("%s",n_str);
if(n_str[0] == '-')
printf("-");
num = transform(n_str);
printf("%d\n",num);
return 0;
}
注意:指向数组的指针的应用
3、在一个数组中放10个数,找出最小数及其下标,然后把它和第一个数交换位置
#include <stdio.h>
int main()
{
int num[10];
int i;
int min_loct = 0;
int min = 0;
printf("Please input 10 nums:\n");
for(i = 0;i < 10;i++)
{
scanf("%d",&num[i]);
}
for(i = 1;i < 10;i++)
{
if(num[i] < num[min_loct])
{
min_loct = i;
}
}
printf("%d\n",min_loct);
min = num[min_loct];
for(i = min_loct;i > 0;i--)
{
num[i] = num[i - 1];
}
num[0] = min;
for(i = 0;i < 10;i++)
{
printf("%3d",num[i]);
}
printf("\n");
return 0;
}