C语言学习之二——顺序程序设计

  1. 程序的基本结构(从程序流程角度):1)顺序结构;2)分支结构;3)循环结构

  2. C语言的程序功能是由执行语句实现的,语句可分为5类:1)表达式语句;2)函数调用语句;3)控制语句;4)复合语句;5)空语句
    1)表达式语句:由表达式加上分号”;”组成
    一般形式为:表达式 ;
    表达式语句的目的就是计算表达式的值。
    2)函数调用语句:由函数名、实际参数加上”;” 组成
    一般形式为:函数名(实际参数表);
    执行函数语句就是调用函数体并把实际参数赋予函数定义中的参数形式,然后执行被调用函数体中的语句,求取函数值。
    例,printf(“This is an example!”); 这里调用库函数printf(),来输出字符串。
    3)控制语句:用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分为:(1)条件判断语句:if语句、switch语句; (2) 循环执行语句:do while 语句、while语句、for语句; (3) 转向语句:break语句、goto语句、continue语句、return语句。
    4)复合语句:把多个语句用括号{}括起来组成的一个语句为复合语句(注:应把复合语句看成是单条语句,而不是多条语句。)

    例,{
    int a, b, c;
    a = 1;
    b = 2;
    c = a + b;
    printf(“%c”, c);
    } 这就是一条复合语句

    5)空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作控循环体。

    例, while(getchar() != ‘\n’)
    {
    ;
    } (本语句的功能是,只要从键盘输入的字符不是回车,则重新输入)

  3. 赋值语句
    给变量赋初值和赋值语句的区别:给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其他同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。(注:在变量说明中,不允许连续给多个变量赋值,例如,int a = b = c = 1;是错误的,应该是int a =1, b = 1, c = 1;)
    赋值表达式和赋值语句的区别:赋值表达式是一种表达式,他可以出现在任何语序表达式出现的地方,而赋值语句则不能。(例, 合法语句 if((x = y + 5) > 0) z = x;)(非法语句if((x = y + 5;) > 0): z = x;)

  4. 数据输入输出概念及在C语言中的实现
    1)在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。
    2)在使用C语言库函数时,要用预编译命令#include 将有关“头文件”包含到源文件中。
    (例如, #include<stdio.h>或#include”stdio.h”(注:是standard input & output的意思))
    3)因为printf() 和scanf()函数使用频繁,系统允许在使用这两个函数时不加#include<stdio.h>或#include”stdio.h”(会warning,但是为了养成好的编写程序习惯,要写上)

    • putchar() 函数:是字符输出函数,其功能是在显示器上输出单个字符。
      一般形式是:putchar(字符变量); (注:对控制字符则执行控制功能,不在屏幕上显示。且在使用前要调用“stdio.h”头文件)

    • getchar()函数:功能是从键盘上输入一个字符。 一般形式为:getchar(); (通常情况下会把输入的字符赋值给一个变量,即 char a; a = getchar();) (注:getchar()使用不需要调用头文件)

    • printf()函数:使用printf()函数时需要注意输出列表中的求值顺序。不同的编译器不一定相同,可以从左到右,也可以从右到左。

<pre>
/#include<stdio.h>
/void main()
{
int i = 8;
printf("%d, %d, %d, %d, %d, %d\n",++i, --i, i++, i--, -i++, -i--);
}
//输出:8, 8, 7, 8, -7, -8
</pre>

<pre>
/#include<stdio.h>
void main()
{
int i = 8;
printf("%d, ", ++i);
printf("%d, ", --i);
printf("%d, ", i++);
printf("%d, ", i--);
printf("%d, ", -i++);
printf("%d\n", -i--);
}
//输出:9, 8, 8, 9, -8, -9
</pre>

printf()函数的格式字符串:
1)类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:


image.png

2)标志:标志字符为-、+、#、空格四种,其意义下表所示:


