题意描述:
编写程序,输入n(1<=n<=10),输入n个整数构成一个数组,输入整数x,在这个数组中查找x是否存在,
如果存在,删除x,后面元素依次向前添补空位,并输出删除元素后的数组。如果不存在,输出“Not Found”。
输入第一行是一个正整数n(1<=n<=10);
第二行是n个整数,构成一个数组;
第三行是一个整数x,表示待查找元素。
输出删除元素后的数组,每个元素占4列,右对齐。如果不存在,输出“Not Found”。如果数组中有多个x,
只删除下标最小的那个。
解题思路:
分别编写三个函数,一个查找是否含有相同元素,如果有返回该下标,反之返回-1。
一个函数删除指定元素,一个函数输出处理后的新数组。
代码实现:
1 #include<stdio.h> 2 int find(int a[], int n, int x) 3 { 4 //int main() 5 //{ 6 // int a[20],n,x; 7 int i,find=0; 8 // scanf("%d",&n); 9 // for(i=0;i<n;i++) 10 // scanf("%d",&a[i]); 11 // 12 // scanf("%d",&x); 13 for(i=0;i<n;i++) 14 { 15 if(a[i]==x) 16 { 17 find=1; 18 // printf("%d\n",i); 19 return i; 20 break; 21 } 22 } 23 if(find==0) 24 // printf("-1"); 25 return -1; 26 } 27 void del(int a[],int n,int i) 28 { 29 int t; 30 for(t=i;t<=n-1;t++) 31 { 32 a[t]=a[t+1]; 33 } 34 } 35 void PrintArr(int a[], int n) 36 { 37 int i; 38 for(i=0;i<n-1;i++) 39 printf("%4d",a[i]); 40 } 41 int main() 42 { 43 int n,x,a[20],i; 44 scanf("%d",&n); 45 for(i=0;i<n;i++) 46 scanf("%d",&a[i]); 47 scanf("%d",&x); 48 find( a, n, x); 49 50 if(find( a, n, x)==-1) 51 printf("Not Found") ; 52 else 53 { 54 i=find( a, n, x); 55 del( a, n, i); 56 PrintArr( a, n); 57 } 58 return 0; 59 }
易错分析:
1.if语句中他直接管理与其紧挨的一句,如果有多句要用括号括起来。
2.连用函数时要注意上一个函数的返回值要重新赋值给下一个函数,例如题中的i就要重新赋值,不然无法计算。
原文地址:https://www.cnblogs.com/yuanqingwen/p/10387668.html
时间: 2024-11-03 14:10:25