发布时间 : 星期三 文章c语言笔记易错点更新完毕开始阅读3c58f331185f312b3169a45177232f60dccce77a
.
1:排序函数不需要返回值
/*===================================== 本函数用于对数组从小到大排序
参数说明:a[]表示待排序数组的首地址;num表示数组长度
i,j是循环变量;k用于记录每轮比较的最小值下标; temp是交换临时变量 返回值:无
=====================================*/ void sort(int a[],int num) {
int i,j,k,temp;
for(i=0;i k=i; for(j=i+1;j if(a[j] temp=a[i]; a[i]=a[k]; a[k]=temp; } } 错误int queue(int array2[n]) //定义为数组排序的函数 { int i,j,temp; for(i=0;i<=n-2;i++) //选择法排序 for(j=i+1;j<=n-1;j++) { if(array2[i]>array2[j]) //交换数组的值 { temp=array2[i]; array2[i]=array2[j]; array2[j]=temp; } } } return(array2[n]);//此返回值的意义是什么?为什么程序运行成功? 【此返回值其实已经溢出了,通过调试函数可以看出】 . . /*=========================================== 本函数用于将数组中的元素值作为ACSII码生成字符串,并对应存储输 入的字符数组中。 参数说明:a[]数组作为ACSII码;num表示数组长度;str[]用于储存 形成的字符串; 返回值:无 ============================================*/ 此时不需要返回值所以不需要定义函数的类型,为空即可; void ACSIIstr(int a[],int num,char str[]) { int i; for(i=0;i str[i]=a[i]; } } The variable 'num' is being used without being initialized. 到底是毛意思啊 int panduan(char str1[],char str2[]) { int i=0,j=0,k=0,len1,len2,num=0; { 如果这里写成num,就会出现 : 还有一种情况则是未加& The variable 'num' is being used without being initialized. } while(j>=0) { if(str1[j]==0)break; 如果此处写成str1[j]==’0’,那么此处的循环成为死循环。 } j++; . . } len1=j; while(k>=0) { } len2=k; for(i=0;i<=len2-1;i++) { } return 0; if(str2[i]==str1[0]) { } if(num==len1)return 1; num=0; for(j=0,k=i;k<=len2-1,j<=len1-1;j++,k++) { } if(str2[k]==str1[j]/*||str1[i]==str2[j]+32||str1[i]==str2[j]-32*/) {num++;} else break; if(str2[k]==0)break; k++; #include int tran2(int num,int array1[n],int len) int numb=0,array2[n]={1,1,1,1,1},len1=0,i=0; int tran2(int num,int array1[n],int len); printf(\请?输?入?一?个?十?进?制?正y整?数簓:阰\\n\); scanf(\,&numb); len1=tran2(numb,array2,len1); printf(\,len1); for(i=0;i<=len1-1;i++) { } printf(\); //if(array2[i]!=0) printf(\,array2[i]); . . { int i=0,j,shan,temp; while(num) { } printf(\,num%2); shan=num/2; if(num%2) {array1[i]=1;} else {array1[i]=0;} printf(\,array1[i]); i++; printf(\,i); num=shan; for(j=0;j<=i-1;j++) { temp=array1[j]; array1[j]=array1[i-1-j];该方法错误,其实在j=2的时候交换已经全部完成,再 array1[i-1-j]=temp; 继续下去就又交换了一遍 printf(\,array1[j]); } { } len=i; return(len); temp=array1[j]; array1[j]=array1[i-1-j]; array1[i-1-j]=temp; for(j=0;j<=(i-1)/2;j++) } 1:Numb is corrupt 的原因是数组定义为array【】=0; 2:函数未返回值的时候len1=0,为什么?明明函数里面的len值已经改变了; 3:如果函数想要返回两个值应该怎么办? E59 #include .