这么写可以吗
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;
char b;
char c;
int sum,temp,i,j;
long longint sum1=0;
int count=0,place=0;
printf("请输入一串字符:");
scanf("%s",&a);
while(1)
{
if(a>='0' && a<='9')
{
b=a;
place=place+1;
if(a>'9' || a<'1' || a == '\n')
break;
}
if(a=='\n')
break;
count=count+1;
}
count=0,place=0;
while(1)
{
if(b == '\0')
break;
c=b;
place++;
count++;
sum++;
}
count=0,place=0;
j=sum-1;
for(i=0;i<sum;i++)
{
temp=c-'0';
sum1=sum1+temp*pow(10,j);
count++;
j--;
}
if(sum1>2147483647)
printf("数值超出范围,结果未定义");
else if(b == '\0')
printf("并未找到任何数值");
else
printf("%s",b);
} 本帖最后由 jhq999 于 2021-8-26 15:18 编辑
#include <stdio.h>
#include <math.h>
int main()
{
char a;
char b;
char c;
int sum,temp,i,j;
long longint sum1=0;
int count=0,place=0;
printf("请输入一串字符:");
scanf("%s",&a);
getchar();
while(1)
{
if(a>='0' && a<='9')
{
b=a;
place=place+1;
// if(a>'9' || a<'1' || a == '\n')////删除
// break;
}
if(a=='\0')//\n改成\0
break;
count=count+1;
}
b='\0';//b没有初始化成0,所以必须给个字符串结尾
count=0,place=0;
sum=0;//初始化sum
while(1)
{
c=b;//移动到这里,因为数组c没有初始化成0
if(b == '\0')
break;
// place++;//删
//count++;//删
sum++;
}
count=0,place=0;
j=sum-1;
for(i=0;i<sum;i++)
{
temp=c-'0';
sum1=sum1+temp*pow(10.0,j);\\我用的是VS。第一个参数必须是浮点
count++;
j--;
}
if(sum1>2147483647)
printf("数值超出范围,结果未定义");
else if(b == '\0')
printf("并未找到任何数值");
else
printf("%s",b);
getchar();
} jhq999 发表于 2021-8-26 12:19
scanf 关于空格问题问度娘
页:
[1]