一维数组
1. 简单的进制转换程序,将十进制转为2进制,8进制,16进制
#include <stdlib.h>
#include <stdio.h>
static void base_convert()
{
int num,base;
int n[128];
int i= 0;
printf("请输入带转换的整形数\n");
scanf("%d",&num);
printf("输入要转换进制\n");
scanf("%d",&base);
#if 0
do
{
n[i] = num%base;
num = num/base;
i++;
}
while(num!=0);
#endif
while(num!=0)
{
n[i] = num%base;
num= num/base;
i++;
}
for(i--;i >=0;i--)
{
if(n[i]>=10)
printf("%c",n[i]-10 +'A');
else
printf("%d",n[i]);
}
printf("\n");
}
int main()
{
base_convert();
exit(0);
}
删除法求质数
求1000以内所有的质数
#include <stdlib.h>
#include <stdio.h>
/*
求1000内的质数
0,1数组不是质数不存储, 从2开始
-1代表不是质数
*/
static void primer()
{
char primer[1001]={0};
int i,j;
for( i=2;i<1001;i++)
{
if(primer[i]==0)
{
//删除i整倍数
for(j=i*2;j<1001;j+=i)
{
primer[j] = -1;
}
}
}
for(i = 2;i<1001;i++)
{
if(primer[i] ==0)
printf("%d is 质数\n",i);
}
}
int main()
{
primer();
exit(0);
}
二维数组
1.行列互换
#include <stdlib.h>
#include <stdio.h>
/*
二维数组
连续的先存放行,后存放列
1 行列互换
2 求最大值及其所在位置
3 求各行各列合
4. 求矩阵
*/
#define ROW 2
#define COL 3
void printarr1(int num[][2])
{
int i,j;
for(i=0;i<COL;i++)
{
for(j=0;j<ROW;j++)
{
printf("%d ",num[i][j]);
}
printf("\n");
}
}
void printarr(int num[][3])
{
int i,j;
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
printf("%d ",num[i][j]);
}
printf("\n");
}
}
static void change()
{
int num[ROW][COL]={1,2,3,4,5,6},num1[COL][ROW];
int i,j;
printarr(num);
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
num1[j][i]=num[i][j];
}
printf("\n");
}
printarr1(num1);
}
int main()
{
change();
exit(0);
}
#include <stdlib.h>
#include <stdio.h>
/*
二维数组
连续的先存放行,后存放列
1 行列互换
2 求最大值及其所在位置
3 求各行各列合
4. 求矩阵
*/
#define ROW 2
#define COL 3
void printarr(int *p)
{
for(int i=0;i<ROW*COL;i++)
{
printf("%d ",*(p+i));
}
printf("\n");
}
static void change()
{
int num[ROW][COL]={1,2,3,4,5,6},num1[COL][ROW];
int i,j;
printarr(num);
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
num1[j][i]=num[i][j];
}
printf("\n");
}
printarr(num1);
}
int main()
{
change();
exit(0);
}
2. 求最大值,及其所在的位置
#include <stdlib.h>
#include <stdio.h>
/*
二维数组
连续的先存放行,后存放列
1 行列互换
2 求最大值及其所在位置
3 求各行各列合
4. 求矩阵
*/
#define ROW 2
#define COL 3
static void findmax()
{
int num[ROW][COL]={1,43,89,4,5,6};
int max,row,col;
int i,j;
max = num[0][0];
row = 0;
col = 0;
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
if(max <num[i][j])
{
max =num[i][j];
row = i;
col = j;
}
}
}
printf("max = %d row = %d col =%d \n",max,row,col);
}
int main()
{
findmax();
exit(0);
}