以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到s&gt;1000为止。程序运行后,不能得到正确结果,以下修改方案正确的是( )。A.把while(s>lOOO);改为while(s<=1000);B.把s=1;改为s=0;C.把n=1;改为n=0;D.把n=n+1;改为n=n$n;

题目

以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到s>;1000为止。

程序运行后,不能得到正确结果,以下修改方案正确的是( )。

A.把while(s>lOOO);改为while(s<=1000);

B.把s=1;改为s=0;

C.把n=1;改为n=0;

D.把n=n+1;改为n=n$n;


相似考题
更多“ 以下程序拟实现计算s=1+2*2+3*3+…+n*n+…,直到slOOO);改为while(s=1000);B.把s=1;改为s=0;C.把n=1;改为n=0;D.把n=n+1;改为n=n$n; ”相关问题
  • 第1题:

    执行以下的循环后输出的值为( )。 public class Sun { public static void main(String args[ ]) { int m=1000,s=0,n=0; do{ n=n+1; s=s+(int)Math.pow(2,n); }while(s<=m); System.out.println("n="+n+","+"s="+s); } }

    A.n=9,s=1000

    B.n=8,s=1022

    C.n=9,s=1022

    D.n=8,s=1000


    正确答案:C
    解析:本题考查对do-while循环的理解。本题完成的功能是求当20+21+22+…+2n最少需要多少项时才能满足大于数值m。m=1000,当程序运行到第8次时,循环测试条件仍然为真,所以继续执行1次,当执行到第9次时,s的值已经超过了1000。故本题答案是C。

  • 第2题:

    有以下程序 include int fun(char s[ ]) { int n=0; while(*s<='9'&&*s>='0

    有以下程序

    #include <stdio.h>

    int fun(char s[ ])

    { int n=0;

    while(*s<='9'&&*s>='0') {n=10*n+*s-'0';s++;}

    retum(n);

    }

    main( )

    { char s[10]={'6','1','*','4','*','9','*','0','*'};

    printf("%d\n",fun(s));

    }

    程序的运行结果是

    A.9

    B.61490

    C.61

    D.5


    正确答案:C
    解析:在fin函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个十进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。

  • 第3题:

    有人编写了如下程序:

    Private Sub Form. Click( )

    Dim s As Integer,x As Integer

    s=0

    x=0

    Do While S=1000

    x=x+l

    s=s+x^2

    Loop

    Print s

    End Sub

    上述程序的功能是:计算s=1+22+32+…+n2+…,直到s>10000为止。程序运行后,发现得不到正确的结果,必须进行修改。下列修改中正确的是( )。

    A.把x=0改为x=1.

    B.把Do While s=10000改为Do While s<=10000

    C.do="" while="" s="">10000

    D.交换x=x+1和s=s+x^2的位置


    正确答案:B
    B。【解析】本题考查简单的循环问题,DoWhile(条件)表示当条件为真时,循环才能执行,针对于本题中只有'-5s=10000是循环才能够进行执行,而程序的功能是计算s=1+22+32+…+100002,所以当s<=10000时执行才能实现此功能,所以答案选择B。

  • 第4题:

    执行以下的循环后输出的值为( )。 public class Sun { public static void main (String args[ ]) { int m=1000, s=0, n=0; do{ n=n+l; s=s+(int)Math.pow(2,n); }while (s<=m); System.out.println("n="+n+","+"s="+s); } }

    A.n=9, s=1000

    B.n=8, s=1022

    C.n=9, s=1022

    D.n=8, s=1000


    正确答案:C
    解析:本题考查对do-while循环的理解。本题完成的功能是求当20+21+22+...+2n最少需要多少项时才能满足大于数值m。 m=1000,当程序运行到第8次时,循环测试条件仍然为真,所以继续执行1次,当执行到第 9次时,s的值已经超过了1000。故本题答案是C。

  • 第5题:

    有以下程序:includeint fun(char s[]){ intn=0;while(*s<='9'&&*s>='0'){n=10

    有以下程序: #include <stdio.h> int fun(char s[]) { int n=0; while(*s<='9'&&*s>='0') {n=10*n+*s-'0';s++;} return(n); } main() { char s[10]={'6','1','*','4','*','9','*','0','*'}; printf("%d\n",fun(s)); } 程序的运行结果是( )。

    A.9

    B.61490

    C.61

    D.5


    正确答案:C
    解析:题目fun()函数中while循环的意思是:判断s所指内容是否为数字字符,如果是数字字符,则计算表达式n=10*n+*s-'0';。其中*s-'0'的作用是将相应的数字字符转换为数值,例如字符'8'减去字符'0'后,得到的结果就是数值8了。n=10*n+的作用是将累计变量n中原来内容乘以10,然后再加上刚转换的数字字符的数值,例如原来n的值为1,*s现在的内容为'2',那么执行了n=10*n+*s-'0';语句后,n的值变为12,如果接下来再来一个'8'字符,执行n=10*n+*s-'O';语句后,n的值就是128了。故不难看出fun()函数的作用是“将数字字符串转换为相应的十进制数值,碰到非数字字符时结束”。从主函数中定义的字符数组s的初始化内容可以看出,fun()函数返回值应该是61。故应该选择C。