//将一个数转换为二进制输出
#include<stdio.h>
int main()
{ unsigned a;int i=31;char b[33]={0};
b[32]=0;
scanf("%d",&a);
while(a)
{b[i--]=(a&0x1)+'0';
a=a>>1;
}
for(i++;i<32;i++)
printf("%c",b[i]);
return 0;
}
//将一个二进制转换成十进制输出
#include<stdio.h>
int fun(char s[])
{char *p=s;int y=0;
while(*p)
{ y=(y<<1)+(*p-48);p++;}
return y;
}
int main()
{ char s[32]="1001";int a;
a=fun(s);
printf("%d",a);
return 0;
}
//一个数的二进制有多少个1
#include<stdio.h>
int main()
{ int a,c=0;
scanf("%d",&a);
while(a)
{if(a&0x01)c++;
a=a>>1;
}
printf("%d",c);
printf("Hello world!");
return 0;
}
//按二进制循环左移m位
#include<stdio.h>
int main()
{ int a,m,p,q;
scanf("%d,%d",&a,&m);
p=(a&(0xffffffff>>(32-m)))<<m;
q=(a>>m)|p;
q=q|p;
printf("%d",q);
return 0;
}
//无损加法。以字符串的形式输入两个
//整型数的字符串,通过程序实现两个
//整数相加,不考虑输入数据的正负。
//例如:输入12345和567,则输出12912。
#include <stdio.h>
#include <string.h>
void addfun(char a[],char b[],char c[])
{
if(*a==0){strcpy(c,b);return;}
if(*b==0){strcpy(c,a);return;}
char *p,*q,t,*k;
p=a;q=b;k=c;t=0;
while(*p)p++;p--;
while(*q)q++;q--;
while( p>=a&&q>=b)
{ t=t+*p-48+*q-48;
*k=t%10+48;
t/=10;k++;
p--,q--;
}
while(p>=a){ t=t+*p-48;*k=t%10+48;
t/=10;k++;p--; }
while(q>=b){ t=t+*q-48;*k=t%10+48;
t/=10;k++;q--; }
if(t)*k++=t%10+48;
*k=0;
for(q=c,k--;q<k;q++,k--)
{ t=*q;*q=*k;*k=t; }
return;
}
int main()
{
char a[1000],
b[1000],c[1000]="";
gets(a);
gets(b);
addfun(a,b,c);
puts(c);
}
//建立一个带头结点的单向链表,
// 并用随机函数为各结点数据域赋值。
//函数fun的作用是求出单向链表结点
//(不包括头结点)数据域中的最大值,
//并且作为函数值返回。
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{ int data;
struct aa *next;
} NODE;
fun(NODE *h)
{ int max=h->next->data;
NODE *p;
p=h->next;
while(p)
{ if(p->data>max->data)
max=p->data;
p=p->next ;
}
return max;
}
outresult(int s)
{ printf("\nThe max in link:%d\n",s);
}
NODE *creatlink(int n, int m)
{ NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(sizeof(NODE));
p->next=NULL;
h->data=9999;
for(i=1;i<=n;i++)
{ s=(NODE *)malloc(sizeof(NODE));
s->data=rand()%m;
s->next=p->next;
p->next=s;
p=s;
}
p->next=NULL;
return h;
}
outlink(NODE *h)
{ NODE *p;
p=h->next;
printf("\nTHE LIST :\n\n HEAD ");
while(p)
{ printf("->%d ",p->data); p=p->next; }
printf("\n");
}
main()
{ NODE *head; int m;
head=creatlink(12,100);
outlink(head);
m=fun(head);
printf("\nTHE RESULT :\n");
outresult(m);
}
//84、对一个字符串中的数值字符求
//和例如:”1a2b3c45d”=15
#include<stdio.h>
int sz(char a[])
{ int sum=0;
char *p;
for(p=a;*p;p++)
{if(*p>='0'&&*p<='9')sum+=(*p-48);
}
return sum;
}
int main()
{ char a[80];
gets(a);
printf("%d",sz(a));
printf("Hello world!");
return 0;
}