以下代码哪里错了?

这是一个长整数取余的问题,运行结果总不对,如输入3010,程序运行结果为-8代码:#include<stdio.h>intmain(void){chara[10001];... 这是一个长整数取余的问题,运行结果总不对,如输入30 10,程序运行结果为-8
代码:
#include <stdio.h>

int main(void)
{
char a[10001];
long long p,b;

while(scanf("%s %lld",a,&p)!=EOF) {
b=0;
for(int i=0;i<10000;i++) {
if(a[i]==' ') break;
b=(b*10+(a[i]-'0'))%p;
}
printf("%lld\n",b);
}
return 0;
}
展开
 我来答
紫薇参星
科技发烧友

2020-11-28 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3511万
展开全部

你的长整数取余的问题C语言程序,我帮你改完了.(改动的地方见注释)

主要问题是for循环中if语句的判断条件不是等于空格,而应该是等于C语言字符串结尾符'\0',

因为C语言会在输入的字符串自动加上字符串结尾符,如果你if语句判断条件等于空格,

就把字符串结尾符也参加余数计算了,所以计算结果为-8.

#include <stdio.h>

int main(void)

{

 char a[10001];

 long long p,b;

 while(scanf("%s %lld",a,&p)!=EOF) {

  b=0;

  for(int i=0;i<10000;i++) {

   if(a[i]=='\0') break;//这里把a[i]==' '改成a[i]=='\0'

   b=(b*10+(a[i]-'0'))%p;

  }

  printf("%lld\n",b);

 }

 return 0;

}

云南新华电脑学校
2020-11-28 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
展开全部
您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!第一行最后的 { 移到第三行开头,最后一行后面还要加一个 }非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式