当前位置: 首页 > news >正文

程序设计实践——第二章

一、字符加密

编写程序,将“China”译成密码。密码规律:用原来的字母后面第4个字母代替原来的字母,例如:字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”并输出。

程序分析:

  1. 字符型数据在C语言当中实际上是以ASCII码的形式存储在内存单元中,例如‘a’的ASCII码值为97,字符b的ASCII码值为98。ASCII买包
  2. 由上图可知,字符’a’+1的值与字符’b‘的ASCII的码值相同。
    示例代码
#include "stdio.h"
int main()
{char c='a',c2='b';c=c+1;printf("c=%c,c2=%c\n",c,c2);return 0;
}

输出结果
在这里插入图片描述
3.由此可知,若需要将密码翻译为字母后4位,只需要在原来的基础上把ASCII的码值加4即可。
示例代码

#include "stdio.h"
int main()
{char c1='C',c2='h',c3='i',c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;
}

在这里插入图片描述
知识扩展
根据ASCII码表可知,大写字母和小写字母之间的码值相差32,即可得:
字符大写转小写 +32
字符小写转大写 -32

  • 下面是一个字母大小写字符转换的程序案例。
#include "stdio.h"
int main()
{char c1='*';scanf("%c",&c1);if(c1>='A' && c1<='Z')//大写字母 {c1=c1+32;	//由于在ASCII码表中,大小写字符的差值为32,所以+32转换成小写 }else if(c1>='a' && c1<='z')//小写字母 {c1=c1-32;	//转换成大写 }printf("%c",c1);return 0; 
}

输出结果
在这里插入图片描述
补充:

  1. (逻辑与)&&:
    在两个条件同时达成时,条件为真。
    例如:if( a>=3 && a<=8 )
    则当a的值为 3~8之间时,if语句里面的条件才成立,否则都不成立

二、数值拆分

编写程序,将一个三位数整数256的个位、十位和百位分离后输出,输出结果为a=2,b=5,c=6。
程序分析

  1. 运算符
    ‘/’:取整运算符
    ‘%’取余运算符
    任何大于10的数都不可以被10整除,所以任何数对10取余都可以得到这个数的个位。
    例:
#include "stdio.h"
int main()
{int a;scanf("%d",&a);printf("%d",a%10) ;return 0;
}

输出结果
在这里插入图片描述
2. 我们现在已经可以获取个位的值了,那么怎么获得一个数的十位呢?我们只需要把这个数/10%10就可以得到这个数的10位,它的原理是通过取整10抹掉这个数的最后一位,然后十位就变成了个位,我们再进行取余就可以获得十位上的数值了!

#include "stdio.h"
int main()
{int a;scanf("%d",&a);printf("%d",a/10%10) ;return 0;
}

输出结果
在这里插入图片描述
3.依次类推,下面是获取256每一位值的程序代码。

#include "stdio.h"
int main()
{int x=256;int a=x/100%10;int b=x/10%10;int c=x%10;printf("a=%d\n",a) ;printf("b=%d\n",b) ;printf("c=%d",c) ;return 0;
}

输出结果
在这里插入图片描述

三、浮点数运算

已知x=3.6,y=4.2。编写程序,求表达式x+y及(int)x%(int)(x+y)的值。

程序分析:

  1. 取余运算
    取余运算只能进行整数之间的运算,所以我们在进行小数之间的取余运算时,需要先把小数类型转换为整数类型,再进行运算。
  2. 类型转换
  • 隐式类型转换(自动转换)

在有多种数据类型混合计算的时候,若未人为控制类型,系统会自动进行类型转换
转换的规则是:存储长度较短的转换成存储长度较长的,且不丢失数据
char—>short—>int—>unsigned int(—>long—>unsigned long)—>double

float-------

  • 强制类型转换

隐式类型转换或赋值转换有时不会得到我们预期的结果,这时我们可以使用强制类型转换来实现我们想要的类型转换结果。
强制类型转换:人为地将某类型转换为另一类型
强制类型转换符:()括号

3.下面是强制类型转换的示例代码

#include "stdio.h"
int main()
{float x=3.6,y=4.2;									int c;c=(int)x%(int)(x+y); //通过(int)将float类型强制转换为整数,然后进行取余运算。 printf("x+y=%f, (int)x%%(int)(x+y)=%d \n",x+y,c);return 0;
}

运行结果
在这里插入图片描述

补充:

  • 运算优先级

C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。
运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

此处例程先进行强制类型转换,然后再进行取余运算。


http://www.taodudu.cc/news/show-1944671.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 【C++程序设计实践】实验十一
  • 程序设计综合实践
  • C程序设计实践——实验指导
  • nvivo三天写论文!社会网络分析实战
  • 语义分析
  • NLPIR系统的中文语义分析模式介绍
  • 语义结构:依存分析
  • 《图像语义分析》学习笔记 (一)
  • 计算机语言语法语义,程序设计语言语义
  • 自然语言处理 4.语义分析
  • 自然语言处理(NLP)语义分析:“词汇级”语义分析【词义消歧、词义表示和学习】、“句子级”语义分析【浅层语义分析(语义角色标注)、深层语义分析】
  • 语义分析的一些方法
  • 语义分析的方法简述之文本基本处理
  • 《图像语义分析》学习笔记 (二)
  • 语义分析的一些方法(一)
  • python 英文语义分析_python语意分析
  • 潜在语义分析(TF-IDF、LSA)
  • NLPIR的语义分析系统
  • 云WAF之语义分析引擎
  • 语义网络与知识图谱
  • 【NLP】语义分析
  • 四、语义分析
  • LTP 语义依存分析
  • python语义网络图_知识图谱之语义网络篇
  • Python实现共现语义网络
  • 基于Python实现语义分析
  • python语义网络图_语义网络 (Knowledge Graph)知识图谱
  • 浅谈语义网络
  • c++ pdflib 中文乱码解决思路
  • PDFlib+PDI图像和超文本元素提供了许多有用的功能