C语言总结1.0

 

C 语言

   1  /*C 程序结构
   2 
   3 在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。
   4 C Hello World 实例
   5 
   6 C 程序主要包括以下部分:
   7 预处理器指令
   8 函数
   9 变量
  10 语句 & 表达式
  11 注释
  12 让我们看一段简单的代码,可以输出单词 "Hello World":
  13 
  14  
  15 #include <stdio.h>
  16 
  17 int main(void)
  18 {
  19    //我的第一个 C 程序 
  20    printf("Hello, World! \n");
  21    
  22    return 0;
  23 } 
  24 接下来我们讲解一下上面这段程序:
  25 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
  26 下一行 int main() 是主函数,程序从这里开始执行。
  27 下一行 /.../ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
  28 下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, World!"。
  29 下一行 return 0; 终止 main() 函数,并返回值 0。
  30 编译 & 执行 C 程序
  31 
  32 接下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:
  33 打开一个文本编辑器,添加上述代码。
  34 保存文件为 hello.c。
  35 打开命令提示符,进入到保存文件所在的目录。
  36 键入 gcc hello.c,输入回车,编译代码。
  37 如果代码中没有错误,命令提示符会跳到下一行,并生成 a.out 可执行文件。
  38 现在,键入 a.out 来执行程序。
  39 您可以看到屏幕上显示 "Hello World"。
  40 $ gcc hello.c
  41 $ ./a.out
  42 Hello, World!
  43 请确保您的路径中已包含 gcc 编译器,并确保在包含源文件 hello.c 的目录中运行它。*/
  44 /*C 基本语法
  45 
  46 我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块。
  47 C 的令牌(Tokens)
  48 
  49 C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。例如,下面的 C 语句包括五个令牌:
  50 printf("Hello, World! \n");
  51 这五个令牌分别是:
  52 printf
  53 (
  54 "Hello, World! \n"
  55 )
  56 ;
  57 分号 ;
  58 
  59 在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
  60 例如,下面是两个不同的语句:
  61 printf("Hello, World! \n");
  62 return 0;
  63 注释
  64 
  65 注释就像是 C 程序中的帮助文本,它们会被编译器忽略。它们以 /* 开始,以字符 / 终止,如下所示:
  66 /* 我的第一个 C 程序 /
  67 您不能在注释内嵌套注释,注释也不能出现在字符串或字符值中。
  68 标识符
  69 
  70 C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。
  71 一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
  72 C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。
  73 因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。下面列出几个有效的标识符:
  74 mohd       zara    abc   move_name  a_123
  75 myname50   _temp   j     a23b9      retVal
  76 关键字
  77 
  78 下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
  79 auto    else    long    switch
  80 break    enum    register    typedef
  81 case    extern    return    union55
  82 char    float    short    unsigned
  83 const    for    signed    void
  84 continue    goto    sizeof    volatile
  85 default    if    static    while
  86 do    int    struct    _Packed
  87 double               
  88 
  89 C 中的空格
  90 
  91 只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。
  92 在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,
  93 让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。因此,在下面的语句中:
  94 int age;
  95 在这里,int 和 age 之间必须至少有一个空格字符(通常是一个空白符),这样编译器才能够区分它们。另一方面,在下面的语句中:
  96 fruit = apples + oranges;   // 获取水果的总数
  97 fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。*/
  98 
  99 /* 
 100 #include <stdio.h>
 101 int main()
 102 {
 103     printf(" hello word");
 104     return 0;
 105     
 106 }*/
 107   
 108   
 109    
 110 /*
 111 C 变量
 112 
 113 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
 114 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C 是大小写敏感的。基于前一章讲解的基本类型,有以下几种基本的变量类型:
 115 类型    描述
 116 char    通常是一个八位字节(一个字节)。这是一个整数类型。
 117 int    对机器而言,整数的最自然的大小。10 10.0 10.00
 118 float    单精度浮点值。
 119 double    双精度浮点值。
 120 void    表示类型的缺失。
 121 
 122 C 语言也允许定义各种其他类型的变量,比如枚举、指针、数组、结构、共用体等等,这将会在后续的章节中进行讲解,本章节我们先讲解基本变量类型。
 123 C 中的变量定义
 124 
 125 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:
 126 type variable_list;
 127 在这里,type 必须是一个有效的 C 数据类型,可以是 char、w_char、int、float、double、bool 或任何用户自定义的对象,variable_list 可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:
 128 int    i, j, k;
 129 char   c, ch;
 130 float  f, salary;
 131 double d;
 132 行 int i, j, k; 声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。
 133 变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示:
 134 type variable_name = value;
 135 下面列举几个实例:
 136 extern int d = 3, f = 5;    // d 和 f 的声明 
 137 int d = 3, f = 5;           // 定义并初始化 d 和 f
 138 byte z = 22;                // 定义并初始化 z
 139 char x = 'x';               // 变量 x 的值为 'x'
 140 不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。
 141 C 中的变量声明
 142 
 143 变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
 144 当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
 145 实例
 146 
 147 尝试下面的实例,其中,变量在头部就已经被声明,但它们是在主函数内被定义和初始化的:
 148 */
 149 /*
 150 #include <stdio.h>
 151 
 152 // 变量声明
 153 extern int a, b;
 154 extern int c;
 155 extern float f;
 156 
 157 int main ()
 158 {
 159   //变量定义 
 160   int a, b;
 161   int c;
 162   float f;
 163  
 164   // 实际初始化
 165   a = 10;
 166   b = 20;
 167   
 168   c = a + b;
 169   printf("value of c : %d \n", c);
 170 
 171   f = 70.0/3.0;
 172   printf("value of f : %f \n", f);
 173  
 174   return 0;
 175 }*/
 176 /*
 177 当上面的代码被编译和执行时,它会产生下列结果:
 178 value of c : 30
 179 value of f : 23.333334
 180 同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。例如:
 181 // 函数声明
 182 int func();
 183 
 184 int main()
 185 {
 186     // 函数调用
 187     int i = func();
 188 }
 189 
 190 // 函数定义
 191 int func()
 192 {
 193     return 0;
 194 }
 195 C 中的左值(Lvalues)和右值(Rvalues)
 196 
 197 C 中有两种类型的表达式:
 198 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
 199 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
 200 变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:
 201 int g = 20;
 202 但是下面这个就不是一个有效的语句,会生成编译时错误:
 203 10 = 20;
 204 */
 205 /*
 206 #include <stdio.h>
 207 
 208 // 变量声明
 209 extern int a, b;
 210 extern int c;
 211 extern float f;
 212 
 213 int main ()
 214 {
 215   // 变量定义 
 216   int a, b;
 217   int c;
 218   float f;
 219  
 220   // 实际初始化 
 221   a = 10;
 222   b = 2;
 223    
 224   c = a/b;
 225   printf("value of c : %d \n", c);
 226 
 227   f = 70.0/3.0;
 228   printf("value of f : %f \n", f);
 229  
 230   return 0;
 231 }*/
 232 /* 
 233 C 常量
 234 
 235 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
 236 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
 237 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
 238 整数常量
 239 
 240 整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
 241 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
 242 下面列举几个整数常量的实例:
 243 212         //合法的 
 244 215u        // 合法的
 245 0xFeeL      //合法的
 246 078         // 非法的:8 不是八进制的数字 
 247 032UU       //非法的:不能重复后缀 
 248 以下是各种类型的整数常量的实例:
 249 85         // 十进制 
 250 0213       // 八进制 
 251 0x4b       // 十六进制
 252 30         // 整数 
 253 30u        // 无符号整数
 254 30l        // 长整数 
 255 30ul       // 无符号长整数 
 256 浮点常量
 257 
 258 浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
 259 当使用小数形式表示时,必须包含小数点、指数,或同时包含两者。当使用指数形式表示时,必须包含整数部分、小数部分,或同时包含两者。带符号的指数是用 e 或 E 引入的。
 260 下面列举几个浮点常量的实例:
 261 3.14159       // 合法的 
 262 314159E-5L    // 合法的 
 263 510E          // 非法的:不完整的指数 
 264 210f          // 非法的:没有小数或指数 
 265 .e55          // 非法的:缺少整数或分数 
 266 字符常量
 267 
 268 字符常量是括在单引号中,例如,'x' 可以存储在 char 类型的简单变量中。
 269 字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')。
 270 在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:
 271 转义序列    含义
 272 \\    \ 字符
 273 \'    ' 字符
 274 \"    " 字符
 275 \?    ? 字符
 276 \a    警报铃声
 277     退格键
 278 \f    换页符
 279 \n    换行符
 280 \r    回车
 281 \t    水平制表符
 282 \v    垂直制表符
 283 \ooo    一到三位的八进制数
 284 \xhh . . .    一个或多个数字的十六进制数
 285 下面的实例显示了一些转义序列字符:
 286 #include <stdio.h>
 287 
 288 int main()
 289 {
 290    printf("Hello\tWorld\n\n");
 291 
 292    return 0;
 293 }
 294 当上面的代码被编译和执行时,它会产生下列结果:
 295 Hello   World
 296 
 297 字符串常量
 298 
 299 字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。
 300 您可以使用空格做分隔符,把一个很长的字符串常量进行分行。
 301 下面的实例显示了一些字符串常量。下面这三种形式所显示的字符串是相同的。
 302 "hello, dear"
 303 
 304 "hello, \
 305 
 306 dear"
 307 
 308 "hello, " "d" "ear"
 309 定义常量
 310 
 311 在 C 中,有两种简单的定义常量的方式:
 312 使用 #define 预处理器。
 313 使用 const 关键字。
 314 #define 预处理器
 315 
 316 下面是使用 #define 预处理器定义常量的形式:
 317 #define identifier value
 318 具体请看下面的实例:
 319 #include <stdio.h>
 320 
 321 #define LENGTH 10   
 322 #define WIDTH  5
 323 #define NEWLINE '\n'
 324 
 325 int main()
 326 {
 327 
 328    int area;  
 329   
 330    area = LENGTH * WIDTH;
 331    printf("value of area : %d", area);
 332    printf("%c", NEWLINE);
 333 
 334    return 0;
 335 }
 336 当上面的代码被编译和执行时,它会产生下列结果:
 337 value of area : 50
 338 const 关键字
 339 
 340 您可以使用 const 前缀声明指定类型的常量,如下所示:
 341 const type variable = value;
 342 具体请看下面的实例:
 343 *//*
 344 #include <stdio.h>
 345 
 346 int main()
 347 {
 348    const int  LENGTH = 10;
 349    const int  WIDTH  = 5;
 350    const char NEWLINE = '\n';
 351    int area;  
 352    
 353    area = LENGTH * WIDTH;
 354    printf("value of area : %d", area);
 355    printf("%c", NEWLINE);
 356 
 357    return 0;
 358 }*/
 359 /*
 360 当上面的代码被编译和执行时,它会产生下列结果:
 361 value of area : 50
 362 */
 363 /*
 364 #include<stdio.h>
 365 int main()
 366 {
 367     printf("Hello \t world\n\n");
 368     return 0;
 369     
 370 } */
 371 /*
 372 #include <stdio.h>
 373 
 374 #define LENGTH 10   
 375 #define WIDTH  5
 376 #define NEWLINE '\n'
 377 
 378 int main()
 379 {
 380 
 381    int area;  
 382   
 383    area = LENGTH * WIDTH;
 384    printf("value of area : %d", area);
 385    printf("%c", NEWLINE);
 386 
 387    return 0;
 388 }
 389 */
 390 
 391 /*
 392 C 存储类
 393 
 394 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类:
 395 auto
 396 register
 397 static
 398 extern
 399 auto 存储类
 400 
 401 auto 存储类是所有局部变量默认的存储类。
 402 {
 403    int mount;
 404    auto int month;
 405 }
 406 上面的实例定义了两个带有相同存储类的变量,auto 只能用在函数内,即 auto 只能修饰局部变量。
 407 register 存储类
 408 
 409 register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 '&' 运算符(因为它没有内存位置)。
 410 {
 411    register int  miles;
 412 }
 413 寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 'register' 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。
 414 static 存储类
 415 
 416 static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
 417 static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
 418 在 C 编程中,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。
 419 #include <stdio.h>
 420  
 421 //函数声明 
 422 void func(void);
 423  
 424 static int count = 5; // 全局变量 
 425  
 426 main()
 427 {
 428    while(count--)
 429    {
 430       func();
 431    }
 432    return 0;
 433 }
 434 //函数定义 
 435 void func( void )
 436 {
 437    static int i = 5; // 局部静态变量 
 438    i++;
 439 
 440    printf("i is %d and count is %d\n", i, count);
 441 }
 442 可能您现在还无法理解这个实例,因为我已经使用了函数和全局变量,这两个概念目前为止还没进行讲解。即使您现在不能完全理解,也没有关系,后续的章节我们会详细讲解。当上面的代码被编译和执行时,它会产生下列结果:
 443 i is 6 and count is 4
 444 i is 7 and count is 3
 445 i is 8 and count is 2
 446 i is 9 and count is 1
 447 i is 10 and count is 0
 448 extern 存储类
 449 
 450 extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。当您使用 'extern' 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。
 451 当您有多个文件且定义了一个可以在其他文件中使用的全局变量或函数时,可以在其他文件中使用 extern 来得到已定义的变量或函数的引用。可以这么理解,extern 是用来在另一个文件中声明一个全局变量或函数。
 452 extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候,如下所示:
 453 第一个文件:main.c
 454 #include <stdio.h>
 455  
 456 int count ;
 457 extern void write_extern();
 458  
 459 main()
 460 {
 461    count = 5;
 462    write_extern();
 463 }
 464 第二个文件:support.c
 465 #include <stdio.h>
 466  
 467 extern int count;
 468  
 469 void write_extern(void)
 470 {
 471    printf("count is %d\n", count);
 472 }
 473 在这里,第二个文件中的 extern 关键字用于声明已经在第一个文件 main.c 中定义的 count。现在 ,编译这两个文件,如下所示:
 474  $gcc main.c support.c
 475 这会产生 a.out 可执行程序,当程序被执行时,它会产生下列结果:
 476 count is 5
 477 *//*
 478 #include <stdio.h>
 479  
 480 int count ;
 481 extern void write_extern();
 482  
 483 main()
 484 {
 485    count = 5;
 486    write_extern();
 487 }
 488 #include <stdio.h>
 489  
 490 extern int count;
 491  
 492 void write_extern(void)
 493 {
 494    printf("count is %d\n", count);
 495 }*/
 496 /*C 运算符
 497 
 498 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符,并提供了以下类型的运算符:
 499 算术运算符
 500 关系运算符
 501 逻辑运算符
 502 位运算符
 503 赋值运算符
 504 杂项运算符
 505 本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和杂项运算符。
 506 算术运算符
 507 
 508 下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
 509 运算符    描述    实例
 510 +    把两个操作数相加    A + B 将得到 30
 511 -    从第一个操作数中减去第二个操作数    A - B 将得到 -10
 512 *    把两个操作数相乘    A * B 将得到 200
 513 /    分子除以分母    B / A 将得到 2
 514 %    取模运算符,整除后的余数    B % A 将得到 0
 515 ++    自增运算符,整数值增加 1    A++ 将得到 11
 516 --    自减运算符,整数值减少 1    A-- 将得到 9
 517 实例
 518 
 519 请看下面的实例,了解 C 语言中所有可用的算术运算符:
 520 */
 521 /*
 522 #include <stdio.h>
 523 
 524 int main()
 525 {
 526    int a = 21;
 527    int b = 10;
 528    int c ;
 529 
 530    c = a + b;
 531    printf("Line 1 - c 的值是 %d\n", c );
 532    c = a - b;
 533    printf("Line 2 - c 的值是 %d\n", c );
 534    c = a * b;
 535    printf("Line 3 - c 的值是 %d\n", c );
 536    c = a / b;
 537    printf("Line 4 - c 的值是 %d\n", c ); 
 538    c = a % b;
 539    printf("Line 5 - c 的值是 %d\n", c );
 540    c = a++;  // 赋值后再加 1 ,c 为 21,a 为 22
 541    printf("Line 6 - c 的值是 %d\n", c );
 542    c = a--;  // 赋值后再减 1 ,c 为 22 ,a 为 21
 543    printf("Line 7 - c 的值是 %d\n", c );
 544 
 545 }
 546 
 547 /*
 548 当上面的代码被编译和执行时,它会产生下列结果:
 549 Line 1 - c 的值是 31
 550 Line 2 - c 的值是 11
 551 Line 3 - c 的值是 210
 552 Line 4 - c 的值是 2
 553 Line 5 - c 的值是 1
 554 Line 6 - c 的值是 21
 555 Line 7 - c 的值是 22
 556 以下实例演示了 a++ 与 ++a 的区别: a++ 和 ++a的相同点都是给a+1,不同点是a++是先赋值再+1,而++a则是先+1再参赋值。
 557 实例
 558 
 559 #include <stdio.h>
 560 int main()
 561 {
 562 int c;
 563 int a = 10;
 564 c = a++;
 565 printf("先赋值后运算:\n");
 566 printf("Line 1 - c 的值是 %d\n", c );
 567 printf("Line 2 - a 的值是 %d\n", a );
 568 a = 10;
 569 c = a--;
 570 printf("Line 3 - c 的值是 %d\n", c );
 571 printf("Line 4 - a 的值是 %d\n", a );
 572 printf("先运算后赋值:\n");
 573 a = 10;
 574 c = ++a;
 575 printf("Line 5 - c 的值是 %d\n", c );
 576 printf("Line 6 - a 的值是 %d\n", a );
 577 a = 10;
 578 c = --a;
 579 printf("Line 7 - c 的值是 %d\n", c );
 580 printf("Line 8 - a 的值是 %d\n", a );
 581 }
 582 
 583 以上程序执行输出结果为:
 584 先赋值后运算:
 585 Line 1 - c 的值是 10
 586 Line 2 - a 的值是 11
 587 Line 3 - c 的值是 10
 588 Line 4 - a 的值是 9
 589 先运算后赋值:
 590 Line 5 - c 的值是 11
 591 Line 6 - a 的值是 11
 592 Line 7 - c 的值是 9
 593 Line 8 - a 的值是 9
 594 
 595 关系运算符
 596 
 597 下表显示了 C 语言支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:
 598 运算符    描述    实例
 599 ==    检查两个操作数的值是否相等,如果相等则条件为真。    (A == B) 不为真。
 600 !=    检查两个操作数的值是否相等,如果不相等则条件为真。    (A != B) 为真。
 601 >    检查左操作数的值是否大于右操作数的值,如果是则条件为真。    (A > B) 不为真。
 602 <    检查左操作数的值是否小于右操作数的值,如果是则条件为真。    (A < B) 为真。
 603 >=    检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。    (A >= B) 不为真。
 604 <=    检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。    (A <= B) 为真。
 605 实例
 606 
 607 请看下面的实例,了解 C 语言中所有可用的关系运算符:
 608 */
 609 /*
 610 #include <stdio.h>
 611 
 612 int main()
 613 {
 614    int a = 21;
 615    int b = 10;
 616    int c ;
 617 
 618    if( a == b )
 619    {
 620       printf("Line 1 - a 等于 b\n" );
 621    }
 622    else
 623    {
 624       printf("Line 1 - a 不等于 b\n" );
 625    }
 626    if ( a < b )
 627     { 
 628             printf("Line 2 - a 小于 b\n" );
 629     }
 630     else
 631     {
 632             printf("Line 2 - a 不小于 b\n" );
 633     }
 634    if ( a > b )
 635    {
 636       printf("Line 3 - a 大于 b\n" );
 637    }
 638    else
 639    {
 640       printf("Line 3 - a 不大于 b\n" );
 641    }
 642    //    改变 a 和 b 的值 
 643    a = 5;
 644    b = 20;
 645    if ( a <= b )
 646     {       printf("Line 4 - a 小于或等于 b\n" );
 647     }
 648     if ( b >= a )
 649    {
 650       printf("Line 5 - b 大于或等于 b\n" );
 651    }
 652 }
 653 当上面的代码被编译和执行时,它会产生下列结果:
 654 Line 1 - a 不等于 b
 655 Line 2 - a 不小于 b
 656 Line 3 - a 大于 b
 657 Line 4 - a 小于或等于 b
 658 Line 5 - b 大于或等于 b
 659 逻辑运算符
 660 
 661 下表显示了 C 语言支持的所有关系逻辑运算符。假设变量 A 的值为 1,变量 B 的值为 0,则:
 662 运算符    描述    实例
 663 &&    称为逻辑与运算符。如果两个操作数都非零,则条件为真。    (A && B) 为假。
 664 ||    称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。    (A || B) 为真。
 665 !    称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。    !(A && B) 为真。
 666 实例
 667 
 668 请看下面的实例,了解 C 语言中所有可用的逻辑运算符:
 669 /*
 670 #include <stdio.h>
 671 
 672 int main()
 673 {
 674    int a = 5;
 675    int b = 20;
 676    int c ;
 677 
 678    if ( a && b )
 679    {
 680       printf("Line 1 - 条件为真\n" );
 681    }
 682    if ( a || b )
 683    {
 684       printf("Line 2 - 条件为真\n" );
 685    }
 686    // 改变 a 和 b 的值 
 687    a = 0;
 688    b = 10;
 689    if ( a && b )
 690    {
 691       printf("Line 3 - 条件为真\n" );
 692    }
 693    else
 694    {
 695       printf("Line 3 - 条件不为真\n" );
 696    }
 697    if ( !(a && b) )
 698    {
 699       printf("Line 4 - 条件为真\n" );
 700    }
 701 }
 702 当上面的代码被编译和执行时,它会产生下列结果:
 703 Line 1 - 条件为真
 704 Line 2 - 条件为真
 705 Line 3 - 条件不为真
 706 Line 4 - 条件为真
 707 
 708 位运算符
 709 
 710 位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:
 711 p    q    p & q    p | q    p ^ q
 712 0    0    0    0    0
 713 0    1    0    1    1
 714 1    1    1    1    0
 715 1    0    0    1    1
 716 假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:
 717 A = 0011 1100
 718 B = 0000 1101
 719 --------------
 720 A&B = 0000 1100
 721 A|B = 0011 1101
 722 A^B = 0011 0001
 723 ~A  = 1100 0011
 724 下表显示了 C 语言支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:
 725 运算符    描述    实例
 726 &    按位与操作,按二进制位进行“与”运算。运算规则: 
 727 0&0=0;
 728 0&1=0;
 729 1&0=0;
 730 1&1=1;
 731 (A & B) 将得到 12,即为 0000 1100
 732 |    按位或运算符,按二进制位进行“或”运算。运算规则:
 733 0|0=0;
 734 0|1=1;
 735 1|0=1;
 736 1|1=1;
 737 (A | B) 将得到 61,即为 0011 1101
 738 ^    异或运算符,按二进制位进行“异或”运算。运算规则:
 739 0^0=0;
 740 0^1=1;
 741 1^0=1;
 742 1^1=0
 743 (A ^ B) 将得到 49,即为 0011 0001
 744 ~    取反运算符,按二进制位进行“取反”运算。运算规则:
 745 ~1=0;
 746 ~0=1;
 747 (~A ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。
 748 <<    二进制左移运算符。左操作数的值向左移动右操作数指定的位数(左边的二进制位丢弃,右边补0)。    A << 2 将得到 240,即为 1111 0000
 749 >>    二进制右移运算符。左操作数的值向右移动右操作数指定的位数(正数左补0,负数左补1,右边丢弃)。    A >> 2 将得到 15,即为 0000 1111
 750 实例
 751 
 752 请看下面的实例,了解 C 语言中所有可用的位运算符:
 753 *//*
 754 #include <stdio.h>
 755 
 756 int main()
 757 {
 758 
 759    unsigned int a = 60; // 60 = 0011 1100   
 760    unsigned int b = 13; // 13 = 0000 1101 
 761    int c = 0;           
 762 
 763    c = a & b;       // 12 = 0000 1100 
 764    printf("Line 1 - c 的值是 %d\n", c );
 765 
 766    c = a | b;       // 61 = 0011 1101
 767    printf("Line 2 - c 的值是 %d\n", c );
 768 
 769    c = a ^ b;       // 49 = 0011 0001
 770    printf("Line 3 - c 的值是 %d\n", c );
 771 
 772    c = ~a;          //-61 = 1100 0011 
 773    printf("Line 4 - c 的值是 %d\n", c );
 774 
 775    c = a << 2;     // 240 = 1111 0000 
 776    printf("Line 5 - c 的值是 %d\n", c );
 777 
 778    c = a >> 2;     // 15 = 0000 1111 
 779    printf("Line 6 - c 的值是 %d\n", c );
 780 }*//*
 781 当上面的代码被编译和执行时,它会产生下列结果:
 782 Line 1 - c 的值是 12
 783 Line 2 - c 的值是 61
 784 Line 3 - c 的值是 49
 785 Line 4 - c 的值是 -61
 786 Line 5 - c 的值是 240
 787 Line 6 - c 的值是 15
 788 赋值运算符
 789 
 790 下表列出了 C 语言支持的赋值运算符:
 791 运算符    描述    实例
 792 =    简单的赋值运算符,把右边操作数的值赋给左边操作数    C = A + B 将把 A + B 的值赋给 C
 793 +=    加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数    C += A 相当于 C = C + A
 794 -=    减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数    C -= A 相当于 C = C - A
 795 *=    乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数    C *= A 相当于 C = C * A
 796 /=    除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数    C /= A 相当于 C = C / A
 797 %=    求模且赋值运算符,求两个操作数的模赋值给左边操作数    C %= A 相当于 C = C % A
 798 <<=    左移且赋值运算符    C <<= 2 等同于 C = C << 2
 799 >>=    右移且赋值运算符    C >>= 2 等同于 C = C >> 2
 800 &=    按位与且赋值运算符    C &= 2 等同于 C = C & 2
 801 ^=    按位异或且赋值运算符    C ^= 2 等同于 C = C ^ 2
 802 |=    按位或且赋值运算符    C |= 2 等同于 C = C | 2
 803 实例
 804 
 805 请看下面的实例,了解 C 语言中所有可用的赋值运算符:
 806 #include <stdio.h>
 807 
 808 int main()
 809 {
 810    int a = 21;
 811    int c ;
 812 
 813    c =  a;
 814    printf("Line 1 - =  运算符实例,c 的值 = %d\n", c );
 815 
 816    c +=  a;
 817    printf("Line 2 - += 运算符实例,c 的值 = %d\n", c );
 818 
 819    c -=  a;
 820    printf("Line 3 - -= 运算符实例,c 的值 = %d\n", c );
 821 
 822    c *=  a;
 823    printf("Line 4 - *= 运算符实例,c 的值 = %d\n", c );
 824 
 825    c /=  a;
 826    printf("Line 5 - /= 运算符实例,c 的值 = %d\n", c );
 827 
 828    c  = 200;
 829    c %=  a;
 830    printf("Line 6 - %= 运算符实例,c 的值 = %d\n", c );
 831 
 832    c <<=  2;
 833    printf("Line 7 - <<= 运算符实例,c 的值 = %d\n", c );
 834 
 835    c >>=  2;
 836    printf("Line 8 - >>= 运算符实例,c 的值 = %d\n", c );
 837 
 838    c &=  2;
 839    printf("Line 9 - &= 运算符实例,c 的值 = %d\n", c );
 840 
 841    c ^=  2;
 842    printf("Line 10 - ^= 运算符实例,c 的值 = %d\n", c );
 843 
 844    c |=  2;
 845    printf("Line 11 - |= 运算符实例,c 的值 = %d\n", c );
 846 
 847 }
 848 当上面的代码被编译和执行时,它会产生下列结果:
 849 Line 1 - =  运算符实例,c 的值 = 21
 850 Line 2 - += 运算符实例,c 的值 = 42
 851 Line 3 - -= 运算符实例,c 的值 = 21
 852 Line 4 - *= 运算符实例,c 的值 = 441
 853 Line 5 - /= 运算符实例,c 的值 = 21
 854 Line 6 - %= 运算符实例,c 的值 = 11
 855 Line 7 - <<= 运算符实例,c 的值 = 44
 856 Line 8 - >>= 运算符实例,c 的值 = 11
 857 Line 9 - &= 运算符实例,c 的值 = 2
 858 Line 10 - ^= 运算符实例,c 的值 = 0
 859 Line 11 - |= 运算符实例,c 的值 = 2
 860 杂项运算符
 861 
 862 下表列出了 C 语言支持的其他一些重要的运算符,包括 sizeof()、&、* 和 ? :。
 863 运算符    描述    实例
 864 sizeof()    返回变量的大小。    sizeof(a) 将返回 4,其中 a 是整数。
 865 &    返回变量的地址。    &a; 将给出变量的实际地址。
 866 *    指向一个变量。    *a; 将指向一个变量。
 867 ? :    条件表达式    如果条件为真 ? 则值为 X : 否则值为 Y
 868 实例
 869 
 870 请看下面的实例,了解 C 语言中所有可用的杂项运算符:
 871 #include <stdio.h>
 872 
 873 int main()
 874 {
 875    int a = 4;
 876    short b;
 877    double c;
 878    int* ptr;
 879 
 880    // & 和 * 运算符实例 
 881    ptr = &a;    // 'ptr' 现在包含 'a' 的地址 
 882    printf("a 的值是 %d\n", a);
 883    printf("*ptr 是 %d\n", *ptr);
 884 
 885    // 三元运算符实例 
 886    a = 10;
 887    b = (a == 1) ? 20: 30;
 888    printf( "b 的值是 %d\n", b );
 889 
 890    b = (a == 10) ? 20: 30;
 891    printf( "b 的值是 %d\n", b );
 892 }
 893 当上面的代码被编译和执行时,它会产生下列结果:
 894 a 的值是 4
 895 *ptr 是 4
 896 b 的值是 30
 897 b 的值是 20
 898 C 中的运算符优先级
 899 
 900 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
 901 例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。
 902 下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。
 903 类别     运算符     结合性 
 904 后缀     () [] -> . ++ - -      从左到右 
 905 一元     + - ! ~ ++ - - (type)* & sizeof     从右到左 
 906 乘除     * / %     从左到右 
 907 加减     + -     从左到右 
 908 移位     << >>     从左到右 
 909 关系     < <= > >=     从左到右 
 910 相等     == !=     从左到右 
 911 位与 AND     &     从左到右 
 912 位异或 XOR     ^     从左到右 
 913 位或 OR     |     从左到右 
 914 逻辑与 AND     &&     从左到右 
 915 逻辑或 OR     ||     从左到右 
 916 条件     ?:     从右到左 
 917 赋值     = += -= *= /= %=>>= <<= &= ^= |=     从右到左 
 918 逗号     ,     从左到右 
 919 实例
 920 
 921 请看下面的实例,了解 C 语言中运算符的优先级:
 922 #include <stdio.h>
 923 
 924 int main()
 925 {
 926    int a = 20;
 927    int b = 10;
 928    int c = 15;
 929    int d = 5;
 930    int e;
 931  
 932    e = (a + b) * c / d;      // ( 30 * 15 ) / 5
 933    printf("(a + b) * c / d 的值是 %d\n",  e );
 934 
 935    e = ((a + b) * c) / d;    // (30 * 15 ) / 5
 936    printf("((a + b) * c) / d 的值是 %d\n" ,  e );
 937 
 938    e = (a + b) * (c / d);   // (30) * (15/5)
 939    printf("(a + b) * (c / d) 的值是 %d\n",  e );
 940 
 941    e = a + (b * c) / d;     //  20 + (150/5)
 942    printf("a + (b * c) / d 的值是 %d\n" ,  e );
 943   
 944    return 0;
 945 }/*
 946 当上面的代码被编译和执行时,它会产生下列结果:
 947 (a + b) * c / d 的值是 90
 948 ((a + b) * c) / d 的值是 90
 949 (a + b) * (c / d) 的值是 90
 950 a + (b * c) / d 的值是 50
 951 */
 952 /*
 953 c 语句
 954 判断语句
 955 
 956 C 语言提供了以下类型的判断语句。点击链接查看每个语句的细节。
 957 语句                        描述
 958 if 语句                        一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
 959 if...else 语句                一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
 960 嵌套 if 语句                您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
 961 switch 语句                    一个 switch 语句允许测试一个变量等于多个值时的情况。
 962 嵌套 switch 语句            您可以在一个 switch 语句内使用另一个 switch 语句。
 963 ? : 运算符
 964 
 965 我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if...else 语句。它的一般形式如下:
 966 Exp1 ? Exp2 : Exp3;
 967 其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。
 968 ? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。
 969 
 970 
 971 
 972 C if 语句
 973  
 974 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
 975 语法
 976 
 977 C 语言中 if 语句的语法:
 978 if(boolean_expression)
 979 {
 980    // 如果布尔表达式为真将执行的语句 
 981 }
 982 如果布尔表达式为 true,则 if 语句内的代码块将被执行。如果布尔表达式为 false,则 if 语句结束后的第一组代码(闭括号后)将被执行。
 983 C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。
 984 流程图
 985 
 986 C 中的 if 语句
 987 实例
 988 *//*
 989 #include <stdio.h>
 990  
 991 int main ()
 992 {
 993    // 局部变量定义 
 994    int a = 30;
 995  
 996    //使用 if 语句检查布尔条件 
 997    if( a < 20 )
 998    {
 999        //如果条件为真,则输出下面的语句 
1000        printf("a 小于 20\n" );
1001    }
1002    else
1003    {
1004        printf("a不等于b \n"); 
1005    }
1006    printf("a 的值是 %d\n", a);
1007  
1008    return 0;
1009 }/*
1010 当上面的代码被编译和执行时,它会产生下列结果:
1011 a 小于 20
1012 a 的值是 10
1013 */
1014 /*
1015 #include <stdio.h>
1016  
1017 int main ()
1018 {
1019    //局部变量定义 
1020    int a = 100;
1021  
1022    //检查布尔条件 
1023    if( a == 10 )
1024    {
1025        // 如果 if 条件为真,则输出下面的语句
1026        printf("a 的值是 10\n" );
1027    }
1028    else if( a == 20 )
1029    {
1030        //如果 else if 条件为真,则输出下面的语句 
1031        printf("a 的值是 20\n" );
1032    }
1033    else if( a == 30 )
1034    {
1035        //如果 else if 条件为真,则输出下面的语句 
1036        printf("a 的值是 30\n" );
1037    }
1038    else
1039    {
1040        // 如果上面条件都不为真,则输出下面的语句
1041        printf("没有匹配的值\n" );
1042    }
1043    printf("a 的准确值是 %d\n", a );
1044  
1045    return 0;
1046 }
1047 */
1048 /*
1049 #include <stdio.h>
1050  
1051 int main ()
1052 {
1053    //局部变量定义 
1054    char grade = 'B';
1055 
1056    switch(grade)
1057    {
1058    case 'A' :
1059       printf("很棒!\n" );
1060       break;
1061    case 'B' :
1062    case 'C' :
1063       printf("做得好\n" );
1064       break;
1065    case 'D' :
1066       printf("您通过了\n" );
1067       break;
1068    case 'F' :
1069       printf("最好再试一下\n" );
1070       break;
1071    default :
1072       printf("无效的成绩\n" );
1073    }
1074    printf("您的成绩是 %c\n", grade );
1075  
1076    return 0;
1077 }
1078 
1079 */
1080 /*
1081 #include <stdio.h>
1082 int main ()
1083 {
1084    //*局部变量定义 
1085    int a = 100;
1086    int b = 200;
1087  
1088    //*检查布尔条件 
1089    if( a == 100 )
1090    {
1091        //如果条件为真,则检查下面的条件 
1092              if( b == 200 )
1093        {
1094           //*如果条件为真,则输出下面的语句 
1095           printf("a 的值是 100,且 b 的值是 200\n" );
1096        }
1097    }
1098    printf("a 的准确值是 %d\n", a );
1099    printf("b 的准确值是 %d\n", b );
1100  
1101    return 0;
1102 }
1103 */
1104 /*
1105 当上面的代码被编译和执行时,它会产生下列结果:
1106 a 的值是 100,且 b 的值是 200
1107 a 的准确值是 100
1108 b 的准确值是 200
1109  */
1110  
1111  /*
1112  C switch 语句
1113 
1114 C 判断 C 判断
1115 一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
1116 语法
1117 
1118 C 语言中 switch 语句的语法:
1119 switch(expression){
1120     case constant-expression  :
1121        statement(s);
1122        break; //可选的
1123     case constant-expression  :
1124        statement(s);
1125        break; //可选的
1126   
1127     //您可以有任意数量的 case 语句
1128     default : //可选的 
1129        statement(s);
1130 }
1131 switch 语句必须遵循下面的规则:
1132 switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
1133 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
1134 case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
1135 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
1136 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
1137 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
1138 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
1139 流程图
1140 
1141 C 中的 switch 语句
1142 实例
1143 */
1144 /*
1145 #include <stdio.h>
1146  
1147 int main ()
1148 
1149 {
1150    //局部变量定义  
1151    int number ; 
1152    printf("输入您的成绩:");
1153    scanf("%d",&number); 
1154    switch(number)
1155    {
1156        
1157    case 100 :
1158        printf("很棒!\n" );
1159        break;
1160       
1161    case 90 :
1162            printf("还可以!\n" );
1163       
1164       break;
1165        
1166    case 80 :
1167        
1168       printf("做得好\n" );
1169       
1170       break;
1171       
1172    case 60 :
1173        
1174       printf("您通过了\n" );
1175       
1176       break;
1177       
1178    case 50 :
1179        
1180       printf("最好再试一下\n" );
1181       
1182       break;
1183        
1184    default :
1185        
1186       printf("垃圾成绩\n" );
1187       
1188    }
1189    
1190 //   printf("您的成绩是 %d\n", number );
1191    
1192    return 0;
1193 }
1194 */
1195 /*
1196 当上面的代码被编译和执行时,它会产生下列结果:
1197 做得好
1198 您的成绩是 B
1199 */
1200 //#####################################################
1201 /*
1202 C do...while 循环
1203 
1204 C 循环 C 循环
1205 不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do...while 循环是在循环的尾部检查它的条件。
1206 do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。
1207 语法
1208 
1209 C 语言中 do...while 循环的语法:
1210 do
1211 {
1212    statement(s);
1213 
1214 }while( condition );
1215 请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。
1216 如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。
1217 */
1218 /*
1219 #include<stdio.h>
1220 int main()
1221 {
1222     //局部变量定义
1223     int a=10;
1224     //do 循环执行
1225     do
1226     {
1227         printf("a的值:%d\n",a);
1228         a++;
1229     } while(a<20);
1230     return 0;
1231 } 
1232 */
1233 /*
1234 C 嵌套循环
1235 
1236 C 循环 C 循环
1237 C 语言允许在一个循环内使用另一个循环,下面演示几个实例来说明这个概念。
1238 语法
1239 
1240 C 语言中 嵌套 for 循环 语句的语法:
1241 for ( init; condition; increment )
1242 {
1243    for ( init; condition; increment )
1244    {
1245       statement(s);
1246    }
1247    statement(s);
1248 }
1249 C 语言中 嵌套 while 循环 语句的语法:
1250 while(condition)
1251 {
1252    while(condition)
1253    {
1254       statement(s);
1255    }
1256    statement(s);
1257 }
1258 C 语言中 嵌套 do...while 循环 语句的语法:
1259 do
1260 {
1261    statement(s);
1262    do
1263    {
1264       statement(s);
1265    }while( condition );
1266 
1267 }while( condition );
1268 关于嵌套循环有一点值得注意,您可以在任何类型的循环内嵌套其他任何类型的循环。比如,一个 for 循环可以嵌套在一个 while 循环内,反之亦然。
1269 */
1270 /*
1271 #include<stdio.h> 
1272 int main()
1273 {
1274     
1275     int i;
1276     float j;
1277     /*
1278     for(i=2;i<100;i++)
1279         {for (j=2;j<=(i/j);j++)
1280             if (!(i%j))
1281                 break;
1282             if (j>(i/j))
1283                 printf("%d是质数\n",i);
1284         } 
1285         return 0;*/ /*
1286         printf("张黄就\t是帅\n ");
1287         scanf("%d %f",&i,&j);
1288         printf("%d %.1f",i,j);
1289         
1290         
1291 } */
1292 /*
1293 int 整数       %d
1294 float 浮点数   %f
1295 char 字符串    %c
1296 double         %m.nf
1297 \n 
1298 \t 
1299 */
1300 
1301 /*
1302 #include <stdio.h>
1303 int main()
1304 {
1305     int i,j;
1306     for (i=100;i<200;i++)
1307     {
1308         for (j=100;j<=(i/j);j++)
1309             if (!(i%j))
1310                 break;
1311             if (j>(i/j))
1312                 printf("%d是质数\n",i);
1313                 
1314     }
1315     return 0;
1316 }
1317 *//*
1318 #include<stdio.h>
1319 #include<math.h>
1320 int main()
1321 {
1322     int m,i,j,sum=0;
1323     for (m=101;m<300;++m)
1324     {
1325         for (i=2;i<m;++i)
1326         if (m%i==0) break;
1327         if (i>m)
1328         sum+=m;
1329     }
1330     printf("%d",sum);
1331 } 
1332 
1333 */
1334 
1335 
1336 
1337 /*
1338 #include <stdio.h>
1339 
1340 // 变量声明
1341 extern int a, b;
1342 extern int c;
1343 extern float f;
1344 
1345 int main ()
1346 {
1347   //变量定义 
1348   int a, b;
1349   int c;
1350   float f;
1351  
1352   // 实际初始化
1353   a = 10.00;
1354   b = 20;
1355   
1356   c = a + b;
1357   printf("value of c : %d \n", c);
1358 
1359   f = 70.0/3.0;
1360   printf("value of f : %f \n", f);
1361  
1362   return 0;
1363 }
1364 
1365 *//*
1366 #include <stdio.h>
1367 
1368 // 变量声明
1369 
1370 int main ()
1371 {
1372   //变量定义 
1373   int  number;
1374   printf("杨双炎= \n");
1375   scanf("%d",&y);
1376 //  if (x>=0)
1377 //      y=x+5;
1378 //  else
1379 //      y=-x+5;
1380     printf("杨双炎=\n%d    ",y);
1381       return 0; 
1382   }
1383 
1384 */
1385 //#include <stdio.h>
1386 //
1387 //// 变量声明
1388 //
1389 //int main ()
1390 //{
1391 //  //变量定义 
1392 ////  int x;
1393 //  float y;
1394 ////  double z;
1395 //  printf("请蒋哥您输入x= \n"); 
1396 //  scanf("%f",&y);
1397 //  printf("蒋哥您要的数字是 %f",y); 
1398 //  return 0; 
1399 //} 
1400 /*
1401 #include <stdio.h>
1402  
1403 int main ()
1404 
1405 {
1406    //局部变量定义  
1407    int number ; 
1408    printf("输入您的成绩:");
1409    scanf("%d",&number); 
1410    if (number>0)
1411         printf("你123 =%d" ,number);
1412     else
1413         if (number>-2)
1414             printf("456");
1415         
1416         else
1417             printf("789");
1418 
1419 } */
1420 /*     
1421 #include <stdio.h>
1422  
1423 int main ()
1424 {
1425     int i,j;
1426     for( i=1;i<=9;i=i+1)
1427     {
1428         for (j=1;j<=i;j++)
1429         printf("%d x %d = %d ",i,j,i*j);
1430         printf("\n"); 
1431         
1432     }
1433 //    printf("%d\n",i,j);
1434 }
1435 */
1436 //#include <stdio.h>
1437 // 
1438 //int main ()
1439 //{
1440 //    int S=0 ,i=1;
1441 //    while(i<=100)
1442 //    {
1443 //        S=S+i;
1444 //        i++;
1445 //    } 
1446 //     
1447 //    printf("S=%d",S);
1448 //    return 0;
1449 //}
1450 //
1451 
1452 
1453 //
1454 //#include <stdio.h>  头文件   
1455 // 
1456 //int mult (int n)     函数 
1457 //{
1458 //    static int init =1;    函数体 
1459 //    return init*=n; 
1460 //}
1461 //main()    主函数  
1462 //{
1463 //    int n;
1464 //    for(n=1;n<=5;n++)
1465 //        printf("%d,",mult(n)); 
1466 //} 
1467 
1468 //#include<stdio.h>
1469 //int main()
1470 //{
1471 //    float y,x,a;
1472 //    for (y=1.5f;y>-1.5f;y-=0.1f)
1473 //    {
1474 //        for (x=-1.5f;x<1.5f;x+=0.05f)
1475 //        {
1476 //            a=x*x+y*y-1;
1477 //            put char(a*a*a-x*x*y*y*y<=0.0f?"*":"");
1478 //        } 
1479 //        put char("\n");
1480 //    } 
1481 //    return 0;
1482 //} 
1483 // 
1484 
1485 
1486 //#include<stdio.h>
1487 //int main()
1488 //{
1489 //    float y, x, a;
1490 //    for(y=1.5f;y>-1.5f;y-=0.1f)
1491 //    {
1492 //        for (x=-1.5f;x<1.5f;x+=0.05f)
1493 //        {
1494 //            a=x*x+y*y-1;
1495 //            putchar(a*a*a-x*x*y*y*y<=0.0f?'*':' ');
1496 //        }
1497 //        putchar('\n');
1498 //    }
1499 //return 0;
1500 //}
1501  

 

posted @ 2020-05-11 18:37  一个土豆芽  阅读(511)  评论(0编辑  收藏  举报