一些C语言代码小技巧

删除数组中的某个数值的方法

覆盖前者并改写整个数组大小n

覆盖前者的方式 for(i++;i<n;i++) { printf("%d ",a[i]); a[i-1]=a[i]; } n=n-1;

完整题目及代码

#include<stdio.h> main() { int n,i,m,j; scanf("%d",&n); int a[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&m); for(j=0;;j++) { for(i=0;i<n;i++) { if(a[i]!=m) printf("%d ",a[i]); else { for(i++;i<n;i++) //****************** { printf("%d ",a[i]); a[i-1]=a[i]; } n=n-1; //***************** printf("\n"); } } for(i=0;i<n;i++) //如果还有重复就继续 if(a[i]==m) break; if(i==n) //如果遍历后发现没有重复了,就结束 break; } }

两组数组合并排序

#include<stdio.h> main() { int m,n,i,j; int a[1000],b[1000]; scanf("%d",&m); for(i=0;i<m;i++) scanf("%d",&a[i]); scanf("%d",&n); for(j=0;j<n;j++) scanf("%d",&b[j]); for(i=0,j=0;i<m;i++) //*******排序******** { for(;j<n;j++) { if(a[i]<b[j]) { printf("%d ",a[i]); break;} if(a[i]>b[j]) printf("%d ",b[j]); if(a[i]==b[j]) { printf("%d ",a[i]),j++; break;} } if(j==n) break; } if(i<m&&j==n) //如果某一组末尾过大无法排入,直接输出 { for(;i<m-1;i++) printf("%d ",a[i]); printf("%d",a[i]);} if(i==m&&j<n) { for(;j<n-1;j++) printf("%d ",b[j]); printf("%d",b[j]);} }

选择排序法

for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(f[i] > f[j]) { int k=f[j]; f[j]=f[i]; f[i]=k; } } }