c语言笔记易错点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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]

k=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)

{

if(str2[k]==0)break;

k++;

}

len2=k;

for(i=0;i<=len2-1;i++)

{

if(str2[i]==str1[0])

{

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(num==len1)return 1;

}

return 0;

}

#include

#define n 30

void main()

{

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("%d",&numb);

len1=tran2(numb,array2,len1);

printf("len1=%d\n",len1);

for(i=0;i<=len1-1;i++)

{

//if(array2[i]!=0)

printf("%d",array2[i]);

}

printf("\n");

}

int tran2(int num,int array1[n],int len)

{

int i=0,j,shan,temp;

while(num)

{

printf(" %d\n",num%2);

shan=num/2;

if(num%2)

{array1[i]=1;}

else

{array1[i]=0;}

printf(" %d\n",array1[i]);

i++;

printf(" %d\n",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("%d",array1[j]);

}

for(j=0;j<=(i-1)/2;j++)

{

temp=array1[j];

array1[j]=array1[i-1-j];

array1[i-1-j]=temp;

}

len=i;

return(len);

}

1:Numb is corrupt 的原因是数组定义为array【】=0;

2:函数未返回值的时候len1=0,为什么?明明函数里面的len值已经改变了;

3:如果函数想要返回两个值应该怎么办?

E59

#include

#include

相关文档
最新文档