{int a[10],i,s;
s=0;
printf("input 10 number");
for(i=0;i<10;i++) scanf("%d",&a[i]);
for(i=0;i<10;i++) s+=a[i];
printf("%d",s);
}
2,
因為是對壹個字節操作,所以裏面的數數據只能為:00000000~11111111
可以先對這個數與01111110(十進制為126)進行與運算獲得中間六位的數據,存放到a
中,
再取這個數最高位並右移7位,到達把最高位提到最低位的目的,存放到b中
再取這個數最低位並左移7位,到達把最低位提到最高位的目的,存放到c中
最後將a,b,c三個數進行或運算,即可
針對壹個字節的操作壹定要先存放到無符號數據中。
這兒介入了位運算,我另外編了個函數輸出二進制形式的數據。程序經調試通過。
如操作數為: 10110110
則a 為 00110110
b 為 00000001
c 為 00000000
三者或運算為 00110111
程序如下:
void iden(unsigned int);
main()
{char ch;
unsigned int a,b,c,s,k;
/*scanf("%c",&ch);*/
ch='y';
k=ch;
a=k&126; /*應為126的二進制為01111110*/
b=(k&128)>>7;
c=(k&1)<<7;
s=a|b|c;
printf("before binary:");
iden(k);
printf("\n");
printf("after binary:");
iden(s);
printf("\n");
}
void iden(unsigned int c)
{int s1[8]={0},s2[8]={0};
int i=0,j=0;
unsigned int k;
k=c;
while(k!=0)
{s1[i++]=k%2;
k/=2;
}
i=7;
while(i>=0)
{s2[j++]=s1[i--];
}
for(i=0;i<8;i++) printf("%d",s2[i]);
printf("\n");
}