C D两问有关联。
C的代码已经打出来了如图,D应该如何操作?(能否用一个代码解决?)
#include <stdio.h>
#include <math.h>
void delnum(char *str)
{
int i=0,j=0;
while(str[i] != '\0')
{
if(str[i] >= '0' && str[i]<='9')
str[j++] = str[i];
i++;
}
str[j] = '\0';
}
int char2dec(char str[])
{
int num=0;
int i=0,j=0;
while(str[j] != '\0')
j++;
int tem=1;
for(i=0;i<j;i++)
{
num+=(str[j-1-i]-48)*tem;
tem*=10;
}
return num;
}
int main()
{
char str[1000];
printf("请输入一组字符串:");
scanf("%s",str);
delnum(str);
printf("删除非数字字符串后的字符串:\n");
int num=char2dec(str);
printf("%d\n",num);
//printf("%s",str);
return 0;
}
将字符减去'0'字符就是对应的数字字符了
比如 char c = '9'; printf("%d",c-'0');输出的就是数字9
long long char2dec(char str[])
{
long long n = 0;
int i=0;
while(str[i] != '\0')
{
n = n*10 + str[i] - '0';
i++;
}
return n;
}
使用c语言内置的atoi函数将字符串转数字
atoi(str);
供参考:
#include <stdio.h>
#include <stdlib.h>
void char2dec(char str[])
{
int i, b = 0, flg;
for (i = 0, flg = 1; str[i] != '\0'; i++)
{
if (str[i] >= '0' && str[i] <= '9' && flg)
{
flg = 0;
b = atoi(str + i);
printf("整数是:%d\n", b);
}
else if ((str[i] < '0' || str[i] > '9') && !flg)
flg = 1;
}
}
int main()
{
char a[100];
printf("请输入一串字符串:");
scanf("%[^\n]", a);
char2dec(a);
return 0;
}