一、今天主要对一些知识进行了回顾和深入了解。
1、int占4个字节,对于int型它能写入的整数不能超过10个不然编译就会出错。 在编写通讯录一类要超过10个数个的程序时,可以使用long long 。long long 占8个字节,而long可能4个字节,可能8个字节。
2、在写函数时,一定要注意形参列表的检测。如果没有这一步,一旦有用户输入一个完全错误的数,可能会导致系统崩溃。
3、重新回顾了一下指针和函数,和一些变量;
全局变量:在函数外定义的变量,变量可以使用的有效范围,定义的位置开始到文件结束
局部变量:在 {} 中的变量,都是局部变量,有效范围,值当前的 {} 有效
变量使用的时候有就近原则,局部变量会屏蔽全局变量
#include <stdio.h>
void my_swap(int a, int b) //形参是整型的情况
{
int tmp = a;
a = b;
b = tmp;
}
void my_swap1(int *pa, int *pb) //形参是指针的情况
{
int tmp = *pa;
*pa = *pb;
*pb = tmp;
}
int main()
{
int a = 10;
int b = 20;
my_swap(a, b); //结果a=10,b=20;
printf ("a = %d, b = %d\n", a, b);
my_swap1(&a, &b); //结果a=20,b=10;
printf ("a = %d, b = %d\n", a, b);
return 0;
}
想要对main函数中变量进行操作,要使用指针指向这个变量的地址才能操作这个空间
二、找到一组数中第二大的数
/*-----------------------------找出第2大的数------------------------------*/
#include <stdio.h>
int max2(int a[],int len)
{
if(NULL == a || len < 0) //形参检查
{
return;
}
//功能实现
int i;
int max1 = a[0];
int max2 = a[0];
for(i=0;i<len;i++)
{
if(max1 < a[i])
{
if(max1 > max2)
{
max2 = max1;
}
max1 = a[i];
}
else if(max1 > a[i])
{
if(a[i] > max2)
{
max2 = a[i];
}
}
}
return max2; //返回参数
}
int main()
{
int a[]={12,12,54,65,54,65,54,32,23};
int len=sizeof(a)/sizeof(a[0]);
printf("%d\n",max2(a,len));
return 0;
}
三、对一个8位或8位以下的整数进行加密,解密。加密要求如下
首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
最后将第一位和最后一位数字交换
#include <stdio.h>
/*----------------------------------将整数换成数组---------------------------------------*/
int Zhuan(int num,int *pa) //逆序
{
if(0 == num || NULL == pa) //判断形参
{
return -1;
}
int len = 0;
int i=0;
while(num) //整数——数组(逆序)
{
pa[i] = num%10;
num /= 10;
++len;
++i;
}
return len;
}
/*----------------------------------加密----------------------------------------*/
int JiaMi(int *pa,int len) //进行加密处理
{
if(NULL == pa || len < 0) //判断形参
{
return -1;
}
int i;
for(i=0;i<len;i++) //每位数字都加上5,再用和除以10的余数代替该数字
{
pa[i]=(pa[i]+5)%10;
}
printf("\n");
int temp = pa[len-1]; //最高位和最低位交换
pa[len-1] = pa[0];
pa[0] = temp;
int s=pa[0];
for(i=1;i<len;i++)
{
s=s*10+pa[i]; //将数组转换成整型
}
return s;
}
/*----------------------------------解密----------------------------------------*/
int JieMi(int s) //解密处理
{
if(s < 0)
{
return -1;
}
int pa[8]={0};
int i;
int len=Zhuan(s,pa); // 整数转成数组
for(i=0;i<len;i++) //解密步骤
{
if(pa[i] > 5)
{
pa[i] = pa[i]-5;
}
else
{
pa[i] = pa[i]+5;
}
}
int temp = pa[len-1]; //更换首尾数
pa[len-1] = pa[0];
pa[0] = temp;
int a=pa[0];
for(i=1;i<len;i++) //数组转成整型
{
//s=s+pow(10,len-1-i)*pa[i];
a=a*10+pa[i];
}
return a; //返回整数s
}
int main()
{
int number=7554621;
int a[8]={0};
int len=Zhuan(number,a);
int s=JiaMi(a,len);
printf("加密后的数:%d\n",s);
printf("解码后的数:%d\n",JieMi(s));
return 0;
}