Rotate number n bit!

cho em hỏi, em viết chương trình quay quay bit như thế này. chạy ok hết trừ mỗi phần in nhị phân số đã quay.
mọi người cho em hỏi cách fix với ạ :<

FIXED CODE:

 #include <stdio.h
 #include <stdlib.h
 
 #define int_size sizeof(int)   // tính số byte của số nguyên nhập
 #define sobit int_size * 8 - 1 // 8bit bằng 1 byte và trừ đi '/0'
 
 int quaytrai(int songuyen, unsigned int lanquay)
 {
     lanquay %= sobit;
 
     while(lanquay--)
         songuyen = (songuyen << 1) | (1 & (songuyen  sobit));
 
     return songuyen;
 }
 
 int coso(int *a)
 {
     int i;
     for(i=31;i=0;i--)
     {
         if((*ai)&1==1)printf("1");
         else printf("0");
     }
     return 0;
 }
 
 int main()
 {
     int songuyen;
     unsigned int lanquay;
     int b;
 
     /* Nhập số nguyên  */
     printf("Nhap so nguyen: ");
     scanf("%d", &songuyen);
 
     /* Nhập số lần muốn quay trái */
     printf("So lan muon quay trai: ");
     scanf("%u", &lanquay);
 
 
     /* In số đã quay */
     printf("%d quay trai %u lan = %d\n\n",  songuyen, lanquay, quaytrai(songuyen, lanquay));
 
     /*in dãy binary của số nguyên ban đầu */
     printf("%d co day binary la: ",songuyen);
     coso(&songuyen);
 
     /*in dãy binary của số nguyên sau khi quay */
     printf("\n%d co day binary la: ",quaytrai(songuyen,lanquay));
     b=quaytrai(songuyen,lanquay);
     coso(&b);
     return 0;
 }
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?