说明:
在学习UI高级知识之前,将利用最近十来天的时间回顾一下C语言,主要按照《C程序设计(谭浩强版)》来回顾。
整理一些知识点(不是细节,知识个人觉得较重要或易忘的)以及挑一些课后题目或经典习题编写代码练习。
第3章 最简单的C程序设计——顺序程序设计
1、转义字符:将“\”后面的字符转变成另外的含义
转义字符 | 字符值 |
---|---|
\’; \”; \? | 一个单撇号(’);双撇号(“);问号(?) |
\\ | 一个反斜线,若输出两个反斜线那么要输入\\\\ |
\a; \b; \f; \n; \r | 警告;退格;换页;换行;回车 |
\t; \v; | 水平制表符;垂直制表符 |
\o,\oo,\ooo; \xh; | 八进制对应ASCII字符;十六进制对应ASCII字符 |
说明:
水平制表符:将当前位置移到下一个tab位置;
垂直制表符:将当前位置移到下一个垂直制表对齐点
2、 整型在存储单元中的存储方式是:用整数的补码形式存放
最左边一位表示符号0为正,1为负
3、 sizeof:各种变量类型所占字节数
4、强制转换类型:(类型名)(表达式)
(int)x+y; //表示只将x转换为整型,然后与y相加
5、 控制语句:
break:终止switch语句或循环语句
continue:结束本次循环语句
goto:转向语句,在结构化程序中基本不用
空语句:就一个分好(;),可以用来作为流程的转向点(流程从程序其 他地方转到此语句),也可用来作为循环语句中的循环体
6、赋值过程中的类型转换
赋值运算符两侧类型不一致,但都是算术类型时,系统会自动进行转换,规则如下
(1)int i = 3.56;结果i的类型为3,0.56被舍弃
(2)float f = 23;那么23转为实数23.0存储
(3)float赋给double,数值不变,有效位数扩展到15位
(4)double赋给float,双精数转单,取6-7位有效数字。注意双精数的大小不能超出float变量的数值范围。否则出错
(5)i = ‘A’;即i = 65
(6)多字节整型赋给少字节整型或字符变量时,只将其低字节原封不动地送到被赋值的变量(发生截断)
总结:整型数据之间的赋值,按照存储单元中的存储形式直接传送。实型数据之间以及整型与实型之间的赋值,是先转换后赋值。
7、初始化:一般变量初始化不是在编译阶段完成的(只有在静态存储和外部变量的初始化是在编译阶段完成)
expint a = 3;
相当于int a;a = 3
8、C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中得函数来实现的。
9、规范化的额指数形式:把小数部分中小数点前的数字为0,小数点后第1位数不为0的表示形式成为规范化的指数形式。
0.12345*10^1就是1.2345的规范化,程序中表示0.12345e001
9、printf输出函数
(1)%m.nf 指定数据宽度和小数位数
(2)%-m.nf输出的数据向左对齐,右端不空格
(3)%e,指数形式输出,VC++中自动给数字部分小数位6位,指数部分占5列,如e+002,e占1列,指数符号占1列,指数占3列 printf("%e",123.456);
输出1.234560e+02
不同系统不同,以上结果是Xcode6.3结果
(4)%u 无符号十进制输出
(5)%g/%G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,指数以大写表示
10、getchar() 没有参数,只接收一个字符
char a,b,c;
a = getchar();
b = getchar();
c = getchar();
putchar(a);
putchar(b);
putchar(c);
输入 abc 输出 abc
若输入a后按Enter,那么会导致换行符赋值给b,b复制给c
输入
a
b
输出
a
b
在用键盘输入信息时,并不是在键盘上敲一个字符,该字符就立即送到计算机的,而是先暂存在键盘的缓冲器中,只有按了Enter以后才一起送到计算机中,然后按照先后顺序赋给变量。
11、putchar函数是输出字符的函数,不能输出整数;
例如putchar(66)->结果是B
12、练习:
大数相加
求 123456789123456789123456+12345678901234567890
利用数组
#include <stdio.h>
#include <string.h>
#define N 200
int main()
{
char s1[N],s2[N];
int a[N]={0},b[N]={0},i = 0;
unsigned long l1 = 0,l2 = 0,k,c;
puts("请输入两个较大的数字(Note:输完一个按一次回车):");
gets(s1); //输入字符串
gets(s2);
l1=strlen(s1);
l2=strlen(s2);
if(l1<l2) {
k=l2;
}
else {
k=l1;
}
c=k;
for(i=0;i<l1;k--,i++)
{
a[k]=s1[l1-1-i]-'0';
}
for(k=c,i=0;i<l2;k--,i++)
{
b[k]=s2[l2-1-i]-'0';
}
printf("\n");
for(i=(int)c;i>=0;i--)
{
a[i]+=b[i];
if(a[i]>=10)
{
a[i]-=10;
a[i-1]++;
}
} //相加
printf("此两数相加之和为:");
if(a[0]!=0)
{
for(i=0;i<=c;i++)
printf("%d",a[i]);
}
else
{
for(i=1;i<=c;i++)
printf("%d",a[i]);
}
printf("\n");
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。