字符串中最大的数字
错误代码#include<stdio.h>#define N 100int main(void){char str[N];scanf("%s",str);int max=0;for(int i=0;i<strlen(str);i++){int a=0;//问题1 这就清零?上一次的数值不要了?if(str[i]>=1&&str[i]<=9)//问题2
·
错误代码
#include<stdio.h>
#define N 100
int main(void)
{
char str[N];
scanf("%s",str);
int max=0;
for(int i=0;i<strlen(str);i++)
{int a=0;//问题1 这就清零?上一次的数值 不要了?
if(str[i]>=1&&str[i]<=9)//问题2 是和字符串做对比'0''9'
{
a=a*10+str[i];//str[i] 输出的是ASSCI值
}
if(max<=a)
{
max=a;
}
}
printf("%d",max);
}
正确代码
#include<stdio.h>
#define N 100
int main(void)
{
char str[N];
scanf("%s",str);
int max=0;
int a=0;
for(int i=0;i<strlen(str);i++)
{
if(str[i]>='0'&&str[i]<='9')//问题3解决
{
a=a*10+(str[i]-'0');//问题2解决
}
else a=0;//问题1解决
if(max<=a) max=a;
}
printf("%d",max);
/*char str[]="asd123";
printf("%d",str[4]-'0');*/
system("PAUSE");
return 0;
}
运行结果如下
注意atoi()函数参数不能是字符
1)该函数不可以 对字符串数组存储的单元字符操作
#include<stdio.h>
#define N 100
int main(void)
{
char str[N];
scanf("%s",str);//输入asd123
printf("%d",atoi(str[4]));
system("PAUSE");
return 0;
}
运行:
回车之后 直接闪退
2)str[]输出的是ASSCI值
#include<stdio.h>
#define N 100
int main(void)
{
char str[N];
scanf("%s",str);//输入asd0123
printf("%d",str[3]);
system("PAUSE");
return 0;
}
0的ASSCI值48
3)想要输出数字 用数字字符的ASSCI值和**‘0’**的ASSCI值做差
#include<stdio.h>
#define N 100
int main(void)
{
char str[N];
scanf("%s",str);//输入asd0123
printf("%d",str[4]-'0'); //输出应该是1
system("PAUSE");
return 0;
}
运行:
更多推荐




所有评论(0)