相关疑难解决方法(0)

求平方和时,是否需要显式处理负数或零?

我最近在课堂上做了一个测试。问题之一是:

给定一个数字n,用C / C ++编写一个函数,该函数返回数字平方的数字总和。(以下内容很重要)。的范围Ñ为[ - (10 ^ 7),10 ^ 7]。示例:如果n = 123,则您的函数应返回14(1 ^ 2 + 2 ^ 2 + 3 ^ 2 = 14)。

这是我写的函数:

int sum_of_digits_squared(int n) 
{
    int s = 0, c;

    while (n) {
        c = n % 10;
        s += (c * c);
        n /= 10;
    }

    return s;
}
Run Code Online (Sandbox Code Playgroud)

看着我正确。所以现在测试又回来了,我发现老师由于我不明白的原因没有给我所有的分数。据他说,为了使我的功能更完整,我应该添加以下细节:

int sum_of_digits_squared(int n) 
 {
    int s = 0, c;

    if (n == 0) {      // …
Run Code Online (Sandbox Code Playgroud)

c

213
推荐指数
6
解决办法
2万
查看次数

带负数的模运算

在ac程序中我正在尝试以下操作(只是检查行为)

 x = 5 % (-3);
 y = (-5) % (3);
 z = (-5) % (-3); 

printf("%d ,%d ,%d", x, y, z); 
Run Code Online (Sandbox Code Playgroud)

给我输出为(2, -2 , -2)gcc.我每次都期待一个积极的结果.模数可以为负数吗?任何人都可以解释这种行为吗?

c gcc modulo

172
推荐指数
8
解决办法
18万
查看次数

C++中带负数的模数

我一直在编写以下重现关系的程序:

An = 5An-1 - 2An-2  - An-3 + An-4
Run Code Online (Sandbox Code Playgroud)

输出应该是答案模数10 ^ 9 + 7 ..我为此写了一个蛮力方法如下......

long long int t1=5, t2=9, t3=11, t4=13, sum;
while(i--)
{
    sum=((5*t4) - 2*t3 - t2 +t1)%MOD;
    t1=t2;
    t2=t3;
    t3=t4;
    t4=sum;
}
printf("%lld\n", sum);
Run Code Online (Sandbox Code Playgroud)

其中MOD= 10^9 +7 每件事似乎都是真的..但我得到了一些价值的否定答案..由于这个问题,我无法找到正确的解决方案...... Plz帮助保持正确的地方Modulus

c++ recurrence modulo

21
推荐指数
3
解决办法
3万
查看次数

使用C89和C99编译时,C程序在运行时的行为有何不同?

我发现以下代码片段(我认为在维基百科中)会在识别C++注释时创建不同的运行时:

int a = 4 //* This is a comment, but where does it end? */ 2
  ;
Run Code Online (Sandbox Code Playgroud)

但直到现在,这是唯一一个(不包括变体).

我对区分使用__STDC__等不感兴趣,而不是C89无法编译的程序.

是否有其他程序/片段与C99产生不同的C89运行时间?

c c99 c89 language-lawyer

14
推荐指数
1
解决办法
402
查看次数

c ++ 11中的运算符模数变化?

可能重复:
C++运算符%保证

在c ++ 98/03中

5.6-4

二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数.如果/或%的第二个操作数为零,则行为未定义; 否则(a/b)*b + a%b等于a.如果两个操作数都是非负的,那么余数是非负的; 如果没有,余数的符号是​​实现定义的.

在c ++ 11中:

5.6 -4

二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数.如果/或%的第二个操作数为零,则行为未定义.对于积分操作数,/运算符产生代数商,丢弃任何小数部分;如果商a/b在结果类型中可表示,则为(a/b)*b + a%b等于a.

正如您所看到的那样,为符号位定义的实现缺失了,它会发生什么?

c++ modulo language-lawyer c++11 c++03

11
推荐指数
1
解决办法
4472
查看次数

负数模数在swift中

负数的模数如何在swift中工作?当我这样做时(-1%3)它给出了-1但剩下的是2.它有什么收获?

ios swift

11
推荐指数
2
解决办法
3860
查看次数

如何划分奇数以留下两个整数?

如果我有一个奇数,我怎么把它分成两个并留下两个整数,第一个比第二个多一个.例如9会产生5和4吗?

math

8
推荐指数
2
解决办法
1万
查看次数

在Perl 5中定义了负操作数的%的行为?

直到最近(即C99),模运算符的行为是在C中定义的实现.由于Perl 5是用C编写的,它是否依赖于用于构建它的C编译器的行为?

perl modulo

5
推荐指数
1
解决办法
683
查看次数

模运算的结果是否定的

为什么以下C代码产生负数作为输出?我该如何防止这种情况发生?

    #include <stdio.h>

    int main()
    {
            int i;
            char buf[1024];
            for (i = 0; i < 1024; i++)
                    buf[i] = i%256;

            for (i=0; i<1024; i++) {
                    printf("%d ", buf[i]);
                    if (i%32==31)
                            printf("\n");
            }
    }
Run Code Online (Sandbox Code Playgroud)

c math modulo negative-number

3
推荐指数
1
解决办法
142
查看次数

为什么erlang重新定义了一些基本的东西?

我们所有的数学书籍都在教导我们,其余的总是积极的.Wiki告诉我,余数可以是最小正余数或最小绝对余数.这是一个非常基本的概念,对很多人(包括我)来说很难忘掉.当程序员使用多种语言时,它可能会导致奇怪的错误.

erlang重新定义这样一个基本概念的原因是什么?

Eshell V6.2 (abort with ^G) 1> -5 rem 3. -2

该结果与最小正余数或最小绝对余数概念不一致.

http://en.wikipedia.org/wiki/Remainder#Integer_division

math erlang

2
推荐指数
1
解决办法
102
查看次数

如何确保模数的正值

鉴于此简单的随机生成器:

int i, r = 0;
for (i = 0; i < 50; i++) {
    r = (1234 * r + 101) % (11000000);
    printf("%d\n", r);
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,我得到负值!

101
124735
10923091
192507
6553739
-7620565
-10842517
-10763989
-1860437
8188139
Run Code Online (Sandbox Code Playgroud)

不应该是积极的价值观吗?有人可以解释一下吗?

c

2
推荐指数
1
解决办法
100
查看次数

如何迭代"循环数组"中的子范围?

我正在尝试编写以下perl子例程.给定的是a长度数组,数组中n的索引i(0<=i<n上游窗口长度u和下游窗口长度)d.

我想迭代上游窗口和下游窗口中的值i.在最简单的情况下,这将迭代a[i-u..i-1](上游窗口)和a[i+1..i+d](下游窗口)中的值.

例如:如果我的数组是1 2 3 4 5 6 7 8 9 10,i=5并且两个窗口大小都是2,则上游值是简单的6 7,下游值是9 10.

但是,有两个并发症:

  1. 我想我的数组是循环的.如果i相对较小(接近0)或较大(接近n),则其中一个窗口可能不适合阵列.在这种情况下,我想将数组看作循环数组.例如,如果我的数组是1 2 3 4 5 6 7 8 9 10,i=8并且两个窗口大小都是4,则上游值是简单4 5 6 7但下游值是9 10 1 2.

  2. 我宁愿用某种方法迭代这些值而不将它们显式复制到新数组中,因为它们可能很长.

arrays perl range cycle

1
推荐指数
1
解决办法
332
查看次数

Mod with negative numbers gives a negative result in Java and C

Let's say I have (-5) mod 8.

I tried it in both languages Java and C, and they gave me a -5 result when I was expecting 3.

Why is this happening? Can a modulus be negative? And what should I change to get the correct result?

Java code

public class Example {
    public static void main(String[] args) {
        int x;
        x = -5%8;
        System.out.println(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

C code

int main(){
    int x;
    x = -5%8;
    printf("%d", x); …
Run Code Online (Sandbox Code Playgroud)

c java math mod

0
推荐指数
1
解决办法
4507
查看次数

标签 统计

c ×6

modulo ×5

math ×4

c++ ×2

language-lawyer ×2

perl ×2

arrays ×1

c++03 ×1

c++11 ×1

c89 ×1

c99 ×1

cycle ×1

erlang ×1

gcc ×1

ios ×1

java ×1

mod ×1

negative-number ×1

range ×1

recurrence ×1

swift ×1