【发布时间】:2021-03-08 06:57:14
【问题描述】:
我的输入是,比如说,
4
1100
这里的'4'是数组的位数。
我想让它扫描 arr[0]=1, arr[1]=1, arr[2]=0, arr[3]=0
但它正在扫描 arr[0]=1100 然后是随机垃圾。 如何解决这个问题?
- 随机垃圾的含义,arr[1]=-1627,arr[2]=66 和任何随机的东西。
不过我很确定,我的其余代码是正确的。
#include <stdio.h>
int main() {
int n,i,t,chk1,chk0,fin;
scanf("%1d",&n);
int arr[n];
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
}
i=0;
chk1=0;
chk0=0;
do{
if(arr[i]==0){
chk0=chk0+1;}
else{
chk1=chk1+1;}
i++;
}while(i<n);
if(chk1>chk0){
fin=chk1-chk0;
}
else if(chk1<chk0){
fin=chk0-chk1;
}
else{
fin=0;
}
printf("%d",fin);
return 0;
}
【问题讨论】:
-
我看不出在这里使用数组的意义。只需将
int计数器设置为零,然后一次读取一个字符(例如,使用getchar())。每当此字符等于1时,计数器就会增加,每次此字符等于0时,计数器就会减少。 -
为什么不将二进制数存储为二进制?而不是“十进制编码二进制”或任何这种格式。
-
@r3mainer,我刚试过,但没用。
-
#include
int main() { int n; scanf("%d",&n);整数计数,i,c;计数=0;我=1;做{ c=getchar(); if(c==1){ 计数++; } 其他{ 计数--; } 我++; }while(i
标签: arrays c binary integer scanning