当前位置:编程学习 > C/C++ >>

C语言用数组和函数分开正负数.

程序人家帮编好了,可是'\0'没学过,不懂,能帮忙改一下吗?

#include<stdio.h>
void split(int*,int*,int*);
int main()
{
 int a[20],positive[20],negative[20];
 for(int i=0;i<=19;i++)
 {
  printf("Enter the number:\n");
  scanf("%d",&a[i]);
 }
 split(a,positive,negative);
 printf("positive:\n");
 for(int i=0;positive[i]!='\0';i++)
 {
  printf("%d\t",positive[i]);
 }
 printf("\nnegative:\n");
 for(int i=0;negative[i]!='\0';i++){
  printf("%d\t",negative[i]);
 }
}
void split(int *a,int *positive,int *negative)
{
   int i=0,j=0,k=0;
 for(;i<=19;i++)
 {
 if(a[i]>=0)
 positive[j++]=a[i];
 else
 negative[k++]=a[i];
 }
 positive[j]='\0';
 negative[k]='\0';
}

追问:能帮我改下程序吗?把'\0'去掉,我完全看不懂
答案:这个程序有bug
他的:

 positive[j]='\0';
 negative[k]='\0';
是为了在输出时判断结束用的,相当于自己弄了一个结束条件
但是如果你a数组里面的 20个全是整数或者全是负数时, positive[j]='\0';negative[k]='\0';其中一句的访问会越界;
其实完全没有必要 用这两句,你循环语句的j和k分别就记录着整数和负数的个数了,即 positive的元素个数为j,negative元素个数为k
输出时for(i=0;i<j;i++)和for(i=0;i<k;i++)
'\0':字符串在数组中的结束标志

上一个:全部2000分 求c语言高手 帮我 c语言实训
下一个:有了C语言基础学什么好

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,