谁可以具体解释下这个 c语言论坛程序每一步是神马意思 是个光电转速测量的 感激不尽

C语言冒泡排序问题。下面是程序,求每一步的解释。还有j在里面是什么意思_百度知道
C语言冒泡排序问题。下面是程序,求每一步的解释。还有j在里面是什么意思
7;#define N 8int main (){ int a[N]={9;&#92,8;); /a[i+1]=a[i+1])
{temp=a[i];i&j++) {
for(i=0,a[i]);=N-1,3; for (j=0,temp:&printf (&quot,5;}}/%3d& int i,2;n排序结果,6,1};***输出结果***&#47#include &i++)printf(&j&i++)
if (a[i]&n&a[i]=a[i+1];=N-2;);for (i=0;***冒泡排序***/=N-j-1;return 0;,j.h&\i&printf (&quot
提问者采纳
也就用到了之前的temp变量
&#47,3,【从a[0]到a[N-1]之间的相邻元素会对比换序】
当j=1,j,temp干嘛的.,如果没看后面、第二归纳法)
一般分析复杂代码分两种,5,以及n是对的.。
(类似数学第一:当你证明循环中i=0,第三大值?我暂时不知道,接着看
if (a[i]&&#47.,当j=0,包括优先级等等;这句就很明显了;i++)&#47,temp,我人脑模拟一下,8;i&lt,第二大值;&#47,由于相邻元素对比换序会导致扫描到的最右边那个元素为最大值
/&#47,当a[i]和a[i+1]不是大于关系,就是任意相邻的a[i]和a[i+1]只要不是从小到大的顺序;a[i+1]=&#47.依此类推
&#47,j;/等j扫描完了,j具体要干嘛,是循环并输出所有数组内元素
/&#47?其实就是《算法导论》中的一个定理,7.最小值④以上分析隐含了什么技巧,1是对的:要用到诸多编码技巧和经验;=N-j-1.。
同样,1步,i从0到N-2,【从a[0]到a[N-2]之间的相邻元素会对比换序】
循环逻辑复杂度分析,6,第一个是j从0到N-2 第二个是i从从0到N-j-i.,那么这个循环整个就是对的;所以,并且都符合同样的规则.
当j=N-2,i从0到1; &#47:要用到循环不变式去判定
语义逻辑复杂度分析;后面的代码我知道,2,就让他们交换顺序,当j=0.;/=N-2,我先记着有这几个变量
for (j=0;换句话说:循环不变式
循环不变式,i从0到N-1;再回头分析,来推断整体效果.,我们得到了a[N-1]是最大值,1};/嗯;a[i+1])
{temp=a[i];j&/
&#47,n步时的效果,【a[0]和a[1]对比换序】
&#47.①看懂不管什么代码都有一些非常有意思的技巧②我假设我现在从来没看过冒泡排序,就让相邻的元素从小到大
&#47?i;初始化了乱序数组我们再看一下;a[i]=a[i+1],因为我还没往下看,j=1得到了a[N-2]是第二大值,每次对比换序会有什么影响;j++)
for(i=0;出现两个嵌套循环,你能用循环不变式通过归纳出i=0;}
&#47,我仍然不知道i,我们就得到了a[N-1]到a[0]分别是最大值;&#47,和你一起分析一下这代码③int a[N]={9
提问者评价
其他类似问题
为您推荐:
其他1条回答
你这第一个for循环是用来控制执行次数的。。。第二个for循环执行目的两两比较是大数往后移。,第二次是第二大数放到最后第二位,这样
第一次是把最大放到最后一位冒泡排序原理懂不
冒泡排序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言问题,文件操作的程序,不知道哪里出错,请高手帮忙,在下感激不尽_百度知道
c语言问题,文件操作的程序,不知道哪里出错,请高手帮忙,在下感激不尽
if((p1=fopen(&quot,&):&); while((ch=getchar());\can not open the file ,但合并后;can not open the file .txt&quot,按任何键结束程序;);
exit(1);test1;n&#39:&合并完成。不知道问题出现在哪里.txt& while((ch=getchar());\!=EOF)
fputc(请输入字符保存到test中;))==NULL) {
printf(&); fclose(p1);ca请输入字符保存到test2中.txt&)
fputc(ch,p2),p1):& fclose(p3)!=' while((ch=getchar());请输入字符保存到test1中,*p3; fclose(p2);
exit(1);))==NULL) {
printf(&);
exit(1),p1),没有得到预期的效果; while((ch=fgetc(p2));if((p2=fopen(&quot,p1);n&#39#include& while((ch=fgetc(p3));void main(){ FILE *p1,*p2;n' } printf(&quot!='wt+&test:&quot:&quot!=EOF)
fputc(;)!=&#39.h& printf(&quot,&wt+&wt+&))==NULL) {
printf(& } printf(&); } printf(&if((p3=fopen(&quot,文件可以正确接收数据;test2;)
fputc(ch,&quot:&quot.h&process:&;#include&\}如果没有后面的合并,p3)
提问者采纳
n&#39:& fclose(p2),p3要置到文件开始处;ca)
fputc( fclose(p1);w&quot,像这样;can not open the file ,p1); fclose(p3);).h&; fclose(p1);a+&quot:&quot:#include&#include& while((ch=getchar())!=')
fputc(ch,*p3; } printf(&quot,&合并完成;n');
exit(1);))==NULL) {
printf(&quot.h&); getchar();w+&w+& if((p1=fopen(&quot,p1););
exit(1);); } printf(&void main(){ FILE *p1,&),*p2; while((ch=fgetc(p3));)
fputc(n'; if((p3=fopen(&quot:& rewind(p3):& } rewind(p2); char ch!=');test2; if((p1=fopen(&quot,p1):&test:&))==NULL) {
printf(&请输入字符保存到test2中.txt& while((ch=fgetc(p2)).txt&;;); while((ch=getchar());))==NULL) {
printf(&quot,&quot,&can not open the file :&请输入字符保存到test1中;请输入字符保存到test中;&#92,并且p2!=EOF)
fputc(\ if((p2=fopen(&quot,p2);test1:&quot.txt&quot.txt&
exit(1),按任何键结束程序; } printf(&))==NULL) {
printf(&\ while((ch=getchar())wt+是不对的,前面用w+打开!=EOF)
fputc(ch!=&#39,执行后面的追加操作前要在用追加模式打开; printf(&can not open the file ,p3)
提问者评价
O(∩_∩)O谢谢
其他类似问题
为您推荐:
请高手帮忙的相关知识
其他1条回答
wt+属性是不是不能读取呢?好像有这么个印象
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求c语言大神详细解释 感激不尽_百度知道
求c语言大神详细解释 感激不尽
time).count.book[i].*清屏*&#47.book[i].count--;\.book[i].book[i+1]; int i,number).book[i];
} if (i;i&lt:&i&
strcpy( } else
printf(& fflush(stdin)void del()
/i++) {
if(strcmp(number.count) {
for(; system(&quot.time.book[i+1];).publish);library, for (i=0.number)==0)break.book[i].price=&#92.book[i];
strcpy(library.author);
&#47.book[i+1];); printf(&quot.name.name).book[i+1];
n&quot.author,library,n
Please type in the number of the book you want to delete.book[i+1];).
strcpy(library.number)!=library. fflush(stdin);
strcpy(library!&#92, scanf(&%s&cls&quot,i++)
strcpy(library, save().book[i+1].count-1; getchar();*定义删除函数*/{
char number[10].book[i]
提问者采纳
price=library.book[i];&nbsp,&&&nbsp.book[i];&library:&&&library.count)&&&nbsp.book[i+1].name),把刚才找的那个数的位置;strcpy(i++)&&&nbsp.book[i];//下面的这一窜都是数组的移动.name.&the&char&//如果找到了那个数if&&}&strcpy(&strcpy(//输入一个字符串int&nbsp.&&save();for&printf(&&&&&&nbsp.time);&&nbsp.book[i];&&;//如果上面没找到;&&&nbsp.book[i];&&&&nbsp,library.book[i+1];system(&quot.library.book[i+1],getchar();found,这个应该时自己定义的函数fflush(stdin);&&&nbsp.author.count--;&&&nbsp.book[i];del()&printf(&\n&&&strcpy(&&&&&else&i;&nbsp.book[i+1];i&&&&number[10];cls&quot!=i++)&library.author),&).publish);&&the&{&}&&&);&nbsp,目的时为了.book[i];(i=0;&&{&/*清屏*/&//调用save函数,&you&for(;{&&Please&&}&&/*定义删除函数*/{&&&&in&nbsp.to&nbsp.count-1;fflush(stdin);&&&nbsp.time,number);\n&void&&%s&type&if(strcmp((i;&number&nbsp.number),就跳出循环&nbsp.book[i];&);&&of&&&nbsp!\n&want&&&cannot&&&&nbsp.book[i+1];strcpy(library,从数组中删除出去&nbsp.number)==0)&&nbsp,就输出这句话&book&i&&nbsp,然后只要找到与输入的那个数相等;&&//刷新缓冲区scanf(&&&&&&&nbsp,&nbsp.book[i+1]&//遍历&nbsp
提问者评价
来自团队:
其他类似问题
为您推荐:
其他1条回答
book&&the&/*定义删除函数*/void&&&number scanf(&&nbsp.author.book[i];&nbsp.book[i+1];library应该是一个结构体,返回值=0&&&&其中i的值&&nbsp.book[i];type&&&当字符串1==字符串2时;&nbsp.book[i+1],然后返回&&nbsp,后面的覆盖前面的
for(;%s&library,
strcpy(found,number);&nbsp.book[i]!\n&&nbsp,则表示找到了 if&i.book[i+1],library.price=&nbsp.book[i],停一下 getchar();& //刷新缓存 fflush(stdin);&&del()&number[10].count) { &nbsp.
//长度减去1;&&nbsp.book[i].count-1;& /* for循环&nbsp,library.book[i+1],library,让程序不要结束;& //清空缓存 fflush(stdin).&nbsp,就是接受键盘输入一个字符.number,最后一个就不显示了.book[i];&cls&&&&&
strcpy(字符串1时.number)==0)break,其实最后的数据还在
//这里没有什么意义;& } else &;&&i int&&没有等于数组的长度;want&&&&(i=0.number);就是相等的位置
if(strcmp(i++) { &&i++)
strcpy(&&&&nbsp.count--,赋值给&//定义一个长度为10的字符数组 char&you&&i& //定义一个变量&nbsp,字符串2) 当字符串1&lt.name);&& //调用save()方法 save();&&the&nbsp,返回值&gt,一个属性count定义了图书的长度 这里应该是比较查找
两个字符串自左向右逐个字符相比 strcmp(字符串1;&&(i;&nbsp.book[i];{&);
strcpy( system(&\n&nbsp.time);of&i&to&cannot&nbsp.author);&
strcpy( //接受一个键盘输入的字符串;&&&);/*清屏*/ //答应一句话提示 printf(&quot,返回值&&nbsp.book[i+1];&&&nbsp.publish);&\n&&&Please&字符串2时,//没找到打印提示
printf(&number&//循环移动图书的信息;);&&nbsp.&nbsp,library!=&&&&in&0 */ for&&&nbsp.&nbsp:&&&当字符串1&
library.//相等的;0&nbsp.book[i+1]&&&nbsp
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁谁可以具体解释下这个 C语言程序每一步是神马意思 是个光电转速测量的 感激不尽_百度知道
谁可以具体解释下这个 C语言程序每一步是神马意思 是个光电转速测量的 感激不尽
/}main(){
timer_init();
TR1=0;i--)
for(j=60.h&0;&#47,0xF8;
TH1=0;&lt,0xA4;开始数码管不显示
xian_shi();
/}voidtimer1()interrupt3
/&#47,0x82;/
TR0=0; shi=jj%100//
TH0=()/#define uchar unsigned char#define uintun signe dintuint mm=1234, for(i=m;
TH0=()/
TL1=0; qian=jj/
delay(2);delay(uintm){i&10;100;显示0000说明出错{
TR1=0;TR1=1;
TMOD=0X51,0x99;
delay(1);256;
TR1=1;1000;/
TR0=1,j;//}timer_init()
//P2=0;
delay(1);/
P0=table[shi];
P0=table[bei],0x80;
TL0=()%256; bei=jj%1000//j--);P2=0;/
/uchar code table[]={0xc0; jj=
P2=0x10,0x90;
mm=0; / jj*=20我的邮箱 @P2=0;TL1=0,0xB0;/256;P2=0,0x92,shi,};
P2=0x80;/TH1=0;0;
TR1=1; ge=jj%10;}xian_shi(){
P0=table[qian];jj+=1;
/ mm-=55536;/
P0=table[ge];/定时器计数器初始化函数{
EA=1;8)|TL1;
TH1=0;数码管刷新时间单位毫秒
}}voidtimer0()interrupt1{
附录 系统总程序清单#include&lt,0xF9;reg51
我有更好的答案
你妹,这都不知道。
总的来说知道
有的不清楚
你知道告诉我3.。。。
其他类似问题
为您推荐:
您可能关注的推广
c语言程序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言中的一道例题,谁能帮忙详细解释一下每一步的含义?_百度知道
C语言中的一道例题,谁能帮忙详细解释一下每一步的含义?
char *ss(char *s)
char *p,t;n&
char *p;abcdefgh& }
p=s+1;t=*s;p++;
{*(p-1)=*p;;
return s#include&lt,p);%s&#92.h&stdio,str[10]=&;
及 p 指向了 &#39.,也就是“abcdefgh&quot,第三个移动到第二!= null 就循环.;b&#39,意思是 定义了10个char元素数组输出为。最后 *(p-1) =t 将第一个元素移动到最后另外;中的 ‘a&#39,并初始化前8个元素;t = *s &#47, t
/a&#39.; ; 存放到变量 twhile(*p) {}
这是一个循环。注意; 将每个字符前一次;循环体;abcdefgh&quot,s指向了str的首元素,或者当 *p ;剩下的str[8]和str[9]被初始化为0:*p==null表示遇到字符串结尾.以此类推;定义一个char 指针 p 和一个char 变量 t p = s+1
p指向s的第二个元素 ; 取出第一个元素 &#39,就是将 二个元素移动第一;/ p++:char *ss( char *s) 函数ss 返回一个指向字符串的指针,在main 中调用 ss(str)后:注意 char str[10] = &quot, 循环结束条件为*p ==/char *p;函数参数 s 是一个指向字符串的指针这样: bcdefgha解释:*(p-1) = *p
其他类似问题
为您推荐:
其他1条回答
&&&&&&&&&}&&&&nbsp,将t中值赋给p-1的地址&*ss(char&{&&&&&nbsp,将最低位赋给最高位值*/&&&&return&p=ss(str);&&&&&&&&&&&//&&&&&&&&&char&&&char&&&&&&&}&&&&&&main()&&&&&&&&/*函数实现的功能为将s的每一位的值赋给低位;&&&s;&&&&&//指针s所指向的地址的内容赋给变量t&输出结果;&&&&&&&&&&&&&{&&&&&&//将p所指向的内容赋给p-1地址&&&&&*(p-1)=*p;&;&&&printf(&&nbsp#include&&&&&&&&&&&&&&&{&p指向地址指向s指针所指地址加1的位置&&&&&&&&&while(*p)//当p所指向的地址中的内容不为空则执行&*p,t;&nbsp,p);&&&&&&char&//&&%s\n&&p++;&&&&abcdefgh&&&&&&&&&}&&&&&&&&&&&&&*p;&&&&&&&&&&.h&//地址p指向p+1的地址&&&nbsp,str[10]=&&&&&p=s+1;&&&&&t=*s;&&&&&*(p-1)=t;&&&&&&&&&此时p-1刚好为s的最后一位;&&&&&&&&&&&&&&&*s)&&nbsp
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言论坛 的文章

 

随机推荐