注释一段代码 稍微详细点(很简单的) (c/c++)

#include<stdio.h>#include<string.h>voidA(char*s){intlen=strlen(s);char*p=s+len-1;if(s... #include <stdio.h>
#include <string.h>

void A(char *s)
{
int len = strlen(s);
char *p = s + len - 1;
if (strchr(s, '.'))
while (*p == '0') *p-- = 0;
if (*p == '.') *p = 0;
}

int main(void)
{
char *pa, *pb;
char a[100024], b[100024];

while (scanf("%s%s", &a, &b) != EOF)
{
pa = a; pb = b;
while (*pa == '0') pa++;
while (*pb == '0') pb++;
A(pa); A(pb);
puts(strcmp(pa, pb) ? "NO" : "YES");
}

return 0;
}
主要是那个空函数
*p-- = 0;两个减号什么作用?稍微说说
展开
 我来答
百度网友1d5893d
2010-10-01
知道答主
回答量:12
采纳率:0%
帮助的人:23万
展开全部
看了你的代码,应该是杭电OJ上的2054这道题目,其实这倒题目没什么其他特别的地方,只需要注意几组特殊数据:
0011 11
0.000100 0.0001
99.00 99
下面解释下上面的代码:
#include <stdio.h>
#include <string.h>

void A(char *s)
{
int len = strlen(s);
char *p = s + len - 1;
if (strchr(s, '.')) //如果字符串中存在小数点
{
while (*p == '0') *p-- = 0; //如果*p是0,则将p指向的字符赋为结束 符,并将p前移一位。即消去后导0

if (*p == '.') *p = 0; 如果全是0,即只剩下小数点的话,则输入数据位0
}
}

int main(void)
{
char *pa, *pb;
char a[100024], b[100024];

while (scanf("%s%s", &a, &b) != EOF)
{
pa = a; pb = b;
while (*pa == '0') pa++; //消去输入字符串a的前导0
while (*pb == '0') pb++; //消去输入字符串b的前导0
A(pa); A(pb);
puts(strcmp(pa, pb) ? "NO" : "YES");
}

return 0;
高能钙片
2010-09-30 · TA获得超过493个赞
知道小有建树答主
回答量:925
采纳率:0%
帮助的人:409万
展开全部
--号在后边就是先操作再减一,你该去补习基础知识了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
02230838
2010-09-30 · TA获得超过2067个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:1064万
展开全部
*p-- = 0;这个?
就是把p地址里的值赋成0,然后p=p-1.
--------------------
既然求助了就要答嘛,其实我也不太懂。
刚才写了个程序测了一下,文字上应该没有错。
scanf比较擅长的使我们团的另一个人,他现在不在。
#include <stdio.h>
#include <string.h>

void A(char *s)
{
int len = strlen(s); //记录s串长
char *p = s + len - 1; //p为末端
if (strchr(s, '.')) //如果有小数点
while (*p == '0') //把末尾的0去掉
*p-- = 0;
if (*p == '.') //如果末尾就是小数点
*p = 0; //去掉小数点
}

int main(void)
{
char *pa, *pb;
char a[100024], b[100024];

while (scanf("%s%s", &a, &b) != EOF)//在输入中不存在两个Ctrl+Z时,给a,b赋两个字串
{
pa = a; pb = b; //设定pa,pb
while (*pa == '0') pa++; //去掉a串前的'0'
while (*pb == '0') pb++; //去掉b串前的'0'
A(pa); A(pb); //解决小数的字串不匹配问题
puts(strcmp(pa, pb) ? "NO" : "YES"); //剩下的pa,pb所指的字串比较,输出。
}

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式