自敲代码(C语言)

//将一个数转换为二进制输出

#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;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值