二进制计算:将一个整数转换为二进制,并计算出二进制1的个数。
思路:
1、利用循环,整数对2取余存入数组,然后逆序输出数组元素;
2、输出需要遍历,同时对1的个数进行统计
代码如下:
#include<stdio.h>
void main()
{
int a,b[10]={0},c=0;
scanf("%d",&a);
for(int i=0;i<10;i++)
{
b[i]=a%2; //对2取余计算出二进制数逆序放入数组b;
a=a/2;
}
for(int i=9;i>=0;i--)
{
printf("%d",b[i]); //输出二进制;
if(b[i]==1)
c++;
}
printf("\n二进制1的个数:%d\n",c); // 输出二进制1的个数;
}
结果展示:
杨辉三角前十行
思路:
1、两个循环,将二维数组进行赋1
2、行等于列时,数据为1, i>=j时打印结果为三角
3、行多于列1以上且列不等于0时,有:数据等于前一行一列的数据加上前一行本列数据(a[i][j]=a[i-1][j-1])
代码如下:
#include<stdio.h>
void main()
{
int a[10][10]={0};
for(int i=0;i<10;i++;)
{
for(int j=0;j<10;j++)
{
a[i][j]=1;
if(i-j>=1&&j!=0)
a[i][j]=a[i-1][j-1]+a[i-1][j];
if(i>=j)
printf("%-3d",a[i][j]);
}
printf("\n");
}
}
结果展示:
冒泡排序:(这里用了指针进行输入)
思路:
1、数组中数据两两进行比较,将大的放在后面
2、利用循环,多次比较,数据大的就像泡泡,一下一下的往数组后面冒
代码如下:
#include <stdio.h>
int main()
{
int m, a[5]={0};
int *p=a;
for(int i=0;i<5;i++)
{
scanf("%d",p);
p++;
}
int len = sizeof(a)/sizeof(a[0]);
for(int i=0;i<len-1;i++)
{
for(int j=0;j<len-1-i;j++)
{
if(a[j]>a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
}
for(int j=0;j<len;j++)
{
printf("%d ",a[j]);
}
printf("\n");
return 0;
}
结果展示: