程序改错题 不能增行减行
题目26:程序输入一个最多由位数字字符组成的字符串,并将该字符串转换为整数并输出。请改正程序中的错误,使程序能得出正确的结果。注意,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
void main()
{
int a = 0, i;
char *str1;
scanf("%s", &str1);
for(i = 0; i<10; i++)
if('0' <= str[i] <= '9')
a = a * 10 + str[i] - '0';
printf("%d", a);
}
str1你没有分配空间啊
#include <stdio.h>
void main()
{
int a = 0, i;
char str1[1000];
scanf("%s", str1);
for(i = 0; i<10; i++)
if((str[i] >='0') && (str[i] <= '9'))
a = a * 10 + str[i] - '0';
printf("%d", a);
}
此问题一共有两处错误.
char *str1;
字符指针但后续没分配内存空间
if('0' <= str[i] <= '9')
多个条件判断方式有误
可按以下方式修改
#include <stdio.h>
void main()
{
int a = 0, i;
char str1[10];
scanf("%s", str1);
for(i = 0; i<10; i++)
if((str[i] >='0') && (str[i] <= '9'))
a = a * 10 + str[i] - '0';
printf("%d", a);
}