|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
2. C 语言中有个 atoi 函数(定义于 <stdlib.h> 头文件中),用于将字符串中的值解析为对应的整型数字。现在要求我们自己写一个程序,实现类似的功能。
基本要求
A. 将用户输入的字符串中代表数字的字符转换为整型数值4O]0QM
B. 打印转换结果
C. 只打印第一组数字
提示:你可以使用 break 语句在适当的时候跳出循环。
程序实现如图:
进阶要求(如果下边要求你能成功实现,请给自己点个赞!):b'{Bd
A. 如果字符串中不存在任何表示数值的字符,则打印“并未找到任何数值”5T eg]!Uur
B. 检测数值是否超出整型变量(int)可存放的范围,如果超出范围,则打印“数值超出范围,结果未定义!”的提醒。
C. 为了达到锻炼的效果,整型变量的范围需要自己计算,不使用 <limits.h> 头文件。
#include <stdio.h>
#include <math.h>
int main()
{
char a[10000];
char b[10000];
char c[10000];
int sum,temp,i,j;
long long int sum1=0;
int count=0,place=0;
printf("请输入一串字符:");
scanf("%s",&a);
while(1)
{
if(a[count]>='0' && a[count]<='9')
{
b[place]=a[count];
place=place+1;
if(a[count+1]>'9' || a[count+1]<'1' || a[count+1] == '\n')
break;
}
if(a[count]=='\n')
break;
count=count+1;
}
count=0,place=0;
while(1)
{
if(b[count] == '\0')
break;
c[place]=b[count];
place++;
count++;
sum++;
}
count=0,place=0;
j=sum-1;
for(i=0;i<sum;i++)
{
temp=c[count]-'0';
sum1=sum1+temp*pow(10,j);
count++;
j--;
}
if(sum1>2147483647)
printf("数值超出范围,结果未定义");
else if(b[0] == '\0')
printf("并未找到任何数值");
else
printf("%s",b);
}
本帖最后由 jhq999 于 2021-8-26 15:18 编辑
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- char a[10000];
- char b[10000];
- char c[10000];
- int sum,temp,i,j;
- long long int sum1=0;
- int count=0,place=0;
- printf("请输入一串字符:");
- scanf("%s",&a);
- getchar();
- while(1)
- {
- if(a[count]>='0' && a[count]<='9')
- {
- b[place]=a[count];
- place=place+1;
-
- // if(a[count+1]>'9' || a[count+1]<'1' || a[count+1] == '\n')////删除
- // break;
- }
- if(a[count]=='\0')//\n改成\0
- break;
- count=count+1;
-
- }
- b[place]='\0';//b没有初始化成0,所以必须给个字符串结尾
- count=0,place=0;
- sum=0;//初始化sum
- while(1)
- {
- c[sum]=b[sum];//移动到这里,因为数组c没有初始化成0
- if(b[sum] == '\0')
- break;
-
- // place++;//删
- //count++;//删
- sum++;
- }
- count=0,place=0;
- j=sum-1;
- for(i=0;i<sum;i++)
- {
- temp=c[count]-'0';
- sum1=sum1+temp*pow(10.0,j);\\我用的是VS。第一个参数必须是浮点
- count++;
- j--;
- }
- if(sum1>2147483647)
- printf("数值超出范围,结果未定义");
- else if(b[0] == '\0')
- printf("并未找到任何数值");
- else
- printf("%s",b);
- getchar();
- }
复制代码
|
|