更多“ 要求以下程序的功能是计算:s=1+1/2+1/3+…+1/100。程序运行后输出结果错误,导致错误结果的程序行是( )。A.s=1.0;B.C.S=S+1/n;D. ”相关问题
  • 第1题:

    有如下程序,运行输出的结果是 ______ 。 s=0 Do s=(s+1)*(s+2) n=n+1 Loop Until s>=30 Print n; s

    A.0 1

    B.30 30

    C.4 30

    D.3 182


    正确答案:D
    解析:此循环的功能是不断根据表达式修改变量s的值,直到其值大于等于30才退出循环。变量n用于记录循环的次数。第一次循环时,s=1*2=2;第二次循环时,s=3*4=12;第三次循环时,s=13*14=182,随即退出循环,因此共循环了3次,即n=3。

  • 第2题:

    以下程序运行后的输出结果是【】。includemain(){int k=1,s=0; do{ if((k%2)!=0)continue;

    以下程序运行后的输出结果是【 】。

    include<stdio.h>

    main()

    { int k=1,s=0;

    do{

    if((k%2)!=0) continue;

    s+=k; k++;

    }while(k>10);

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

    }


    正确答案:s=0
    s=0 解析:do-while循环结构的形式如下:
    do
    循环体
    while(表达式);
    循环的执行过程如下:
    ①执行do后面循环体中的语句。
    ②计算while后—对圆括号中表达式的值。当值为非0时,转去执行步骤1;当值为0时,执行步骤3。
    ③退出do-while循环。
    在本题中先判断k是否为偶数,如果不是则结束本次循环,进行下—次的循环条件判定,由于没有改变k的值,k>10的不成立,退出do-while循环,执行后面的printf("s=%d\n",s);语句,因为s=0,所以输出结果为s=0。

  • 第3题:

    要求以下程序的功能是计算main () { int n; float s; S=1.0; for (n=10; n>1; n--) s=S+1/n; printf("%6.4f\n",S); } 程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.prind("%6.4f\n",s);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为s=s+1/n;,所以,4个选项中选项C符合题意。

  • 第4题:

    下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。

    t=-1+1/2+1/3+1/4+…+1/m

    例如,若输入5,则应输出2.283333。

    请改正程序中的错误,使它能计算出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <conio.h>

    include <stdio.h>

    double fun(int m)

    {

    double t=1.0;

    int i;

    for(i=2;i<=m;i++)

    /*************found**************/

    t+=1.0/k;

    /*************found**************/

    return i;

    }

    main()

    {int m;

    clrscr();

    printf("\nPlease enter linteger number:");

    scanf("%d",&m);

    printf("\nThe result is%1f\n", fun(m));

    }


    正确答案:(1)错误:t+=1.0/k; 正确:t+=1.0/i; (2) 错误:return i; 正确:return t;
    (1)错误:t+=1.0/k; 正确:t+=1.0/i; (2) 错误:return i; 正确:return t; 解析:该题目考查分母成等差数列递增的一个数学公式,我们先看看循环条件for(i=2;i<=m;i++),i是从2开始递增到m,所以t的值应该由1.0/i的值逐步循环叠加后的结果,而不是t+=1.0/k;,return i;考查对程序的解读能力,当循环结束后(由输入 m的值决定),函数值返回当前t的值。

  • 第5题:

    要求以下程序的功能是计算:s=1+1/2+1/3+…+…1/10

    main( )

    { int n; float s;

    s=1.0;

    for(n=10;n>1;n--)

    s=s+1/n;

    printf("%6.4f\n",s);

    }

    程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:当“/”两侧均为整型数时,运算结果为整数,因此1/n(n>1)的结果总为0,而不是小数。

  • 第6题:

    执行以下程序的输出结果是【 】。include main()[ inti, n[4]={1};for(i= 1 ;i<=3 ;i++){

    执行以下程序的输出结果是【 】。

    include <stdio.h>

    main()

    [ int i, n[4]={1};

    for(i= 1 ;i<=3 ;i++)

    { n[i]=n[i-1]*2+1; printf("%d",n[i]); }


    正确答案:3 715
    3 715 解析:本题考查的知识点是:for循环。本题主函数中的for循环从1递增到3,所以将循环3次。循环体中,n[i]=n[i-1]*2+1;语句使数组n从第2个元素开始,后一个元素等于前一个元素的2倍加1;print("%d",n[i]);输出刚计算出的数组n的元素。故结果应该是1*2+1=3、3*2+1:7、7*2+1=15。即输出结果为3 715。

  • 第7题:

    有以下程序 void ss(char *s,char t) { while { *s) if (*s==t) *s-t-'a' +'A'; S++; main () { char strl [100] =" abcddfefdbd" , c= 'd'; ss(str1,c); printf ("%s\n" ,str1); } 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:本题中的函数ss()有两个参数,一个是字符型指针变量s,另一个是字符型变量t在函数中通过一个while循环,在循环中一次取出s指向的字符串并判断它是否和t中存放的字符相同,若相等,则执行“s=t-'a'+'A':”(若是小写字母,则把它转换成大写字母)语句。在主函数中执行函数调用ss(strl,c),很显然是把str1数组中所有字符“d”变成大写字母,其他字符不变。所以4个选项中B正确。

  • 第8题:

    有以下程序includemain(){printf("%d\n",NULL);}程序运行后的输出结果是A.0B.1C.-1D.N

    有以下程序 #include<stdio.h> main() {printf("%d\n",NULL);} 程序运行后的输出结果是

    A.0

    B.1

    C.-1

    D.NULL没定义,出错


    正确答案:A
    解析:在C语言中NULL的ASCII码值为0,而输出函数要求以整型格式输出,故最后的输出数为0。

  • 第9题:

    下列程序的运行结果是( )。

    A.S=3

    B.S=4

    C.S=5

    D.无输出结果


    正确答案:B
    运行程序,当k=7时switch(7)执行case:7,s++后s=1,break跳出。k——,k=7继续循环switch(6),执行case6;直接跳出循环,k--变成5,继续循环switch(5),执行case5后面的语句s+=2,也相当于s=s+2,此时s为3,break跳出,k变为4,继续循环,执行case4为空,继续执行case7;s++为4跳出循环,k——变为3,继续循环,执行case3,空语句往下执行case6,跳出,k-为2,继续循环,执行case2;空语句往下执行case3,空语句再执行case7,跳出循环,k——为1不符合循环,退出,此时s=4。

  • 第10题:

    以下程序拟实现计算sum=1+1/2+1/3+…+1/50。

    程序运行后,不能得到正确结果,出现问题的语句是( )。

    A.sum+=1/i;

    B.while(i<50);

    C.sum.=1.0;

    D.i++;


    正确答案:A
    选项A中,8111111+=1/i;i为整型,因此l/i是整型类型,当1/i有小数时,小数部分会被截断。因此l/i结果始终为0,导致结果出错,应改为8111m+=1.0/i。因此答案为A选项。

  • 第11题:

    以下程序运行后的输出结果是( )。

    A.s=67

    B.s=61

    C.S=63

    D.S=56


    正确答案:B
    变量x是静态变量,P是全局变量,因此sum函数调用结束时,x、P的值保留,下一次函数调用时继续使用。y和k都是局部变量,调用结束后释放空间,值不再保留。程序执行过程中,s的值为l、6、13、22、33、46、61。所以输出61。

  • 第12题:

    问答题
    给定程序MODI1.C中函数fun的功能是计算“n!”。  例如,n为5,则输出120.000000。  请改正程序中的错误,使程序能输出正确的结果。  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!  给定源程序:#include double fun(int n){ double result=1.0; /*********found*********/ if n==0  return 1.0; while(n>1&&n<170)  /*********found*********/  result *=n-- return result;}main(){ int n; printf(Input N:); scanf(%d,&n); printf(%d!=%lf,n,fun(n));}

    正确答案:

    (1)错误:if n==0
    正确:if(n==0)
    (2)错误:result *=n—
    正确:result*=n--;或{result*=n;n--;}
    解析:

      错误1:这里是一个简单的格式错误,if条件应该加括号。
      错误2:格式错误,C语言中以分号表示一条语句的结束。故在result*=n—后添加分号。

  • 第13题:

    设有如下程序:

    Private Sub Form_Click()

    Dim n As Integer, s As Integer

    n = 8

    s = 0

    Do

    s = s + n

    n = n - 1

    Loop While n > 0

    Print s

    End Sub

    以上程序的功能是______。程序运行后,单击窗体,输出结果为______。


    正确答案:

     求1-8的和 36

  • 第14题:

    以下程序的功能是计算:。includemain(){int n; float s; s=1.0; for(n=10;n>1;n--)s=s+

    以下程序的功能是计算:。#include <stdio.h> main() { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:该程序的运行结果是1.0000,算法错误。在s=s+1/n中,因为n为整型,所以循环中1/n始终为0。这就是本题算法错误的原因。应把s=s+1/n改为s=s+1.0/n。

  • 第15题:

    以下程序运行后的输出结果是( )。

    include

    char*ss(char*s)

    {char*p,t;

    P=s+1;t=*s;

    while(*p){ *(P-1)=*P;P++;}

    *(P-1)=t;

    return s;

    }

    main()

    {char*p,str[10]="abcdefgh";

    p=ss(str);

    printf("%s\n",p);

    }


    正确答案:bcdefgha
    bcdefgha

  • 第16题:

    以下程序运行后的输出结果是 。

    include

    main()

    {int i,n[5]={0};

    for(i=l;i<=4;i++)

    {n[i]=n[i-1]*2+1;printf(“%d”,n[i])}

    printf(“\n”):

    }


    正确答案:137l5
    137l5

  • 第17题:

    有以下程序 include main( ) { printf("%d\n",NULL); } 程序运行后的输出结果是

    有以下程序

    #include <stdio.h>

    main( )

    { printf("%d\n",NULL); }

    程序运行后的输出结果是

    A.0

    B.1

    C.-1

    D.NULL没定义,出错


    正确答案:A
    解析:因为在头文件stdio.h中,已对NULL作了宏定义,其值为0。

  • 第18题:

    有以下程序:include main(){ printf("%d\n",NULL);}程序运行后的输出结果是()。A.0B.1C

    有以下程序: #include<stdio.h> main() { printf("%d\n",NULL);} 程序运行后的输出结果是( )。

    A.0

    B.1

    C.-1

    D.NULL没定义,出错


    正确答案:A
    解析:在C语言中NULL的ASCII码值为0,而输出函数要求以整形格式输出,故最后的输出数为0。所以,4个选项中选项A符合愿意。

  • 第19题:

    要求以下程序的功能是计算main() {int n;float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; pfintf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是

    A.s=1.0;

    B.for(n=10;n>1;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",8);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为s=s+1/n。

  • 第20题:

    要求以下程序的功能是计算s=1+1/2+1/3+…+1/10 main() { int n; float s; s=1.0; for(n=1O;n>1;n--) s=s+1/n; printf("%6.4f\n",s); } 程序运行后输出结果错误,导致错误结果的程序行是( )。

    A.s=1.0;

    B.for(n=1O;n>l;n--)

    C.s=s+1/n;

    D.printf("%6.4f\n",s);


    正确答案:C
    解析:程序中由于n为整型,所以1/n的结果始终为0,故程序最后输出的结果为0,其结果错误,原因为在表达式1/n中1和n均为整型,所以应该将1改为1.0,这样表达式1.0/n的值不为0,为该数学表达式的值,因此可以知道导致程序运行后输出结果错误的行为“s=s+1/n;”,所以,4个选项中选项C符合题意。

  • 第21题:

    给定程序MODll.C中函数fun的功能是:计算n!。

    例如,给n输入5,则输出120.000000。

    请改正程序中的错误,使程序能输出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!


    正确答案:(1)if (n==0) (2)result *=n--;
    (1)if (n==0) (2)result *=n--; 解析:本题中函数的功能是计算阶乘,其中,阶乘的计算公式分为参数n是1和大于1两种情况,例如,1的阶乘1!=1;5的阶乘5!=5×4×3×2×1。

  • 第22题:

    有以下程序 void ss(char*s,char t) { while(*s) { if(*s==t)*s=t-'a'+'A'; s++; }} main() { char strl[100]="abcddfefdbd",c='d'; ss(str1,c);printf("%s\n",strl);} 程序运行后的输出结果是

    A.ABCDDEFEDBD

    B.abcDDfefDbD

    C.abcAAfefAbA

    D.Abcddfefdbd


    正确答案:B
    解析:在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。C语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  • 第23题:

    (13)以下程序运行后的输出结果是 【13】 。

    #include <stdio.h>

    main()

    { int i,n[5]={0};

    for(i=1;i<=4;i++)

    { n[i]==n[i-1]*2+1; printf("%d",n[i]); }

    printf("\n");

    }


    正确答案:
    (13)13715