C基础程序

来源:百度知道 编辑:UC知道 时间:2024/06/27 20:58:52
#include<stdio.h>
void main()
{int flag=1;int i;long s=0;char *str;
scanf("%s",str);
if(*str=='-'){flag=-1;str+1;}
while(*str)
{i=*str-'0';
s=s*10+i;
str++;
}
printf("%ld\n",s*flag);
getch();
}
高手帮忙看看..怎么这个程序.正数能输出来..负数不行呢?
还有就是这条语句怎么来的...s=s*10+i.我知道作用.具体是怎么来的我不怎么清楚..
我知道我这个程序错了..希望高手指出我错在哪里!

主要问题:if括号里面的str+1,应该是str++吧
其他问题:str没有分配内存
修改后的代码如下,gcc下编译运行没问题
头文件如果你的编译器不需要可以去掉
#include <stdio.h>
#include <stdlib.h>

int main()
{
int flag=1;
int i;
long s=0;
char array[20];
char *str = array;

scanf("%s",str);
if(*str=='-')
{
flag=-1;
str++;
}
while(*str)
{
i=*str-'0';
s=s*10+i;
str++;
}
printf("%ld\n",s*flag);
getchar();
}

if(*str=='-'){flag=-1;str+1;}
改为
if(*str=='-'){flag=-1;str+=1;}

int型是没有负数的 程序很乱没有怎么看懂

你输入的是字符串,字符是没有负数的