2023-10-28 19:26来源:m.sf1369.com作者:宇宇
第一个和第二个不是一模一样么? 你看看是不是搞错了升差耐。。。 char*alp[]={ABC,DEF,GHi}; 这句话是定义了一个char型的指针数组,三个指针分别指向ABC,DEF,GHi;庆伍 for(i=0;i<3;i++) puts(alp[i]); 这段就是将三个指针所指向的字符串显示出来。 还有什么问题尽管提,初吵春学者对于指针和字符串方面都比较吃力的。
#include stdio.h//包含输入输出头文件,printf就在其中
main()
{
int x1=0xabc,x2=0xdef;//声明x1、x2为有符号整型变量并用十六进制赋初值
x2-=x1;//用x2的值减去x1的值并将仿枣备皮结果赋备滚拆给x2
printf(%x\n,x2);//用十六进制输出x2的值
}
结果是十六进制333,即十进制的819。
这就是:
定义两个族漏整型变量 x1 和x2 ,用十六进制的方式给予赋值 0x表示十六进制。
x1 转换成十进制 也就是2748
x2转换成十进制 也就是3567
x2 -=x1 相当于 x2 = x2 -x1= 819
printf 中的 %x表示以十六进制兆此烂形式输出 ,819转16进制扒培为333,结果为333。
int x1=0xabc,x2=oxdef
x2=x2-x1=0x333
是十六进制,所以x2=819
结果为:
ox333
十进制的话应该是819
十六进制是333
程序并不能正常运行,做了如下改动,看是否符合你的要求,重要步骤都进行了说戚核明,如下:
#include<stdio.h>
#define s 7 //s汇定义为7
void main()
{
char b[s],a[s]; //把两个数组都定义为字符型的,把数组a 做为数据存放的原始位置
int i,x,w=0; //定义变量
for(i=0;i<s;i++)
{ scanf(%c,&a[i]); //先输入原始数据
getchar(); //用来消化掉输入数据时,所按下的回车键,必须
}
for(i=0;i<s;i++)
b[i]=a[i]; //用原始数据对b进行初高饥掘始化
while(x!=3) //判断用户选择的操作类型,是否退出
{
printf(\n---------------------------------请选择----------------------------------\n\t输入1 加密\n\t输肢世入2 解密\n\t输入3退出\n);
scanf(%d,&x); //输入选项
if(x==1) //如果为1 ,进行加密操作
{
if(b[0]!=a[0]) //判断数组b中的数据是否加密,如果已经加密则让用户重新选择
{
printf(数据已加密\n);
continue;
}
for(i=0;i<s;i++)
b[i]=b[i]+5; //数组B里存放加密后的数据,原始数据加5
for(w=0;w<s;w++)
printf(%c,b[w]); //输出加密数据
printf(\n);
}
if(x==2) //如果输入为2
{
if(b[0]==a[0])//判断数组B中的数据是否加密,若未加密则重新让用户选择
{
printf(数据未加密\n);
continue;
}
for(i=0;i<s;i++)
{
b[i]=b[i]-5; //原始数据减5,存入新数组
// w++;
}
for(w=0;w<s;w++)
printf(%c,b[w]); //输出解密数组
}
}
}
#include<stdio.h>
#define s 7 //s汇定义为7
void main()
{
char b[s];
int a[s],i,x,w=0; //定义变量
for(i=0;i<s;i++)
scanf(%c,&a[i]); //先输入原始数据
printf(输入1 加密缓物, 输入2 解密);
scanf(%d,&x); //输掘运入选项
if(x==1) //如果为1
{
for(i=0;i<s;i++)
{
b[w]=a[i]+5; //新数组里存放加密后的数据,原始数据加5
w++;
}
for(w=0;w<s;w++)
printf(%c,b[w]); //输出加密数据
printf(\n);gd
}
if(x==2) //如果输入为2
{
for(i=0;i<判哪梁s;i++)
{
b[w]=a[i]-5; //原始数据减5,存入新数组
w++;
}
for(w=0;w<s;w++)
printf(%c,b[w]); //输出解密数组
}
}