(1) 去掉数组中重复的数字,即每个相同的数字只出现一次
#include<stdio.h> int main() { int a[20],i,j,k,n; printf("请输入你想输入的数字的总个数 n="); scanf("%d",&n); for(i=0;i<n;i++) { printf("请输入a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n"); for(i=1;i<n;i++) { for(j=0;j<i;j++) if(a[i]==a[j]) break; if(j<i) { for(k=i+1;k<n;k++) a[k-1]=a[k]; i--; n--; } } for(i=0;i<n;i++) printf("%d ",a[i]); }
(2)在长度为8的数组里输入8个数:有正数也有负数,数组中连续的一个或多个整数组
成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值
例如:数组a[8] ={1,-3,4,5,9,-7,5,-4}; 的字数组之一是 {-3,4,5}
和最大的字数组是{4,5,9} 和为 18
#include<stdio.h> int main() { int a[8]= {1,-3,4,5,9,-7,5,-4},b[8]={0}; int i,j,max=0,sum=0,sum1,row1 ,row2,k; for(i =0;i<=7;i++) { for(j=i;j<7;j++) { sum=sum+a[j]; if(max<sum) { max=sum; row1=i,row2=j; } printf("sum=%d\t",sum); } sum = 0; printf("\n"); } printf("和最大max=%d \n子数组为",max); for(k=row1;k<=row2;k++) printf("a[%d]=%d\t",k,a[k]); return 0; }