|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 basketmn 于 2021-11-23 14:16 编辑
- #include<stdio.h>
- int main()
- {
- int n,i,j,t;
- scanf("%d",&n);
- int a[n];
- for(i=0;i<n;i++)scanf("%d",&a[i]);
- for(i=0;i<n;i++){
- for(j=0;j<n-i;j++)
- if(a[j]>a[j+1]){
- t=a[j];
- a[j]=a[j+1];
- a[j+1]=t;
- }
- }
- for(i=0;i<5;i++)printf("%d %d ",i,a[i]);
- return 0;
- }
复制代码
为什么不论输入什么,数组第一个数都是0.
如果说缓冲区是换行的话,那为什么不是10呢?
如果,把n固定变成一个常数(就是说不要scanf),那输出结果就又正确了,实在是不懂!
数组越界访问
- #include <stdio.h>
- int main() {
- int n, i, j, t;
- scanf("%d", &n);
- int a[n];
- for(i = 0; i < n; i++)
- scanf("%d", &a[i]);
- for(i = 0; i < n; i++) {
- //for(j = 0; j < n - i; j++)
- for(j = 0; j < n - i - 1; j++)
- if(a[j] > a[j + 1]) {
- t = a[j];
- a[j] = a[j + 1];
- a[j + 1] = t;
- }
- }
- //for(i = 0; i < 5; i++)
- for(i = 0; i < n; i++)
- printf("%d %d \n", i, a[i]);
- return 0;
- }
复制代码
|
|