算法的主要运算如下: While i<n do { s=0; While s<n do { s=s+1; } i=i+1; } 其中i的初值为0,s初值为0,“=”为赋值号。该算法的时间复杂度为()A.O(2n)B.O(n+log2n)C.O(nlog2n)D.O(n2)

题目

算法的主要运算如下: While i<n do { s=0; While s<n do { s=s+1; } i=i+1; } 其中i的初值为0,s初值为0,“=”为赋值号。该算法的时间复杂度为()

A.O(2n)

B.O(n+log2n)

C.O(nlog2n)

D.O(n2)


相似考题
更多“算法的主要运算如下: Whilei<n do {s=0; Whiles<n do { s=s+1; } i=i+1; }其中i的初值为0,s初值 ”相关问题
  • 第1题:

    有以下程序:includeincludevoid fun(char s[][10],int n){char t;int i,j;

    有以下程序: #include<stdio.h> #include<string.h> void fun(char s[][10],int n) { char t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) /*比较字符串的首字符大小,并交换字符串的首字符*/ if(s[i][0]>s[j][0]){t=s[i][0];s[i][0]=s[j][0];sEj][0]=t;} } main() {char s[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"); fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是( )。

    A.xy,aaaacc

    B.aaaacc,xy

    C.xcc,aabcc

    D.acc,xabcc


    正确答案:D
    解析:本题考查的重点是二维数组的存储。函数fun()只是对5个字符串的首字母进行排序,排序后为{“acc”,“abcc”,“by”,“baaacc”,“xabcc”},因此,输出为第1个和第5个字符串,选项D是正确的。

  • 第2题:

    有如下程序,运行输出的结果是 ______ 。 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。

  • 第3题:

    程序段s=i=0;do{i=i+1;s=s+i;}while(i=n);的时间复杂度为()。

    A、O(n)

    B、O(nlog2n)

    C、O(n)

    D、O(n/2)


    参考答案:A

  • 第4题:

    有如下程序 Private Sub Command1_Chck( ) s=0 DO s=(s+1) *(s+2) N=N+1 Loop Until s>=10 Prim N;s End Sub 运行后的输出结果是

    A.0 1

    B.30 30

    C.4 30

    D.2 12


    正确答案:D
    解析:Untils>=10表示当s大于等于10时,终止循环,根据题意,循环2次,故N的值为2,可以判断答案为D,另外也可以计算出s的值为12,但由于本题为选择题,可以不计算。直接得到正确答案。

  • 第5题:

    设有定义“chars[8];inti=0;”,下列不能将一行(不超过80个字符)带有空格的字符国正确读入的语句或语句组是( )。

    A.gets(s);

    B.while((s[i++]=getchar( ))!=\n);s[i]=\0;

    C.seanf("%S",s);

    D.do{scanf("%C",&s[i]);}while(s[i++]!=\n);s[i]=\0;


    正确答案:C
    C。【解析】在scanf输入函数中,格式字符s的作用是输入一个字符串,直到遇到空格结束。所以选项C不能输入包含空格的字符串。正确答案为选项C。

  • 第6题:

    有以下程序includevoid main(){char s[]={"01aXy"};int i,n=0;for(i=0;s[i]!=0;i++)if

    有以下程序 #include<stdio.h> void main() { char s[]={"01aXy"};int i,n=0; for(i=0;s[i]!=0;i++) if(s[i]<='a'&&s[i]>='z')n++; printf("%d\n",n); } 程序运行后的输出结果是( )。

    A.0

    B.2

    C.3

    D.5


    正确答案:A

  • 第7题:

    以下能够正确计算n!的程序是( )。

    A.Pfivate Sub Commgld1_LClick() n=5:x=1 Do x=x*1 i=i+1 Loop Whilei<n

    B.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*1 i=i+1 Loop Whilei<n Print x End Sub

    C.Pfivate Sub Command1_ C1ick() n=5:x=1:i=1 Do X=X*1 i=i+1 Loop While i<=n

    D.Private Sub Command1_C1ick() n=5:x=1:i=1 Do X=X*1 i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:本题考查Do While语句的用法。首先我们知道n!=1×2×3×……×(n-1)×n,由于是累乘,因此x和i的初值都必须为1;其次就是循环执行条件的确定,由于使用的是 While型循环,表示在满足条件时执行循环体中的代码,这里满足执行循环的条件应该是 i=n。选项A和B的循环条件都是in,少了 i=n的一次循环,实际上只执行了n-1次:而选项D则从i>n时才开始执行,不合题意;同时,选项B没有指定i的初值,系统会默认i =0,这也不合题意。本题正确答案为选项C。

  • 第8题:

    有以下程序 main() { int i=0,s=0; do{ if(i%2){i++;continue;} i++; s+=i; }while(i<7); printf("%d\n",s); } 执行后输出结果是

    A.16

    B.12

    C.28

    D.21


    正确答案:A
    解析:do循环与continue语句,在循环体中有一条if语句,其后面表达式为“i%2”,当i的值为奇数时,其值为真,执行其后面的语句,i的值加1,重新开始循环,当i的值为偶数时,“i%2”为假,执行“i++;s+=i”。在循环中i为偶数时的值分别为0、2、4、6,加1过后的值分别为1、3、5、7,s中存放的是它们的和,值为16。

  • 第9题:

    下列程序的运行结果是() classProgramx=0,y=-1; { publicstaticvoidMain(string[]args) { int i=0,s=1; do{s/=s+1;i++; } while(i<=10); Console.WriteLine(“i={0},s={1}”,i,s);


    正确答案:i=11,s=12

  • 第10题:

    不正确的字符串赋值或赋初值的方式是()

    • A、charstr[]="string";
    • B、charstr[7]={’s’,’t’,’r’,’i’,’n’,’g’};
    • C、charstr[10];str="string";
    • D、charstr[7]={’s’,’t’,’r’,’i’,’n’,’g’,’/0’};

    正确答案:C

  • 第11题:

    下面是一段关于计算变量s的算法: ①变量s的初值是0  ②变量i从1起循环到n,此时变量s的值由下面的式子表达式计算 ③s=s+(-1)*i ④输出变量s的值 这个计算s值的算法中,s的代数式表示是()。

    • A、1-2+3-4+…+(-1)n*(n-1)
    • B、1-2+3-4+…+(-1)n-1*n
    • C、1+2+3+4+...+(n-1)+n
    • D、-1-2-3-4-...-n

    正确答案:D

  • 第12题:

    单选题
    设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。for(i=n-1;i>=0;i--)for(j=0;j
    A

    n2

    B

    O(nlgn)

    C

    O(n)

    D

    O(n2)


    正确答案: A
    解析: 暂无解析

  • 第13题:

    (30)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是

    A gets(s)

    B)while((s[i++]=getchar())!=”\n”;s=”\0”;

    C)scanf(“%s”,s);

    D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;


    正确答案:C

  • 第14题:

    有以下程序 main( ) { int i=0,s=0; do{ if(i%2){i++;continue;} i++; s+=i; } while(i<7); printf("%d\n",s); } 执行后输出的结果是

    A.16

    B.12

    C.28

    D.21


    正确答案:A
    解析:本题的功能是计算0~7之间所有奇数的和(包括7)。

  • 第15题:

    算法的主运算如下,其中i的初值为1,s的初值为0,“←”为赋值号。 while i<n do { for j←1 to n do s←s+a[i,j] i←i*2; 则该算法的时间复杂度为 ( )

    A.O(2n)

    B.O(n+log2n)

    C.O(nlog2n)

    D.O(n2)


    正确答案:C

  • 第16题:

    设有定义:char s[10];int i=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是( )。

    A.gets(s);

    B.scanf("%s",s);

    C.while((s[i++]=getchar())!='\n');s[i]='\0';

    D.do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';


    正确答案:B
    解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()数接收字符串时的结束标志为回车或者空格。因此选巧

  • 第17题:

    str是全部由小写字母字符和空格字符组成的字符串,由 num传入字符串的长度。请补充函数fun(),该函数的功能是:统计字符串str中的单词个数,结果由变量num传回。每个单词之间都由空格隔开,并且字符串str开始不存在空格。

    例如:str=“how do you do”,结果为:num=4。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    include <stdio.h>

    define N 80

    void fun(char *s,int *num)

    {

    int i,n=0;

    for(i=0;【 】;i++)

    {

    if(s[i]>='a',&&s[i]<='z',&&(s[i+1)==’’||s[i+1]=='\0'))

    【 】;

    }

    【 】;

    }

    main()

    {

    char str[N];

    int num=0;

    printf("Enter a string:\n");

    gets(str);

    while(str[num])

    num++;

    fun(str,&num);

    printf("The number of word is:

    %d\n\n",num);


    正确答案:i*num n++ *num=n
    i*num n++ *num=n 解析:第一空:*num传入字符串的长度,所以for循环中变量i的变化范围是从0到*num-1。第二空:如果当前判断的字符是小写字母,并且它的下一个字符是空格或者是字符串结束标记符,则表示当前字符是一个单词的最后一个字母,统计单词数的变量n要加上1。第三空:题目要求结果由变量num传回,所以要将n的值赋给指针num所指的单元。

  • 第18题:

    以下能够正确计算n!的程序是______。

    A.Private Sub Commeadl_Click() n=5: x=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    B.Private Sub Command1_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    C.Private Sub Command1_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop Whilei<=n Print x End Sub

    D.Private Sub Commsndl_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:选项A中变量i没有赋初值操作,其一直保持0值,所以始终为0;选项B中循环条件“i>n”错误,计算一次后就退出循环,导致计算结果不正确;选项D的计算过程中,第1次计算时“1>4”的条件不处理,退出Do循环,其结果为1;选项C的计算结果为5!。

  • 第19题:

    执行下列程序,最后S的显示值为( )。 SET TALK OFF s=0 i=2 x=10 DO WHILE s<=x s=s+i i=i+1 ENDDO ?s SET TALK ON

    A.12

    B.14

    C.16

    D.18


    正确答案:B
    解析:DOWHILE-ENDDO语句的格式:DOWHILE条件>命令序列>ENDDO执行该语句时,先判断DOWHILE处的循环条件是否成立,如果条件为真,则执行DOWHILE与ENDDO之间的命令序列>(循环体),当执行到ENDDO时,返回到DOWHILE,再次判断循环条件是否为真,以确定是否再次执行循环体。若条件为假,则结束该循环语句,执行ENDDO后面的语句。先给3个变量赋初始值,使用一个DOWHILE循环语句来操作,判断条件是变量,是否小于等于x,如果大于x,则退出循环,否则执行循环体,执行s=s+,s=2;再执行i=i+1后,j=3,重复此循环体的操作。题干中的循环步骤及结果见下表。[*]所以S最终的显示值是14。

  • 第20题:

    执行如下程序,最后S的显示值为 SET TALK OFF S=0 i=5 X=11 DO WHILE s<=X s=s+i i=i+1 ENDDO ?s SET TALK ON

    A.5

    B.11

    C.18

    D.26


    正确答案:C
    解析:该循环语句中,变量s和i每次执行循环后值的变化如下:s值i值第一次循环56第二次循环117第三次循环188程序在第四次执行循环时,因条件(18=11)为假而退出循环。

  • 第21题:

    以下能正确计算1×2×3×…×10的程序段是()。

    • A、do{i=1;s=1;
    • B、do{i=1;s=0;s=s*i;s=s*i;i++;i++;}while(i<=10);}while(i<=10);
    • C、i=1;s=1;
    • D、i=1;s=0;do{s=s*i;do{s=s*i;i++;i++;}while(i<=10);}while(i<=10);

    正确答案:C

  • 第22题:

    若变量已正确定义,以下不能正确计算1+2+3+4+5的程序段是()。

    • A、i=1;s=1;do{s=s+i;i++;}while(i<5);
    • B、i=0;s=0;do{i++;s=s+i;}while(i<5);
    • C、i=1;s=0;do{s=s+i;i++;}while(i<6);
    • D、i=1;s=0;do{s=s+i;i++;}while(i<=5);

    正确答案:B

  • 第23题:

    填空题
    下列程序的运行结果是() classProgramx=0,y=-1; { publicstaticvoidMain(string[]args) { int i=0,s=1; do{s/=s+1;i++; } while(i<=10); Console.WriteLine(“i={0},s={1}”,i,s);

    正确答案: i=11,s=12
    解析: 暂无解析