助教:C语言问题收集--scanf()的一些常见问题;switch语句;for循环的执行顺序

scanf函数中的“格式控制”后面应当是变量地址,而不应是变量名。

输入数据时不能规定精度。

scanf("%7.2f",&a).这是不合法的。但是,scanf("%3d%3d",&a,&b)这样写可以。

如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。

scanf("%d,%d,%d",&a,&b,&c);

输入:3,4,5

scanf("%d:%d:%d",&a,&b,&c);

输入:3:4:5

scanf("%d*%d*%d",&a,&b,&c);

输入:3*4*5

scanf("%2d %*3d %3d",&a,&b);

输入:(用#号表示空格)

12#345#67

则将12赋给a,%*3d表示读入3位整数但不赋给任何变量。然后再读入2位整数67赋给b。也就是说第2个数据“345”被跳过。

*号表示本输入项在读入后不赋给相应的变量。

如果在%后面有一个“*”附加说明符,表示跳过它指定的列数。

但是,*如果在%后面,比如:

scanf("%d*%d*%d",&a,&b,&c);

输入:3*4*5

这个时候的*号不会跳过一个指定列数的数据,在输入的时候,在对应的位置输入*号即可。

%lf与%f有什么不同。

l 用于输入长整型数据(可用%ld,%lo,%lx,%lu)以及double型数据(用%lf或%le)

double a;

scanf("%lf",&a);//不能用scanf("%f",&a);

printf("%lf",a);//也可以用printf("%f",a);

float b;

scanf("%f",&a);//不能用scanf("%lf",&a);

printf("%f",a);//也可以用printf("%lf",a);

return 0;表示什么意思?

函数的返回值,可以根据需要返回,不一定是0,当需要返回值且对返回值没有什么要求时,可以写return 0;

int i=123;unsigned n=456;double a=12.34567;

printf("%4d\t%7.4f\n\t%lu\n",i,a,n);

输出:(用#号表示空格)

#123####12.3457

########456

‘\t‘为水平制表符,占8位。

若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是

A switch(x)

{case 1.0:printf("*\n");

case 2.0:printf("**\n");

}

B switch((int)x);

{case 1:printf("*\n");

case 2:printf("**\n");

}

C switch(a+b)

{case 1:printf("*\n");

case 2+1:printf("**\n");

}

D switch(a+b)

{case 1:printf("*\n");

case c:printf("**\n");

}

//switch后面的表达式必须是整数或者枚举类型。

//case后面的表达式必须为整型常量表达式。

//case后面的表达式必须为常量值。

//switch表达式后面不需要分号。

答案选C。

已知字母A的ASCII为65,一下程序运行后的输出结果为:

void main()

{

char a,b;

a=‘A‘+‘5‘+‘3‘;b=a+‘6‘-‘2‘;

printf("%d,%c\n",a,b);}

‘A‘,‘5‘,‘3‘,‘6‘,‘2‘均是字符常量。转化为ASCII码值进行计算。

a=‘A‘+‘5‘+‘3‘=65+53-51=67

b=a+‘6‘-‘2‘=67+54-50=71;(ASCII为71的字符是G)

输出:

67,G

在原来的题目的基础上,如果有:char c;c=a+‘1‘;

则 c=a+‘1‘=67+49=116(ASCII为116的字符是t)

int *p;

p=NULL;p=0;p=‘\0‘;这三条语句含义相同,均表示p为0。值得注意:p的值为NULL与未对p赋值是两个不同的概念。前者是有值的(值为0),不指向任何变量,后者虽未对p赋值但不等于p无值,只是它的值是一个无法预料的值,也就是p可能指向一个事先未指定的单元。

for循环的执行顺序

for循环的执行顺序用如下表达式:

for(exp1;exp2;exp3)

{   exp4; }

执行的顺序应该是:

1)第一次循环,即初始化循环。

首先执行表达式exp1(一般为初始化语句);再执行exp2(一般为条件判断语句),判断exp1是否符合exp2的条件;如果符合,则执行exp4,否则,停止执行;

2)第N(N>=2)次循环。

