以下是我的c程序,它对数组执行各种操作。当我删除任何元素时,delete_ele函数会正确删除并显示数组,但遍历函数会显示一些垃圾值。例如。如果最初我有4个元素并删除第一个元素,delete_ele函数将显示剩余的3个元素,但遍历函数显示4个元素(其余3个元素以及最后的垃圾值)。请告诉我错误。c中的菜单驱动程序在数组上执行各种操作
#include<stdio.h>
#include<conio.h>
void insert_ele(int i,int ar[],int len){
int ele, loc;
printf("\nEnter element to be inserted : ");
scanf("%d",&ele);
printf("\nEnter location : ");
scanf("%d",&loc);
if(i==19){
printf("\nOverflow");
}
else{
while(i>=loc){
ar[i+1]=ar[i];
i--;
}
ar[loc]=ele;
len++;
printf("\nNew Array : ");
for(i=0;i<len;i++){
printf("\t%d",ar[i]);
}
}
}
void delete_ele(int i,int ar[],int len){
int loc;
printf("\nEnter location of element to be deleted : ");
scanf("%d",&loc);
if(len==0){
printf("\nUnderflow");
}
else{
for(i=loc;i<len;i++){
ar[i]=ar[i+1];
}
len--;
printf("\nNew Array : ");
for(i=0;i<len;i++){
printf("\t%d",ar[i]);
}
}
}
void find_ele(int i,int ar[],int len){
int ele, count=0;
printf("\nEnter element to be searched : ");
scanf("%d",&ele);
for(i=0;i<len;i++){
if(ar[i]==ele){
count++;
}
}
if(count == 0){
printf("\nElement does not exist");
}
else{
printf("\nElement found %d times",count);
}
}
void traverse(int i, int ar[], int len){
printf("\nTotal number of Elements are : %d",len);
printf("\nElements are : ");
for(i=0; i<len; i++){
printf("\t%d",ar[i]);
}
}
void main(){
int ar[20], i=0, len=0, ch;
char choice;
clrscr();
printf("\nEnter number of elements you want to insert : ");
scanf("%d",&len);
for(i=0; i<len; i++){
printf("Enter element %d : ",i);
scanf("%d",&ar[i]);
}
i--;
label:
printf("\nPress 1 to insert, 2 to delete, 3 to find any element");
printf("\n or 4 to traverse the array : ");
scanf("%d",&ch);
switch(ch){
case 1:insert_ele(i, ar, len);
break;
case 2:delete_ele(i, ar, len);
break;
case 3:find_ele(i, ar, len);
break;
case 4:traverse(i, ar, len);
break;
default:printf("\nInvalid Option");
break;
}
printf("\nPress y to continue or any other key to quit : ");
scanf("%s",&choice);
if(choice=='y' || choice=='Y'){
goto label;
}
getch();
}
您是否尝试过通过代码在调试器步进和检查变量的状态?这应该会直接导致你的错误。 –
[c中的菜单驱动程序在链表上执行各种操作]的可能重复(http://stackoverflow.com/questions/21364493/menu-driven-program-in-c-to-perform-various-operations-关联列表) –
@PaulR是否重复我不认为,尽管找到但标记重复的简单错误无效。 –