c语言中1b怎么写,怎么写这道C语言的程序题目.A*B求a* b % m;Input题目包含多组测试数据,每行3个非负整数a ,b ,m,(a ,b不超过1000位,m < 10000),输入一组0结...

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

#include

#include

#include

//

typedef unsigned int uint;

typedef unsigned short ushort;

static const uint kMaxCount = 256;

//

typedef struct st_ret {

uint ret[kMaxCount];

ushort count;

st_ret* next;

} st_ret;

//

void init_st_ret(st_ret* st)

{

st->count = 0;

st->next = 0;

}

//

st_ret* create_st_ret()

{

#ifdef __cplusplus

st_ret* p = (st_ret*)malloc(sizeof(st_ret));

#else

st_ret* p = malloc(sizeof(st_ret));

#endif

init_st_ret(p);

return p;

}

//

st_ret* fill_st_ret(st_ret* st, uint ret_value)

{

st_ret* p = st;

if (st->count >= kMaxCount)

p = st->next = create_st_ret();

p->ret[p->count++] = ret_value;

return p;

}

//

void free_st_ret(st_ret* st_head)

{

st_ret* p = st_head;

while (p)

{

st_ret* q = p;

p = p->next;

free(q);

}

}

//

void print_st_ret(st_ret* st)

{

uint i = 0;

for(; i < st->count; ++i)

printf("%u\n", st->ret[i]);

}

//

void print_st_rets(st_ret* st_head)

{

printf("\n");

st_ret* p = st_head;

while (p)

{

print_st_ret(p);

p = p->next;

}

}

//

static const int kMaxNumberLength = 1000;

int trim_big_number(const char* big_number, uint value_upper)

{

int len = strlen(big_number);

if (EOF == len || kMaxNumberLength < len)

return 0;

int digit_num = 0;

for (uint i = value_upper; i > 0; ++digit_num, i = i/10) ;

if (digit_num >= len)

return strtoul(big_number, NULL, 10);

else

{

const char* trim_number = big_number + len - digit_num;

return strtoul(trim_number, NULL, 10);

}

}

//

int main(int argc, char** argv)

{

st_ret* p = create_st_ret();

st_ret* q = p;

char szInputString[1024] = { 0 };

while (true)

{

int a, b, m;

scanf("%s", szInputString);

a = trim_big_number(szInputString, 10000);

scanf("%s", szInputString);

b = trim_big_number(szInputString, 10000);

scanf("%d", &m);

if (a == 0 && b == 0 && m == 0)

break;

if (m == 0)

q = fill_st_ret(q, 0);

else

q = fill_st_ret(q, a * b % m);

}

print_st_rets(p);

free_st_ret(p);

printf("\n");

system("pause");

return 0;

}

4562b7477eb18d450ffa02c936d6a094.png

之前看错题目,以为a, b不大于1000.修改.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值