知识点1:c语言语句

关于一些语句

1,在程序中应将复合语句看成是单条语句,而不是多条语句。
2,printf函数的格式控制:
%-m.nf
m为指定的数据长度(包括小数点),n为小数部分的长度,-号为左对齐
(若m小于数据位数,则按实际位数全部输出;若m大于数据位数,则左端补空格;若m小于n,则m自动取n)

%-m.ns
m为指定的字符串长度,输出占m列,但只取字符串中左端n个字符,这n个字符输出在m列中的右侧,左补空格。-号为左对齐。
(若m小于字符串长度,则将原字符串全部输出,否则左补空格;若m小于n,则m自动取n)

%-m.ne(以指数形式输出实型数据)
输出的数据占m位(指数形式中的指数符号“+”算一位),其中有n位小数

%o(以八进制的形式输出)
以8进制形式输出,将符号位也当作数的一部分而输出了,因此用%o输出可以得到内存中的实际存储情况
3,scanf函数的格式控制:
%*md
“ * ”表示该输入项读入后不赋予相应的变量,即跳过该输入值。例如:

scanf("%d%*d%d", &a, &b);//输入12 23 34 得到a=12,b=34

m即指定的输入数据的宽度(域宽),域宽应为正整数。例如:

scanf("%5d", &x);//输入12345678,只把12345(前m位)赋给x,其余部分被截去
scanf("%4d%3d", &a, &b);//输入12345678,把1234赋给a,把567赋给b,剩余的8被截去

若输入的数据格式与格式控制符不同,则该条语句无效,跳过该语句,但缓冲区没有变化。

	int a = 99, b = 99;
	char d = 'a', e = 'a';
	//输入‘b’,则缓冲区中含有'b'和换行符 两个字符 
	scanf("%d", &a);
	scanf("%d", &b);//读取类型为%d,不符合,所以跳过接收 
	scanf("%c", &d);
	scanf("%c", &e);//换行符被e接收 
	printf("%d,%d,%c,%d", a, b, d, e);
	//输出 99,99,b,10 (换行符的ASCII码为10) 
	int a = 1;
	char b = 'b';
	//输入ac 
	scanf("%d%c",&a,&b);//读取类型为%d,与‘a’不符,因此接收失败,本条语句结束,ac仍保留在缓冲区内 
	printf("%d\t%c\n",a,b);//输出1	b 

4,return语句
当函数执行到return语句时,就按照相应要求返回值给主调函数,即使被调函数后面还有语句也不再执行,因此return语句也可看作是函数执行的结束语句。
return语句的后面可以是一个表达式。

5,goto语句
可以在语句前面利用标识符对该语句进行标记(相当于给某条语句起了个名字)例如:label:i ++;(命名要符合标识符命名规则)
goto语句的一般格式为:goto 语句标记;
例如:

label:i ++;//冒号!
goto label;

goto语句一般的用途有:与if结合构成循环语句、跳出循环体。

猜你喜欢

转载自blog.csdn.net/Shao_yihao/article/details/112971809