【第二次作业】

来源:互联网 发布:淘宝电商是什么 编辑:程序博客网 时间:2024/05/17 22:08

第一题:

P1-1:递归写法,效率低

#include <stdio.h>/*1. 写一个函数返回参数值为1的个数比如:15       0000 1111       4个1程序原型:int  count_one_bits(unsigned int value){//返回1的位数}*/int fuc(int x){if(x!=0){if(x%2==1){return 1+fuc(x/2);}else {return fuc(x/2);}}return 0;}void mainp1(){int num;num=fuc(234);printf("%d\n",num);}

P1-2:while写法,一直除到n为0

#include <stdio.h>int fuc(int x){int count =0;//x=x&(x-1)while(x!=0){if(x%2==1)count++;x/=2;}return count;}void main(){printf("%d\n",fuc(100));}

P1-3:与运算,有多少个1就运行几次。效率最高

#include <stdio.h>int fuc(int x){int count=0;while(x!=0){count++;x=x&(x-1);}return count;}void main(){printf("%d\n",fuc(521));}


第二题:

#include <stdio.h>#include <math.h>//2. 求100~200之间的素数int fuc(int x) //是素数就return1{int count=2;if (x%2==0)return 0;else if(x%2!=0){while(count<=sqrt(x)){if(x%count==0)return 0;count++;}}return 1;}void main(){int num=100;for(num;num<=200;num++)if(fuc(num)==1)printf("%d ",num);printf("\n");}

第三题:

#include <stdio.h>//3. 输出乘法口诀表void main(){int i,l;for(i=1;i<=9;i++){for (l=1;l<=i;l++)printf("%d*%d=%d ",i,l,i*l);printf("\n");}}

第四题:

#include <stdio.h>////4.不允许创建临时变量,交换两个数的内容 void main(){int a=10,b=20;a=a+b;b=a-b;a=a-b;printf("%d %d\n",a,b);}

第五题:

#include <stdio.h>//5. 求10个数中最大值。void main(){int ar[]={23,13,56,2,89,100,54,6,3,540};int i=0;int n=(sizeof(ar)/sizeof(*ar));int max=ar[0];for(i;i<n;i++){if(ar[i]>max)max=ar[i];}printf("MAX:%d",max);}



0 0
原创粉丝点击