C语言的一个程序,请帮忙解释一下子~!

来源:百度知道 编辑:UC知道 时间:2024/05/14 11:43:34
32. 程序功能:从键盘上输入一字符串(只包括数字字符),统计并显示其中偶数数字字符出现的次数。
#include <stdio.h>
void f(char *p)
{int n=0;
char c;
while(*p)
{c=*p;
if((c-48)%2==0) n++;
p++;
}
printf("%d\n",n);
}
void main()
{char c[100],*p=c;
gets(p); f(p);
}
请帮我分析一下每一步的意思,尤其是函数调用那个位置 if((c-48)%2==0) n++;谢谢了

#include <stdio.h>
void f(char *p)
{int n=0; //用于保存偶数的个数
char c;
while(*p)
{c=*p;
if((c-48)%2==0) n++; //从键盘上输入的是ASCII码,字符0的ASCII码和数字0的ASCII码相差48,同样字符1…9和数字1…9也相差48,这一点可以通过编程验证,当需要把字符转化为数字时,就必须减去48;当数字为0偶数时,其对2求余就会是0

p++; /使p指向下一个字符
}
printf("%d\n",n);
}
void main()
{char c[100],*p=c;
gets(p); //从p指向的字符串中读取一个字符
f(p); //判断该字符是否为偶数

}

//判断字符0(1……9)和数字0(1……9)相差48的程序如下:
/*
char c;
int d,result;
scanf("%c",&c);//输入0或1……9
scanf("%d",&d);//输入0或者等于1……9

result=c-d;
printf("result=%d",result);
printf("\n");

*/

#include <stdio.h> //调用输入输出必要的头文件
void f(char *p)
{int n=0; //定义一个整型变量,并赋初值为0;
char c; //定义一个字符串变量;
while(*p) //当P指针存在;
{c=*p; //把P指针所指变量单元内容赋给C变量;
if((c-48)%2==0) n++; //如果当前C变量的值减去48后是一个偶数,即被2整除的话,就把n加1;
p++; //然后