首先执行exp3,然后判断在exp3是否符合exp2的要求;如果符合,则继续执行在exp4,否则,停止执行。

总结:

总的来说,执行的顺序是一致的。先条件判断(exp2),再函数体执行(exp4),最后for执行(exp3)。往复。区别在于,条件判断的对象。第一次判断时,对象为初始化语句(exp1),而后面的判断对象为执行后的结果(exp3)。

printf();语句编译的时候是从右向左的。输出的时候再从左向右。

时间: 2024-10-26 14:31:54

助教:C语言问题收集--scanf()的一些常见问题;switch语句;for循环的执行顺序的相关文章

C语言格式化之scanf

1.       格式输入函数的一般形式 函数功能:用于接收从键盘上输入的数据,输入的数据可以是整型.实型和字符型等. 一般形式:scanf(“格式控制字符串”,变量地址列表): 格式控制字符串:用于控制输入数据格式,必须以引号引导,内容由一个或多个格式控制字符组合而成,也可以含有非格式控制字符,非格式控制字符称为普通字符.普通字符按原样在对应位置输入. 变量地址列表:用于指定存放数据的变量地址.如果需要给多个变量输入数据,则各变量地址要用逗号隔开.变量地址表示方式是:&变量名.例如,&a

C语言 05-printf和scanf函数

本文目录 一.printf函数 二.scanf函数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 一.printf函数 这是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据. 1.用法 1> printf(字符串) printf("Hello, World!")

C语言打印输出,scanf使用注意事项,小技巧

 今天看一帖子,赵忠大哥的回复挺经典也很有用,记录下来! 1.在每个最后不带\n的printf后面加fflush(stdout); 2.在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);另外请检查scanf的返回值. 3.在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题. C语言打印输出,scanf使用注意事项,小技巧

C语言中关于scanf函数的用法

scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. 其调用格式为: scanf("<格式化字符串>",<地址表>); scanf()函数返回成功赋值的数据项数,出错时则返回EOF. 其控制串由三类字符构成

SQL语言逻辑执行顺序

SQL语言逻辑执行顺序 2012-12-18 16:18:13 分类: 数据库开发技术 查询的逻辑执行顺序 FROM < left_table> ON < join_condition> < join_type> JOIN < right_table> WHERE < where_condition> GROUP BY < group_by_list> WITH {cube | rollup} HAVING < having_c

go语言switch语句用法

switch是最灵活的一种控制语句,在使用switch时候,需要注意: --左花括号"{"必须与switch处于同一行 --条件表达式不限制为常量或者整数 --单个case中,可以出现多个结果选项 --与C语言等规则相反,G0语言不需要break来明确退出一个case --只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case --可以不设定switch之后的条件表达式,在此种情况下,整个switch结构与多个if....else的逻辑作用等同 --可以

C语言-switch语句

switch (表达式的值) { case 1: 语句1 break; case 2: 语句2 break; case 3: 语句3 break; case 4: 语句4 break; ...... default: 默认语句 break; 1.适用于离散值的开关判断,可以转换成一段连续的范围 2.注意case穿透,break的使用. 3.可以把各个case值定义为enum枚举或者使用宏定义定义别名 1.使用switch语句完成:输入一个简单的两个数字加减乘除运算的式子,使用switch通过转换

【好程序员笔记分享】C语言之switch语句

ios培训------我的c语言笔记,期待与您交流! #include <stdio.h> /* switch (数值) { case 数值1: 语句1; break; case 数值2: 语句2; break; default : 语句3; break; } */ int main() { //int a = 10; // break:退出整个switch语句 // 如果case后面没有break,就会执行后面所有case中的语句,直到遇到break为止 /* int b = 10; swi

[Go语言]从Docker源码学习Go——if语句和map结构

if语句 继续看docker.go文件的main函数 if reexec.Init() { return } go语言的if不需要像其它语言那样必须加括号,而且,可以在判断以前,增加赋值语句 语法 IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block ) ] . 例子 if x := f(); x < y { return x } else i