分析以下个程序段,并用大O记号表示其执行时间

分析以下个程序段,并用大O记号表示其执行时间,第1张

恩恩………… i=1; //运行次数为:常数1k=0; //运行次数为:常数1while(i<n-1) //运行次数与规模n有关:因为i初始化为1,最后判断又运行所以运行次数为n-1次{k=k+10i; //因为最后的判断没有进入循环体,所以运行次数为n-2次i++; //同上} 所以关于n的时间函数T(n)=1+1+[(n-1)2+1] //[]内最后的1为while最后的判断 接着用极限的方法求出渐近时间复杂度O: 因为对于问题规模n趋向无限时,高次项为影响时间的最大因素,所以忽略其常数项和底次项后,得到渐近时间复杂度lim n->∞ T(n)=1+n2=O(n) 分析完毕^____^

程序:y=-1;

if(x!=0)y=1;

if(x>0)y=1;

else y=0;

转换成标准的格式是:

y=-1;\\将y赋值为-1

if(x!=0){y=1;}\\如果x不等于0,就把y赋值为1

if(x>0){y=1;}else{y=0;}\\如果x大于0,就把y赋值为1,否则把y赋值为0

分析:

x小于0时,第一个if成功,y=1第二个失败跳到else,y=0

x等于0时,第一个if失败跳过,第二个也失败跳到else,y=0

x大于0时,第一个if成功,y=1,第二个也成功,y=1

所以

y= 0 (x<0)

y= 0 (x=0)

y= 1 (x>0)

你的这个程序好烂,按上面的代码的话因为变量I和J没关联起来,所以是各自做各自的循环的,所以运行后count的值是1。因为你的语句完全错的,没有分号呀,严格点你执行不起来的。编译器会查出错的。

分析每一次循环可以发现,当循环执行10次后x>100,y方才减1,此时x被复原为91;

如此下去,由于每执行10次循环才使y减1,所以循环体执行10010次,也就是说if语句判断执行了1000次(但里面的y--执行了100次)。至于时间复杂度,你现在数据都给定值了那不就是o(1)吗……如果x、y没给初值,则粗略地说应该为o(y)(或者说是o(10y))。

一、 #include<stdioh> main(){ int a,b,sum,m,t;//定义变量 double s;//s为双精度型变量 a=8;//给a赋值为8 b=3;b赋值3 sum=a+b;sum的值为a+b之和即11 m=a-b;m=8-3=5 t=ab;t=83=24 s=(double)a/(double)b; s=266666666666666 printf("\na=%d,b=%d,sum=%d,m=%d,t=%d,s=%lf",a,b,sum,m,t,s); 输出结果为 a=8,b=3,sum=11,m=5,t=24,s=266666666666666 这段代码是基本的算术运算 第二段代码 输出为a=8,b=3,m=2,s=192000000000000(S为双精度,共15位,不足用0补齐) 第三段代码 算圆柱体的体积 输出结果为r=250000000000000,h=350000000000000,v=686875000000000 第四段代码 与第三段代码一样 但是要输入r和h的值 第五段代码有问题 如果要求必须输入小写字母 在printf("\ninput char:");这句应该提示printf("\ninput char(请输入小写字母):");或者在这句下面再加一句if(ch<97||ch>122)printf("\nERROE!");不然这段代码的功能就不是将小写字母转换为对应的大写字母 而只是将你输入的字符转换为在ASCII值减32后所得的那个ASCII值对应的字符。 第六段代码 输入三个字符 然后一行输出一个,最后一行输出BOY三个字母 第七段代码 输入两个数 输出较大的那个 第八段代码 输入三个数 输出最大值

#include <stdioh>

char str[]="SSSWILTECH1\1\11W\1WALLMP1";

void main( )

{

int k;

char c;

for(k=2;(c=str[k])!='\0';k++) //从str[2]开始移动字符串指针,划过每一个字符做switch的判断

{

switch(c)

{

case 'A':putchar('a');continue; //如果遇到A就往屏幕输出a,并继续循环

case '1':break; //遇到字符1就不做 *** 作跳出switch输出号

case 1 :while((c=str[++k])!='\1'&&c!='\0'); //如果遇到ASCII码为1的一直移动字符指针到下一个ASCII为1的或者尾端\0结束

case 9:putchar('#'); //如果遇到ASCII码为9的输出#

case 'E':

case 'L':continue; //如果遇到字符E,L均不 *** 作,继续返回做循环

default:putchar(c);continue ; //如以条件均不符合输出该字符

}

putchar('');

}

puts(" ");

}

while((ch=fgetc(fp))!=EOF) //读入1个字符

{while(ch!=EOF&&!isalpha(ch)) ch=fgetc(fp); //如果非结尾并且非字符,继续读取

if(isower(ch)) //如果是小写的,变成大写

{ch-=32;

fseek(fp,-1,1); 移动文件指针,往后走

fputc(ch,fp); 修改文件内容

fseek(fp,1,1); 往后以

}

while(isalpha(ch)) ch=fgetc(fp); //字符的话,继续

}

功能,将文件中,单词开头小写的,改成大写,非开始字符保持不变

以上就是关于分析以下个程序段,并用大O记号表示其执行时间全部的内容,包括:分析以下个程序段,并用大O记号表示其执行时间、下面的程序片段所表示的数学函数关系是、分析下面的代码片段,程序执行后count的值是多少(具体说明整个过程,及怎样得出结果)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10164050.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存