输入一行字符串求其中的数字个数的和
#include<stdio.h>int main(void)
{
char str = {'\0'};
int sum = 0,k=0;
char *p;
p = &str;
printf("请输入一行字符:");
scanf("%s", str);
while(*p != '\0')
{
if(*p >= '0' && *p <= '9') /*判断是否为数字*/
{
k=p-'0'; 得到数字和
sum+=k;
k=0;
}
p++;
}
printf("其中数字和=%d个\n",sum );
return 0;
}
为什么我程序没有错,但是我运行的时候是乱码。
不是我想要的结果
求各位大神指点。 本帖最后由 8306最硬 于 2018-1-15 21:07 编辑
#include<stdio.h>
int main(void)
{
char str = {'\0'};
int sum = 0,k= 0;
char *p;
p = str;
printf("请输入一行字符:");
scanf("%s", str);
while(*p != '\0')
{
if(*p >= '0' && *p <= '9') /*判断是否为数字*/
{
k = *p -'0'; //得到数字和
sum+=k;
k=0;
}
p++;
}
printf("其中数字和=%d个\n",sum );
return 0;
}
第8行,数组名相当于指针,所以赋值的时候不用再用取地址符&了
第15行,指针取值的时候要加*
(BTW)* 和& 互为逆运算 8306最硬 发表于 2018-1-15 21:04
第8行,数组名相当于指针,所以赋值的时候不用再用取地址符&了
第15行,指针取值的时候要加*
(BTW)* 和 ...
(BTW)*和&互为逆运算是什么意思。 zizaipanhongb 发表于 2018-1-15 21:57
(BTW)*和&互为逆运算是什么意思。
谢谢你,回答了我的问题。 zizaipanhongb 发表于 2018-1-15 21:58
谢谢你,回答了我的问题。
不客气~
逆运算是说*(&var) == var
&操作和*操作会抵消 8306最硬 发表于 2018-1-15 22:05
不客气~
逆运算是说
&操作和*操作会抵消
知道了
页:
[1]