C语言基础部分

一、   如何把自己的函数加进去

①无返回值

#include

void jolly(void);

int main(void)

{

jolly();  

return 0;

}

void jolly(void) //这里没有‘;’

{

printf("forhe's a jolly goof fellow\n");

}

/*这里main是主函数,先执行main(),再执行自己定义的函数*/

②有返回值

#include

double sum_squares(long a,long b);

int main()

{

………….

}

Double sum_squares(long a,long b)

{

   Doubletotal=0;

   Long I;

 

   ………….

Return total;

}

 

 

二、   print语句

1、会替换以前的数据,转义序列

#include

Int main()

{

float salary;

 

printf(“Enter your desired monthly salary:”);

printf(“$_______\b\b\b\b\b\b\b”);//\b是往后退

printf(“%f”,&salary);

printf(“\n\t$%.2f a month is $%.2f a year.”,

salary,salary*12.0);//3

printf(”\rGee!\n”);//4

/*对于第三行,打印完后,光标会在本行不动,继续读第4个,这时/r会返回第一行,打印Gee!,因为打印是替换机制,所有打印第四行必须替换第三行东西。/t是制表符,和tab建作用相同,有时系统设置tab是4个空格或8个空格,输出就会有几个空格*/

2、print语句后从右到左计算

Int a=1;

Printf("a=%d,++a=%d”,a,++a);

输出 2,2

 

 

 

三、   数据类型

1、浮点数舍入错误

Float类型的数字通常只能储存所有数字开头起6或7位有效数字。

如2e10+1再减去2e10时显示只能2后5到6个零

2、double16位有效数字

Float7位有效数字(3.500000)

3、类型转化

①char和short都会自动转换成int

②float会被转换成double

③如果目标类型事无符号整型,且待赋值的数是整数时,额外的数会被忽略。如:目标类型是8位unsigned char,代付的值是原始数据求模256

 

 

四、(字符串和格式化输出)

1、char name[40],此时scanf(“%s,name”)

//name不用取地址符&

2、scanf()在取到合适的值后会在有空格的地方停止

//如输入Kevin chen,输出只会是Kevin

/*scanf(“%d  ,%d”)格式字符串的空白意味着跳过下一个输入项前面的所有空白*/

3、使用#include才可以使用strlen()函数,给出字符串中字符长度(包括空格和标点符号)

4、c预处理

#define BOOK “westlife’biography”

/*用大写字母表示常量,对于字符串,必须用双引号,并且双引号不会打出*/

/*如果想输出双引号,单引号,斜杠,”\””就会输出双引号*/

5、const限定符

Const int vim=15

//此刻vim值不可修改

6、printf(“010.2f”,qq);

/*10前的0代表如果qq不够10个宽度,用零补,如0572043666*/

7、%.4s 

//意味着对于python来说只打印pyth

8、打印较长的字符串

//不能在双引号括起来的字符串中间直接断开

方法①用\隔开

②用“

//对于一句话,可以使用多个“隔开

9、printf()用*表示宽度

Printf(“the number is %*d”,width,number);

例子

#include

#include

int main()

{

    charname1[20];

    charname2[20];

 

   printf("please enter two names:");

   scanf("%s %s",name1,name2);

   printf("%s %s\n",name1,name2);

   printf("%*zd%*zd\n",strlen(name1),strlen(name1),strlen(name2),

strlen(name2));

printf("%zd%*zd",strlen(name1),strlen(name1),strlen(name2));

 

    return 0;

}

输入Kevin bee

输出Kevin bee

        5   3

     5    3

10、scanf中会跳过含有*的项

Scanf(“%*d,%*d,%d”,&n);

Printf(“the last number is %d”,n);

11、打印%,输出时必须用两个%,这样才可输出%

12、%s会是打印一句话,%c会打印一个字符

13%lf表示double类型

14、最后程序的getchar会取走scanf没有取走的换行符(每次后一个scanf会将上一个scanf后用户输入的换行符替换掉),多加一次putchar就会起到暂停的作用

 

 

五、   运算符、语句

1、整数除法结果的小数部分被丢弃,这一过程被称为截断

2、7.0可直接用7.表示

3、截断计算结果的小数部分,不会四舍五入

4、求余数的运算符只能用于整数,不能用于浮点数

当char类型赋值超过一字节大小,待赋值将是原始值求模(求余数)256

※5、强制类型装换

A=1.6+1.7=3.3

B=(int)1.6+(int)1.7=2

例如(float)9变为9.0

6、打印字母a-g

Char ch=’a’;

While(ch<=’g’)

Printf(“%5c”,ch++);

Printf(“\n”);

/*”=”一定要在《后面*/

7、while循环注意

当while这一句后没有花括号,紧接着一句在循环内,其余不在

例子:while(x++<103)

        Printf(“%dd\n”,x);//这句话在循环内

        Printf(“%4d\n”,x);//没有在循环内

※8、将程序段带注释的成功去除

#if 0

语句//注释

#endif

这样带注释的语句就成功去除

 

9、想要使用pow()函数

要用,同时使用gcc –lm(加文件)

#include

#include

void cube(double x);//说明是double类型

int main()

{

    double n,m;

 

   printf("you will get a cube\n");

   printf("please enter a number\n");

   scanf("%lf",&n);

    m=pow(n,3);

    cube(m);//给参数

 

    return 0;

}

void cube(double x)

{

   printf("%f",x);

}

※10、逻辑运算符

a=1,b=2,c=3,d=4,m=1,n=1;

(m=a>b)&&(n=c>d)

 

M=0,所以这句话的真值为0,此时不在运行后一句话,既n不改变

所以输出m=0,n=1

11、sizeof运算符

①sizeof(x=f+2)

/*不会对x赋值,只是求x此时所占的字节*/

②sizeof()以字节微单文给出指定类型大小

/*运算对象是类型时,圆括号必不可少,如int,但是对于特定量,可有可无,但是一直用带括号的,输出的格式化是%zd代表十进制,%zx代表16进制*/

③sizeof一个数组名的时候会算上所有

Float a【10】

Sizeof(a)=40

12、条件运算符 ? :

Max=(a>b)?a:b

/*如果a》b成立,则max=a,否则max=b

六、   循环

1、         a=scanf(…)的情形

a=scanf(‘%ld”,&num);

/*如果输入的是字符串要求的,a此时=1,既a为真*/

2、         while(a)和while(a!=0)相同

3、为了检查比较的==和=不用错,一般用1==stay来表示

4、_Bool类型

_Bool input_is_good//不用下划线,is是另外一种用法

给这句话赋值就可以弄布尔值,布尔值只能存1或0,表示真假

5、关系运算符(<)比算术运算符低(+-),比赋值运算符高

6、①while是入口条件循环,满足开始条件才可循环。

While(scanf(“%d”,&num)==1)

 ;

/*此时程序会跳过数字,知道不是数字,while结束,此时“;”什么都不做,只是一个空语句*/

②do while是出口条件循环

Do{

Printf(“qq”)

}while();

Statement//这句话不在循环内

 

7、不能用关系运算符比较字符串,比方xxx==yyy

8、比较浮点数,尽量用《和》,因为浮点数的舍入误差会导致在逻辑上应该相等的不相等。使用fbs()函数算出绝对值可以方便比较浮点数

8、while循环当有数值时,会一直循环

While(age=55)

{

}

/*这种情况也会无限循环,因为还是常数*/

9、while(a)就是等于while(a!=0)或者就是while(a!=false)

10、for循环

①for(count=1;count<=22;count++)

printf(“hello”)

/*顺序是先过count=1,然后再判断,之后打印

接着再进行第三句,更新数据,然后判断(第一句只执行一次)*/

执行第一句之后,还要再判断条件才可输出

 

 

※②for(x=1;y<=75;y=(++x*5)+50)

Printf(“%d %d”,x,y);

//等于

For(x=1;y<=75;y=x*5+50)

{

Printf(“%d %d”,x,y);

++x;

}

//也等于

For(x=1;y<=75;++x,y=x*5+50)//使用逗号表达式

③for(printf(“hello”);num!=6;)

  /*print只执行一次,num!=6是条件*/

11、①a=249,500;

解释为a=249;

      500;

②a=(249,500);

这个时候a=500

12、嵌套循环(输出三角形等问题)

For(row=0;row《ROWS;row++)

{

For(ch=(‘A’+row);ch<(‘A’+CHARS);ch++)

Printf(“%c”,ch);

Printf(“\n”);

}

有行有列

13、数组对于scanf来说&的有无

①char name【20】不用&

②int score【10】,对score【0】赋值,用scanf要用&

 

 

七、   分支和跳转

1、         if语句

①if(stament)

statement

else

statement

② if

   Else if

 Else if

 Else

③else会和最近的一个else匹配

If(  )①

If(  )②

Else//与2匹配

 

If()①

{

  If()②

}

Else//和①匹配

2、         getcahr和putchar

ch=putchar()和scanf(“%c”,&ch)等价

putchar同理

3、常量不能用自增或自减符号

a=2

n=++(a+a++)

错误,a+a++已经是常数

3、         continue和break

4.switch语句

switch(ch)

{

Case ‘a’://常数不加‘’

     Statement;

     Break;

Case ‘b’:

            Statement;

Break;

 

Default://如果ch既不等于a,也不等于b,则输出这句话

   statement

}

 

你可能感兴趣的:(C语言知识点)