題目是輸入一個二進制數,輸出它的16位二進制數。這個代碼在DEV上完美運行,但是在學校交作業的平臺上就報錯 無效記憶體參考。求大佬指點哪里有問題。
#include<stdio.h>
int main()
{int n,i,j,k;
static int a[16];
scanf("%d",&n);
for(i=1;i<=16;i++)
{a[i]=n%2;k=n/2;n=k;}
for(j=16;j>0;j--)
printf("%d",a[j]);
if(j==1) printf("\n");
}
uj5u.com熱心網友回復:
什么意思?輸入一個二進制數,輸出一個二進制數????
uj5u.com熱心網友回復:
你先弄清楚陣列a[16]的下標是從什么開始到什么結束吧,應該從0到15,但是你用了16,陣列越界了uj5u.com熱心網友回復:
并沒有越界,他的回圈是從1到16。
uj5u.com熱心網友回復:
for(i=1;i<=16;i++)i 最大值 16
a[16] 就越界了
uj5u.com熱心網友回復:
陣列越界~資料越界是未定義行為,所以可能運行沒問題,也可能出錯~uj5u.com熱心網友回復:
回圈次數沒錯,但陣列下標錯,陣列下標是從0開始算的,所以是0到15
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90283.html
標籤:C語言
