记录了自学Ç语言遇到的问题。有的是ç语言的语法问题,有的是算法问题。
一,数据基础:
1,如111,在二进制中表示7;即 ;
2,int型的范围是-32768~32767;
3,%x以十六进制表示整数,
二,字符的问题:
1,遇到同时输入数字和字符型的,键入空格时,由于%C会读入字符空格,所以需要将%C间隔一个空格输入。
scanf("%d %c%d",&a,&b,&c);
2,的getchar()会读取一个输入的字符;的getchar()与的putchar()函数专门用于处理字符问题;
getchar()不含参数,如ch = getchar()使用效果同scanf(%c,&ch); 类似的,的putchar()函数包含参数,参数为待打印的字符,用于输出字符,的putchar(CH);
3,刷新缓冲区:使用函数fflush()或使用换行符“\ n”(从缓冲区把数据传递到屏幕或文件成为刷新缓冲区)
4,字符用''; 而字符串用双引号表示“”; 而在Ç语言中没有字符串类型,需要使用字符数组来定义字符串;
5,函数strlen的()读取字符串长度;
6,约定的编程习惯中#difine符号常量一般用大写;还可以使用关键字/ * const int * /;但注意此时声明的是变量;
7,若要在程序中使用INT_MAX或INT_MIN等符号常量,则需要在头文件中声明<limits.h>; (可以用文本编辑器打开的.h文件查看相应的符号常量。)
8,对于浮点数要想控制小数点后位数,则可以%。2f; 即表示小数点后两位;而对于%d型,可以在%后添加标记
如%-10D,表示有十个空格宽度, “ - ” 表示数字从左开始显示;
9,函数pirntf()也具有返回值,它的返回值是待打印的字符数目;
10,函数pirntf()字符串拼接的方法:printf(“**** \ n”“***”);
11,函数scanf()的读取基本变量的值要使用&取地址,但若将字符串读入数组中,不需要加&;但注意,除了%C型,其他类型都会跳过空格;还有,scanf()的的返回值是读入的项数,若读取有错误,返回0;
12,C语言中给出了专门处理字符的头文件文件ctype.h,这里给出字符映射函数,tolower的():将参数返回小写字母;
在toupper():将参数返回大写字母;
13,使用EOF,EOF的值为-1时,包含在文件stdio.h中,的getchar()与scanf()的检测到文件结尾时返回EOF;
如
while((ch = getchar()) != EOF)
{
;
}
三,C语言不等式
以下这种形式
a<=x<=b; /*表示(1)<=b,因为C语言中1表示运算正确*/
而真正的不等式应表示为
(a<=x)||(x<=b);
四,对小数点后的四舍五入
方法一:应用强制类型转换
for(i=1,s=1;i<=n;i++)
{
(int)(a*10*s+0.5); /*n为小数点后位数*/
s=10*i;
}
方法二:应用向下取整函数floor()/ * PS:向上取整函数为ceil()* /
for(i=1,s=1;i<=n;i++) /*n为小数点后位数*/
{
if(floor(a*10*s)>=0.5)
{
b=floor(a*10*s)+1;
}
else
{
b=floor(a*10*s);
}
s=i*10;
}
五,C语言的运算符:
1,除法:/浮点数相除结果仍为浮点数,而整数除法结果仍为整数。
2,求模运算:%,即取余数。
3,++与 - :若单独作为一条语句使用,二者作为前缀与后缀均无区别,但如果与其他运算符连用,做前缀时是先递变再进行运算,而作为后缀则是先进行运算再递变。
4,sizeof(int)或sizeof f;具体变量名;获取右侧的对象的字节数;
5,re%= 3; // re = re%3;对于其他运算符+ = - = * = / =同样适用。
6,三目条件运算符:有些时候比如果选择语句更为简便。如max =(a> b)?a:b;
7,切换选择语句要与break; 连用,否则会造成执行除了相应标签外的剩下语句;
六,循环
1,while while循环是先执行完循环体,再执行测试条件。但注意,而语句后面要接“;”。
七,数组
1,int a [10]; //表示可以存储10个int型,但下标是从a [0]开始,此例中一直到a [9];
2,如果char类型数组中,末尾为'\ 0',那么就构成了一个字符串;
3,数组的名也是一个指针,地址为数组首个元素的地址,用指针的增减来表示数组的元素挺方便的。