C语言解决提取字符序列中的数字并拼接为整数
题目: 对于给定的字符序列,从左至右将所有的数字字符去除拼接成一个无符号整数(字符序列长度小于100,拼接处的整数小于2^31),计算并输出该整数的最大因子。
输入说明: 有多组数据,每组数据为一行字符序列,当输入一个空行时表示输入结束。
输出说明: 对每个字符序列,求出所得整数的最大因子;若字符序列中没有数字或找出的整数为0,则输出0,每个整数占一行输出。
输入样本: 3 jh0hg3.hg9 ?hg4fd0h2gf79j sgjkj
输出样本: 13 857 0
代码:
#include<stdio.h>
#include<string.h>
#define N 20
int main()
{
char str[100];
int i, n, f, t;
scanf("%d", &f);
while(f--){
memset(str, 0 ,sizeof(str));
scanf("%s", str);
n = 0;
for(i = 0; i < 100; i++) {
if (str[i] >= '0' && str[i] <= '9')
{
n = n * 10 + str[i] - '0';
}
}
if(n == 0) {
printf("0\n");
}
else {
for (i = 1; i < n; i++)
{
if (n % i == 0)
{
t = i;
}
}
if(t == 1) {
t = n;
}
printf("%d\n", t);
}
}
return 0;
}
本题知识点:memset() 函数 每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。memset() 的作用是在一段内存块中填充某个给定的值。
运行结果:
|