C语言程序设计——基本语句

控制语句

用于完成一定的控制功能:条件语句、和循环语句

  • if…else
  • for
  • while
  • do…while
  • continue
  • break
  • swich
  • return
  • goto

函数调用语句

由一个函数调用加一个分号构成

  • eg:printf(“this is a c programme”);

一. 控制台输入输出语句

头文件stdio.h内置了几种输入输出函数:
- scanf()和 printf()
- getchar() 和 putchar()
- gets() 和 puts()

1. 数据格式的输入与输出

1.1 格式化输出函数 printf()
  • 功能:是向终端(或者系统隐含指定的输出设备)按指定格式输出若干数据

  • printf()函数是从右开始输出的

  • printf ()函数的一般形式
    在这里插入图片描述
    格式说明:“%+附加格式+格式字符”
    在这里插入图片描述

  1. 附加格式
附加格式说明字符说明
-输出的数字或字符以左对齐,右边填空格
0(数字)输出的空位用0填充。
m(一个正整数)输出数据的字段宽度。如果实际位数多于m,按实际位数输出;如果实际位数少于m,则补以空格或0。
.n(一个正整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数。
l(字母)输出长整型整数
举例:
	int a, float b
	scanf(%2d%f, &a, &b)
	从键盘输入876 543.0
	结果为:87和6.0

	double x=123.456
	printf("%6.2f,%3.0f\n",x ,x)
	输入结果为:123.46,123
	原因为:%6.2f表示输入6位宽度,2位小数,截取小数位0.006四舍五入;%3.0f表示输出3位宽度,0位小数

	printf("%5d", 123);
	输出:_ _ 123
	printf("%2d", 123);
	输出:123,即格式长度不足,按实际长度输出
  1. 格式字符

    %格式字符——意义

    %d —— 以带符号的十进制形式输出整数

    说明:
    对应是int
    %ld对应是long int
    

    %o —— 以无符号的八进制形式输出整数

    说明:
    将内存单元中的二进制数(包括符号位)直接转换成八进制数输出。
    

    %x —— 以无符号的十六进制形式输出整数

    说明:
    将内存单元中的二进制数(包括符号位)直接转换十六进制数输出。
    

    %u —— 以无符号的十进制形式输出整数

    说明:
    将内存单元中的二进制数(包括符号位)直接转换十进制数输出。
    

    %c —— 以字符形式输出单个字符

    说明:			
    输出一个字符。输出数据可以是单个字符,或一个范围在0~255之间的整数。
    对应的是char
    

    %s —— 输出字符串

    说明:
    将整个字符串一次输出
    

    %f —— 以小数点形式输出单、双精度实数

    说明:输出带小数点的形式输出浮点数,既可以是float也可以是double
    对应的是float
    %lf对应的是double
    
    #include <stdio.h>
    int main(void)
    {
    	float a=1.1234567890;
    	double b=1.1234567890;
    	printf("%.10f %.10lf", a, b);
    	return 0;
     }
    /* 
    总结:
    double与float类型最默认输出小数位数都取6位
    float 为单精度,有效数字为6~7位
    double 为双精度,有效数字为15~16位
     
    */
    

    %e —— 以标准指数形式输出单、双精度实数

    说明:
    输出数据共占13位
    其中整数部分为1位非零数字,小数点占1位,小数部分为6位,指数部分e占1位,指数符号占1位,指数为3位。
    			
    若输出数据为负数,还应增加一位整数部分的符号位。
    

    在这里插入图片描述%g —— 选用输出宽度较小的格式输出实数

    说明:
    根据数值的大小,自动选择用f格式或e格式输出实数。输出时选择占宽度较小的一种,且不输出无意义的零。
    
  • 为什么需要输出控制字符

      1. 0 1组成的代码可以表示数据,也可以表示指令
      2. 如果0 1组成的代码表示的数据的话,那么同样的0 1代码组合以不同的输出格式输出就会有不同的输出结果
    
  • 使用printf的注意事项

      1. 如需输出双引号,应在“格式控制”中表示为转义字符的形式并用单引号引起来,即“\””。
      2. 如需输出字符“%”,在“格式控制”中用连续两个“%”即可。 
      	如:printf(“%d%%”,10);
      3. 当“格式控制”中格式符个数少于输出表中的输出项时,多余的输出项不予输出。
      4. 当“格式符”多于输出项时,多出的格式符输出结果为不定值。
    
1.2 格式化输入函数scanf()
  • 功能:scanf函数只能在控制台程序中使用,有窗口的界面程序无法通过scanf接收按键。当控制台中出现闪烁的光标时,表示程序在等待用户输入数据。在控制台程序中,一般以回车键代表数据输入完毕,下达命令,指示程序开始工作,然后以存入以输入参数的值为地址的变量中。scanf函数可以接收多个任意类型的数据,但需严格遵守format格式,否则会出错。

    注意:如果数据不止一个,应在数据之间用一个或多个空格间隔,也可以用回车键或跳格键tab间隔。

  • scanf()函数的一般形式

      注:scanf()函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度
    

在这里插入图片描述

  • scanf()中的格式控制
    “%格式字符”——意义

    格式符说明
    d用于输入十进制整数
    o用于输入八进制形整数
    x用于输入十六进制整数
    c用于输入一个字符
    s用于将字符串一次输入到一个字符数组中。输入时以非空白字符开始, 第一个空白字符结束。字符串以串结束标志’\0’作为其最后一个字符。(字符串长度不包括最后一个空字符’\0’)
    f用于输入实数。输入时用小数点形式或指数形式均可。(输入双精度必须用%lf,否则不能正常输入)
    e与f作用相同
  • scanf()中的附加格式字符
    “% 附加格式字符 格式字符”——意义

附加格式字符说明
*表示本输入项在输入后不赋给相应的变量。(不存储)
l(字母)用于输入长整型和双精度实型数据
m(一个正整数)用于指定输入数据的长度
读入非字符型数据时,遇到空白字符。有宽度指示时,读入到相应的宽度。
如%4d,则只解析4个数字即认为读入这个整数完毕。

输入流会按照格式依次读取,多余的下次输入继续读入(单次程序运行)
  • 使用scanf()函数时注意事项

    1. 如果格式字符串中有非空白字符,也就是除了格式控制字符和空白字符之外的字符,则用户在输入的时候一定也要输入这些字符。则将出现不匹配格式控制字符串的情况。为了使用户正确输入,编程时一定要考虑到用户是否清楚如何输入,最好在需要用户输入前提示如何输入的格式。

       例如,"%d,%d"使scanf()先读入一个整数,接着必须要读入一个逗号,读入到逗号后,表示格式匹配,
       将读入的逗号丢弃,而不像读入的整数存储到某个内存空间。
       读入逗号后,接着读入另一个整数。如发现不能匹配格式字符串,比如没有读到逗号,scanf()返回,读入失败。
      
    2. 在用%c格式符时,空格字符和转义字符都被当作有效字符输入

    3. 以回车作为下达开始解析命令。整个输入以回车结束。如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符。若实际输入数据多于输入项的个数,多于的数据将留在缓冲区备用,作为下一次输入操作的数据。

    4. 在输入数据是,遇到以下情况时认为一次输入结束:空格、回车、Tap键,上述字符统一称为“间隔符”。

    5. 注意变量表列中,应该是变量的地址。变量的地址通过求地址符&得到。

    6. 使用scanf之前最好先用printf提示用户以什么样的方式输入

    7. scanf中尽量不要使用非输入控制符,尤其不要用 \n

2. 单个字符数据的输入输出

有些时候,仅仅为了在显示器屏幕上打印或从控制台获取一个字符,此时使用功能强大的printf与scanf函数,则显得过于繁琐,C提供了一个库函数putchar/getchar来完成这个简单的任务。

2.1 单个字符输出函数putchar()
  • 功能:putchar()函数作用在显示器上打印单个字符
  • 一般格式:putchar(字符数据);
  • 可以输出的字符类型
    1. 字符数据可以是一个字符型变量

       如:char var = 'a';
           putchar(var);		//将字符型变量var的值输出在屏幕上
      
    2. 字符数据也可以是一个字符常量

       如:putchar('a');	输出结果:a
      
    3. 字符数据还可以是一个整数。整数可以是十进制整数。

       如:putchar(97);	输出结果:a		//将ASCII码值为65的字符输出在屏幕上
      
    4. 字符数据还可以是一个表达式,只要结果是255以内的整数即可。

       如: putchar('a'+25);	输出结果:z
      
    5. 字符数据可以是转义字符。

       如: putchar('\n');	结果输出一个换行。
       	  putchar('\007'); 	输出一个提示音
      
#include <stdio.h>

int main(void){
	char a = 'B',b = 'O', c = 'Y';
	putchar(a);
	putchar(b);
	putchar(c);
	putchar('\n');
	
	printf("--------------------\n");
	
	int d = 66, e=79, f = 89;
	putchar(d);
	putchar(e);
	putchar(f);
	putchar('\n');
	putchar('\101');
	
	return 0;
} 


BOY
--------------------
BOY
A
2.2 单个字符输入函数getchar()
  • 功能:getchar()函数作用是得到用户终端输入(读入)的一个字符
  • getchar()函数一般格式:
	char ch;
	ch = getchar();
	printf("%c",ch);
#include<stdio.h>

int main(void){
	char a,b,c;
	
	a = getchar();
	b = getchar();
	c = getchar();
	
	putchar(a);
	putchar(b);
	printf("%c", c);
	putchar('\n'); 
	
	return 0;
}

BOYA
BOY

3. 字符串数据输入输出

3.1 字符串输出函数puts()
  • 功能:在显示器屏幕上输出一个字符串,并换行(光标移动到下一行),会以’\0’字符作为该字符串的结束。

  • 因为是函数,所以要传入的参数是字符数组的变量名

  • 一般形式:
    puts(字符串);
    或者
    puts(字符数组名或指针)

      例如:puts("你好");	输出结果:你好
    
3.2 字符串输入函数gets() (从用户终端读入字符串)
  • 功能:从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 ‘\0’ 空字符,并由此来结束字符串。

  • 返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

  • 使用gets()函数的注意事项

      scanf输入字符串可以配合%s格式,但缺点是当遇到字符串中有空白或tab字符时,会自动视为串输入结束。
      因此不适合输入包含空白/tab字符的字符串。这时gets()函数就可解决该问题。
    
      gets()函数会将用户整段字符串响应到标准输出设备(屏幕)上,当用户按下【Enter】键时,会读取缓冲区的所有字符并存放到指定字符数组中。
      比较适合应用在多字符,中文字或长字符串的读取。
    
  • 例子

#include <stdio.h>
 
int main()
{
    char s[50];
 
    printf("Enter a string: "); 
    gets(s);
 
    printf("The string you entered: ");    
    puts(s);    
}

二. 文件的读写

1. 读写一个字符

字符写函数 fputc(c,fp);
字符读函数 fgetc(fp);

2. 块读写

二进制写函数 fwrite(buffer,size,count,fp);
二进制读函数 fread(buffer,size,count,fp);
格式化写函数 fprintf(文件指针,格式字符串,输出项表列);
格式化读函数 fscanf(文件指针,格式字符串,地址参数列表);

3. 其他读写函数

磁盘文件写函数 putw(10,fp);
磁盘文件读函数 getw(fp);
文件字符串写函数 fputs(字符串,文件指针);
文件字符串读函数 fgets(字符串数组名,n,文件指针);

表达式语句

由一个表达式加一个分号构成。

最基本的语句——赋值语句

1. 赋值运算符

= 为赋值运算符:将一个数据赋值给一个变量

  • a = 3; 把常量3赋值给变量a
  • 赋值运算符按照自右向左的结合顺序。

2. 复合的赋值运算符

a += 3; 等价于 a= a+3;
x* = y+8 等价于 x=x*(y+8)
x%=3 等价于 x=x%3

3. 赋值表达式

形式: 变量 赋值运算符 表达式
作用:将一个表达式的值赋给一个变量

  • eg:a = 3*5
  • 变量可以作为左值,而算术表达式a+b不能作为左值,常量也不能作为左值。
  • a=b=c=5 a,b,c都是5
  • a=5+(c=6) a是11,c是6
  • a=(b=4)+(c=6) a的值为10,b值为4,c值为6

4. 赋值过程的类型转换

两侧类型一致直接赋值
两侧类型不一致

  • 低精度赋值到高精度,不影响
  • 浮点型赋值给整型,会丢失精度(发生截断)
  • 字符型赋值给整型,将字符的ASCII代码赋给整型变量;i=‘A’,i的值为65

空语句

  • 作为流程转向点,也可以用来作为循环语句中的循环体

复合语句

用{}把一些语句和声明括起来成为复合语句(语句块)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值