10.14 c语言基础

这篇博客介绍了C语言的基础知识,包括转义字符、运算符、数值转换、条件运算符、循环语句、以及continue和break的区别。通过示例代码展示了如何进行四位数的个十百千位转换、浮点数打印、闰年判断以及使用switch语句进行加减乘除运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

             C语言基础

  接上次3 的程序。判断输入的是大写字母还是小写字母还是数字,可以再程序中添加一行  export LANG = “C”

 

转义字符

一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示

 \n : 换行           \t :水平制表              \r :回车

 

“a”代表字符串,后面加\0  ‘a’代表字符

 

C的运算符有以下几类:

(1)算术运算符 (+  -  *  /  %

(2)关系运算符 (> <  ==  >=  <=  !=

(3)逻辑运算符 (! &&  ||

(4)位运算符   (<<   >>   ~   | ∧ &)

(5)赋值运算符 (=及其扩展赋值运算符)

(6)条件运算符 (?:)

(7)逗号运算符  (,)

(8)指针运算符 (*和&)

(9)求字节数运算符(sizeof

(10)强制类型转换运算符( (类型) )

(11)分量运算符(.->

(12)下标运算符([ ])

(13)其他 (如函数调用运算符())

 

1. / % 运算符应用 如写出一个四位数的个十百千位

1目录下编写4.c

#include<stdio.h>

int main()

{

   int a;

   int g,s,b,q;

 

   printf("Please input a number:\n");

   scanf("%d",&a);

   q=a/1000;

   b=a/100%10;

   s=a/10%10;

   g=a%10;

 

   printf("%d %d %d %d\n",g,s,b,q);

return 0;

}

 

 

函数符号() 数组下标【】

单目运算符              

算数运算符              

移位运算符

关系运算符       优先级从下到上在变大

逻辑运算符

三目运算符

 

++i --i :在执行i所在的语句之前,先使得i值加/1

I++ i-- :在执行i所在的语句之后,在使得i值加/1

如:int a = 4;

a+=a++;    a+a++   结果为9

a+=++a;                      10

++a+=a;                      10

++a+=a++;                    11

++a+=++a;                    12

 

逗号运算符:

一般形式:   表达式1,表达式2

求解过程:

  先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。

 

 

Float小数点后的有效位为6位,double小数点后的有效位为15位。

%.4f 代表小数点后有效位为4位   %.7f代表小数点后有六位是有效的,剩下一位是无效的。

如果是 %8.4f 8为输入长度 如1.111111 会显示为 (空格)(空格)1.1111

 

1目录下编写5.c

#include<stdio.h>

int main()

{

    float a=8.8883888;

    printf("%6.3f \n",a);

return 0;

}

 

最后 gcc 5.c -o 5   ./5 得出结果  (空格)8.888

 

 

1)布尔变量与零值比较

注意:不可将布尔量直接与TRUEFALSE或者10作比较,根据布尔类型的语义,零值为假,任何非零值为真。

2)整型变量与零值比较

应当将整型变量用==”或“!=”直接与0比较。

3)浮点变量与零值比较

浮点变量不能用==!=与任何数字比较。

4)指针变量与零值比较

指针变量应当用==!=NULL比较。

 

 

if(表达式1)语句1

   else if(表达式2)语句2

   else if(表达式3)语句3

       ……

   else if(表达式m)语句m

   else  语句n

匹配规则:

else总是与它上面的,最近的,统一复合语句中的,未配对的if语句配对;

ifelse数目不同时,可以加花括号来确定配对关系

If(表达式)

{

}    如果表达式为0则不进入循环 表达式不为0 (真)则执行循环

 

1目录里编写6.c 判断一个月份是否是闰年

#include<stdio.h>

int main()

{

   int year;

   printf("Please input a year:\n");

   scanf("%d",&year);

   

   if((!(year%4) && year%100) || !(year%400))

   {

   printf("Leap year\n");

   }

   else

   {

   printf("Not leap year\n");

   }

return 0;

}

 

 

Switch语句

基本格式:              

switch()

{

    case 1:

    {

       break;

    }

    case 2:

    {

       break;

    }

    default:

     {

         break;

     }

  }

每个case结尾加break,否则会导致多分支重叠;不要忘记default分支。

 

例:用switch语句编写 两个数字进行加减乘除的运算

1目录下编写7.c

#include<stdio.h>

int main()

{

    int num1,num2;

        char ope;

 

        scanf("%d%c%d",&num1,&ope,&num2);

        printf("%d,%c,%d\n",num1,ope,num2);

 

 

        switch(ope)

        {

          case '+':

          {

           printf("result %d\n",num1+num2);

           break;

          }

          case '*':

          {

          printf("result %d\n",num1*num2);

          break;

          }

          default:

          {

          printf("error");

          break;

          }

 

        }

return 0;

 

在此处是将 num1 ope num2一起进入scanf printf 输入,如果分开定义则可以修改程序为

#include<stdio.h>

int main()

{

    int num1[2],num2[2];

        char ope[2];

 

        //scanf("%d%c%d",&num1,&ope,&num2);

        //printf("%d,%c,%d\n",num1,ope,num2);

        printf("please input:\n");

        scanf("%d",num1);

        printf("please input:\n");

        scanf("%s",ope);

        printf("please input:\n");

        scanf("%d",num2);

 

 

        switch(ope[0])

        {

          case '+':

          {

           printf("result %d\n",num1[0]+num2[0]);

           break;

          }

          case '*':

          {

          printf("result %d\n",num1[0]*num2[0]);

          break;

          }

          default:

          {

          printf("error");

          break;

          }

 

        }

return 0;

}

 

 

结果为:

[root@localhost 1]# ./7

please input:

5

please input:

+

please input:

1

result 6

 

 

循环语句:重点论述循环体的效率。提高循环体效率的基本办法是降低循环体的复杂性。

 

continue语句

  作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定.

一般形式:      continue;

 

break语句

  break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句

  一般形式:  break;

注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。

 

1目录下编写8.c 查看continuebreak 的区别

#include<stdio.h>

int main()

{

  int i,a;

  for(i=0;i<3;i++)

  {

     for(a=0;a<10;a++)

         {

         if(5==a)

         {

        // continue;

         break;

         }

     printf("hello world! %d\n",a);

         }

  }

 

语句中使用continue 结果为

hello world! 0

hello world! 1

hello world! 2

hello world! 3

hello world! 4

hello world! 6

hello world! 7

hello world! 8

hello world! 9

hello world! 0

hello world! 1

hello world! 2

hello world! 3

hello world! 4

hello world! 6

hello world! 7

hello world! 8

hello world! 9

 

语句中使用break 结果为

hello world! 0

hello world! 1

hello world! 2

hello world! 3

hello world! 4

hello world! 0

hello world! 1

hello world! 2

hello world! 3

hello world! 4

 

 

在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数;

如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值