初学编程——编程练习

来源:互联网 发布:健身书籍知乎 编辑:程序博客网 时间:2024/06/06 11:04

      在学习了编程之后,将自己写的代码和老师的相比,感觉自己太菜了。我将编程题做了一些总结,将自己的代码做了改进。

1. 给定两个整形变量的值,将两个值的内容进行交换。

方法一、

#include<stdio.h>
int main()
{
int num1,num2,tmp=0;
num1=10;
num2=20;
tmp=num1;num1=num2;num2=tmp;
printf("num1=%d\n",num1);
printf("num2=%d\n",num2);
return 0;
}

方法二:
#include<stdio.h>
int main()
{
int num1=10;
int num2=20;
num1=num1^num2;
num2=num1^num2;
num1=num1^num2;
printf("num1=%d\nnum2=%d\n",num1,num2);
return 0;
}
方法三:
#include<stdio.h>
int main()
{
int a=10,b=20;
void  swap(int *x,int *y);
swap(&a,&b);
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
void swap(int *x,int *y)
{
int temp=0;
temp=*x;*x=*y;*y=temp;
}

2. 求10 个整数中最大值。

#include<stdio.h>
int main()
{
int i,arr[10]={0},m=0;
printf("请输入十个数字:\n");
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
m=arr[0];
for(i=1;i<10;i++)
{
if(arr[i]>m)
m=arr[i];
}
printf("最大数是%d\n",m);
return 0;
}
3. 写一个函数返回参数二进制中 1 的个数
比如: 15       0000 1111       4 个 1
程序原型:
int  count_one_bits(unsigned int value)
{
       // 返回 1的位数
}

#include<stdio.h>
int count_one_bits(int value)
{
int i=0;
while(value!=0)
{
i++;
value=value&(value-1);
}
return i;
}
int main()
{
int num,ret=0;
int count_one_bits(int value);
printf("请输入数字:\n");
scanf("%d",&num);
ret=count_one_bits(num);
printf("%d的二进制中1的个数是%d\n",num,ret);
return 0;
}

4.将数组A中的内容和数组B中的内容进行交换。(数组一样大)


#include<stdio.h>
int main()
{
int a[4]={1,2,3,4},b[5]={5,6,7,8,9};
int temp=0,i=0;
for(i=0;i<4;i++)
{
temp=a[i];a[i]=b[i];b[i]=temp;
}
for(i=0;i<4;i++)
{
printf("a[%d]=%d ",i,a[i]);
}
printf("\n");
for(i=0;i<4;i++)
{
printf("b[%d]=%d ",i,b[i]);
}
printf("\n");
return 0;
}

5.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

#include<stdio.h>
int main()
{
int num,i;
printf("请输入数字:\n");
   scanf("%d",&num);
   for(i=30;i>=0;i-=2)
   {
  printf("%d ",(num>>i)&1);
   }
   printf("\n");
   for(i=31;i>=1;i-=2)
   {
  printf("%d ",(num>>i)&1);
   }
   printf("\n");
   return 0;
}


6.将三个数按从大到小输出。


#include<stdio.h>
int main()
{
int a,b,c;
void  swap(int *x,int *y);
printf("请输入三个数字:\n");
    scanf("%d%d%d",&a,&b,&c);
if(a<b)swap(&a,&b);

if(a<c)swap(&a,&c);

if(b<c)swap(&b,&c);
printf("将三个数按从大到小排列 :\n");
printf("%d %d %d\n",a,b,c);
return 0;
}

void swap(int *x,int *y)
{
        int temp=0;
temp=*x;*x=*y;*y=temp;
}


7.求两个数的最大公约数和最大公倍数。

#include<stdio.h>
int main()
{
int a,b,c,n=0,i;
printf("请输入两个数字:\n");
    scanf("%d%d",&a,&b);
n=a;
if(n>b)n=b;

for(i=1;i<=n;i++)
{
if((a%i==0)&&(b%i==0))c=i;

}

printf("%d与%d的最大公约数是:%d\n",a,b,c);
printf("%d与%d的最小公倍数是:%d\n",a,b,(a*b)/c);
    return 0;
}




1 0
原创粉丝点击