image.png
  1. 输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
  2. 精度: 精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
  3. 长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
  • scanf()函数:称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量中。(注:不能显示非格式字符串,格式字符串(如%c, %d等)是为了承接字符)
    一般形式:scanf(“格式控制字符串”, 地址列表) (注:随不强制要求加头文件”stdio.h”, 但是因为书写习惯保持要加上)

<pre>
/#include<stdio.h>
void main()
{
char a;
scanf("%c", &a); //(在gcc中,如果%c前面加上非格式字符串,那么即使输入任何合法字符,在printf时都无法显示,而且不会报错。)
//(在这里,&a 表示变量a的内存地址)
printf("This is a char: %c \n", a);
}
</pre>
(变量值和变量的地址的关系是:变量的地址(&a)是变量a对应的内存空间的地址,而在内存空间中存储的是变量的值,因此,要找变量的值必须先找变量地址,然后根据变量地址得到变量的值。 在赋值表达式中,不能直接写&a = 123,而应写a = 123。 这里的”&”指的是取地址运算符。)

scanf()函数注意事项:
1) scanf()函数没有精度控制,所以 scanf(“%5.2f”, &a) 是非法的;
2)scanf()函数中要求给出变量地址,如给出变量名则会出错,如scanf(“%f”, &a)是合法的。
3)在输入多个数值数据时,若格式控制中没有非格式字符串作输入数据之间的间隔则可用空格,Tab或回车作为间隔(C语言编译时碰到空格,Tab或回车或者非法数据时(即不符合要求或规范的输入数据),即认为该数据结束。)
4)在输入字符数据时,若格式控制字符串中无非格式字符,则认为所有输入的字符均为有效字符。

//例
<pre>
/#include<stdio.h>
void main()
{
char a, b, c;
scanf("%c%c%c", &a, &b, &c);
printf("There are chars: %c, %c, %c \n", a, b, c);
}
//输入:a b c
//输出:a, , b (注:这里的空格’ ’也是char类型所以为有效字符)
</pre>

5)如果格式控制字符串中有非格式字符则输入时也要输入该非格式字符串(否则不能正确输出)

//例
<pre>
/#include<stdio.h>
void main()
{
char a, b, c;
scanf("%c, %c, %c", &a, &b, &c);
printf("There are chars: %c, %c, %c \n", a, b, c);
}
//输入:a, b, c
//输出:a, b, c
//输入:a b c
//输出:a, ,
</pre>

scanf()函数的格式字符串: 一般形式为:%[*][输入数据宽度][长度]类型(注:方括号[]为任选项)
1)类型:表示输入数据的类型,其格式和意义如下表:


image.png

2)“*” 符:表示该输入项读入后不赋予相应的变量,即跳过该输入值。

//例
<pre>
/#include<stdio.h>
void main()
{
int a, b;
scanf("%d, *%d, %d", &a, &b);
printf("This is a number: %d, %d \n", a, b);
}
//输入:1, 2, 3
//输出:This is a number: 1, 3
</pre>

3)宽度: 用十进制整数制定输入的宽度(即字符数)。

//例
<pre>
/#include<stdio.h>
void main()
{
int a, b;
scanf("%4d%4d", &a, &b);
printf("This is a number: %d, %d \n", a, b);
}
//输入:12345678
//输出:This is a number:1234, 5678
</pre>

<pre>
/#include<stdio.h>
void main()
{
int a;
scanf("%4d", &a);
printf("This is a number: %d \n", a);
}
//输入:12345678
//输出:This is a number: 1234 (只截取有效的4位数)
</pre>

4)长度:长度格式符为l和h,l表示输入长整形数据(如%ld)和双精度浮点数(如%lf); h表示输入短整型数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,603评论 3 71
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 2,897评论 0 6
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,423评论 3 44
  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 3,892评论 2 13
  • 雾锁天津卫 2016-12-29, 2016倒数第三天。 一行人从烟台经青岛来到天津。下飞机时,天气略寒,尚能看到...
    冀泰来阅读 276评论 3 1