您的位置:首页 > 编程语言 > C语言/C++

C语言小例子

2015-07-17 22:30 381 查看
一、求一个整数的补码,用一个32位的一维数组保存相应位。

示例代码:

 

#include<stdio.h>

int main()

{

int i,source;

short bits[33] = {0};

printf("input source :\n");

scanf("%d",&source);

if(source < 0)

{

bits[0] = 1;

source = - source;

source = ~source + 1;

}

for(i=0; i < 31; i++)

{

bits[31-i] = (source >> i) & 0x1;

}

printf("%d buma is :",source);

for(i=0; i < 32; i++)

{

printf("%d",bits[i]);

}

printf("\n");

return 0;

}


 

二、分别使用访问指针和访问数组的方式计算两个3x3矩阵相乘。

示例代码:

a.访问数组

#include<stdio.h>

int main()
{
int a[3][3];
int b[3][3];
int c[3][3] = {0};
int i,j,k;

printf("input matrix a :\n");
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
scanf("%d",&a[i][j]);

printf("input matrix b :\n");
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
scanf("%d",&b[i][j]);

for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
for(k=0; k < 3; k++)
c[i][j] += a[i][k] * b[k][j];

printf("matrix a x b :\n");
for(i=0; i < 3; i++)
{
for(j=0; j < 3; j++)
printf("%3d ",c[i][j]);
printf("\n");
}

return 0;
}


b.访问指针(1)

#include<stdio.h>

int main()
{
int a[3][3];
int b[3][3];
int c[3][3] = {0};
int i,j,k;

printf("input matrix a :\n");
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
scanf("%d",&a[i][j]);

printf("input matrix b :\n");
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
scanf("%d",&b[i][j]);

for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
for(k=0; k < 3; k++)
*(*(c + i) + j) += (*(*(a + i) + k)) * (*(*(b + k) + j));

printf("matrix a x b :\n");
for(i=0; i < 3; i++)
{
for(j=0; j < 3; j++)
printf("%3d ",c[i][j]);
printf("\n");
}

return 0;
}


b.访问指针(2)

#include<stdio.h>

int main()
{
int a[3][3];
int b[3][3];
int c[3][3] = {0};
int i,j,k;

int *pa = a;  //这里会报警告,因为a其实指向的是一个一维数组,而pa指向的是int,pb,pc同理。
int *pb = b;
int *pc = c;

printf("input matrix a :\n");
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
scanf("%d",&a[i][j]);

printf("input matrix b :\n");
for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
scanf("%d",&b[i][j]);

for(i=0; i < 3; i++)
for(j=0; j < 3; j++)
for(k=0; k < 3; k++)
*(pc + 3*i + j) += (*(pa + 3*i + k)) * (*(pb + 3*k + j));

printf("matrix a x b :\n");
for(i=0; i < 3; i++)
{
for(j=0; j < 3; j++)
printf("%3d ",c[i][j]);
printf("\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: