C語言一個給char類型數組賦值問題。
50
補充:char a[10];
沒有賦初值。
然後通過scanf給a賦值
scanf("%s",a);
賦的值是:1111000010
首先為什麼給a賦值的時候不用加&這個符號呢?
還有賦值之後 比如我要輸出數組的值
結果是
a[0]=1111000010
a[1]=111000010
a[2]=11000010
a[3]=1000010
a[4]=000010
a[5]=00010
…………
為什麼會是這樣
如何才能讓輸出的結果
a[1]=1
a[2]=1
a[3]=1
a[4]=1
a[5]=0
……
如果才能分開呢? 用gets給數組賦值也是這樣的情況。
因為我是在做一個進制轉換的問題 輸入一串二進制的數轉換成十進制,遇上這個問題了, 解決不了啊 ,求大神幫忙。
最佳回答:
只有整形變量才用&;
字符串不需要FOR循環賦值;
用SCANF(“%C”,A)就可以了;
-
補充:
-
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[1000];
int i=0;
while(1)
{
a[i]=n%2;
n=n/2;
if(n==0){break;}
i++;
}
for(int j=i; j>=0; j--)
{
printf("%d",a[j]);
}
return 0;
}
-
補充:
-
如上是代碼,別忘了滿意歐
-
補充:
-
@You, Me.
-
追問:
-
但是輸出的問題沒有解決啊。 而且數組是定義的char類型。 用scanf輸入11111111000這樣沒有空格的數據後 , 要打印出數組裡面的數據。a[0]會把原本輸入的所有數據打印出來
a[1]比a[0]少第一個數字, 以此類推 這是為什麼。。。。怎麼才能做到a[0]=1
a[1]=1
…………
a[10]=0這樣呢?
-
回答:
-
GETS亦可,GETS(A);
-
追問:
-
用gets輸入
輸出的結果是
a[0]=1111000010
a[1]=111000010
a[2]=11000010
而不是一個一個數字的輸出啊、、、
-
回答:
-
你可以直接看一下這個代碼啊