聪智学校
A)12a34b
一般形式:%[*][输入数据宽度][长度]类型 *表示该输入项,读入后不赋予相应的变量。 输入数据宽度:用十进制数指定输入的字符数。
和整型两种类型,其他数据类型不可以。)整型和字符型之间通过ASCALL可以相互转化。 例6:(2011-03-12)有以下程序 (说明:字符0的ASCII码值为48) main()
{ char c1,c2;
scanf(\c2=c1+9;
printf(\
}若程序运行时从键盘输入48<回车>,则输出结果为 (09)。
【解析】输入48,则c1=48,c2=48+9,以字符输出c1和c2,则为输出ASCII码为48和57对应的字符,分别为0和9。
例4:(2010-09-07)有以下程序 #include
scanf(“-%ld”,&x,&y); printf(“%d\\n”x+y);
}程序运行时输入:1234567程序的运行结果是 34579 。
【解析】-输入的数据宽度为2,x的值为12,y的值为34567,x+y=34579。 例5:(2009-04-16)若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正确的输入语句是(C)
A) scanf(“%f%f”,x,y); B)scanf(“%f%f”,&x,&y); C)scanf(“%lf%le”,px,py); D)scanf(“%lf%lf”,x,y);
【解析】A、D项地址列表,应为&x,&y;x、y为double型,格式控制字符串不是%f%f,故B项错误。 ?
当定义的变量类型和scanf中“格式符”类型不一致时(这里只限定在字符型
20.知识点:字符输出函数putchar()
一般形式:putchar(?a?);putchar(?\\101?);
21.知识点:字符输入函数getchar()
一般形式:getchar();或ch=getchar(); 例1:(2010-03-15)有以下程序 #include
scanf(“%c%c”,&a,&b); c=getchar(); d=getchar(); printf(“%c%c%c%c\\n”,a,b,c,d);
}当执行程序时,按下列方式输入数据(从第1列开始,
第 11 页 共 61 页
聪智学校
12
{ ?
while( getchar()!='\\n'); ?
则输出结果是(B) }以下叙述中正确的是(C)
A)此while语句将无限循环 A)1234 B)12 C)12 D)12
B) getchar()不可以出现在while语句的条件表达式中
3 34
C)当执行此while语句时,只有按回车键程序才能继续执行
【解析】以%c格式读取一个字符,以getchar()形式也是读取一个字符。空格会被D)当执行此while语句时,按任意键程序就能继续执行 当作字符赋值给变量。所以,a=?1?,b=?2?,c=?\\n?,d=?3?。 【解析】while条件表达式getchar()!='\\n'只要输入的字符不是回车,就一直执行循? getchar经常作为while循环条件,判断输入哪一个字符时,循环结束。例如,环,而循环内是一个空语句,所以按回车键程序才能继续执行,选择C。
输入字符串,直到输入‘0’,程序结束,则可写成while( getchar()!='0') 例2:(2011-03-26)有以下程序段 main()
第二课 选择结构与循环结构
第 12 页 共 61 页
聪智学校
本课重要知识点:
1.知识点:if语句
第 13 页 共 61 页
聪智学校
? if(表达式),其中表达式可以是任意合法的C语言表达式。
例1:(2011-09-19)下列条件语句中输出结果与其他语句不同的是(D) A.if(a) printf(“%d\\n”,x); else printf(“%d\\n”,y); B.if(a==0) printf(“%d\\n”,y); else printf(“%d\\n”,x); C.if(a!=0) printf(“%d\\n”,x); else printf(“%d\\n”,y);
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t; printf(\}
【解析】x=10,y=20,所以x==y为false,t=x;不执行,直接执行x=y;y=t;x为20,y为0。注意和if(x==y){t=x;x=y;y=t;}区别。 ?
当多个if(表达式)单分支形式并行出现时,其执行顺序是:先判断第一if单分
D.if(a==0) printf(“%d\\n”,x); else printf(“%d\\n”,y);
支的条件,如果为真,执行其后面的语句,执行完后,继续向下执行。判断第
【解析】作为if语句的条件,a等价于a!=0,因此 A和C是等价的。
二个if单分支语句,依次类推。如果第一个if表达式的值为假,则不执行其例2:(2011-03-26)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值
的叙述中正确的是(D) 后的语句,而去判断第二个if单分支条件。 A)必须是逻辑值 B)必须是整数值 C)必须是正数 D)可以是任意合法的数值 例1:(2011-03-26)有以下程序 【解析】表达式不限于关系表达式、逻辑表达式,也可以是任意的数值类型,其中main() 非0为真,0为假。故选D。 { int x;
scanf(\? 对于单个if语句,其后跟随的受if控制的只能是1个语句或者是1个复合语
if(x>15) printf(\
句。
if(x>10) printf(\
例1:(2009-09-17)设有定义:int a=1,b=2,c=3;以下语句中执行效果与其它三个不
if(x>5) printf(\
同的是(C) }若程序运行时从键盘输入12<回车>,则输出结果为 1217
【解析】输入12,比较不大于15所以不执行if(x>15)内的语句;大于10执行A)if(a>b) c=a,a=b,b=c; B)if(a>b){ c=a,a=b,b=c;}
printf(\输出12;大于5执行printf(\输出17。
C)if(a>b) c=a;a=b;b=c; D)if(a>b){ c=a;a=b;b=c;} 【解析】对于单个if语句,其后跟随的受if控制的只能是1个语句或者是1个复合语句。故C项,if(a>b)条件成立时,语句c=a;才被执行,而无论if(a>b)条件成立与否,语句a=b;b=c;都会被执行。A、B、D项,只有if(a>b)条件成立时,语句c=a; a=b;b=c; 才被执行。 例2:(2011-03-26)以下程序运行后的输出结果是 200
main()
2.知识点:if语句的嵌套
?
语句。
内嵌结构中,else总是与前面最近的且未曾配对的if语句配对,组成一对if-else
例2:(2010-09-18)有以下程序 #include
第 14 页 共 61 页
聪智学校
{int a=1,b=0; if(!a) b++;
else if(a==0) if(a) b+=2; else b+=3; printf(“%d\\n”,b);
}程序运行后的输出结果是(A) A)0 B)1 C) 2 D)3
同时当a>b时,a>b?1:0的值为1,此时k=1。否则k=0。故答案为A。
4.知识点:switch语句
? ? ?
switch语句的圆括号中的表达式的值必须是整型或字符型,不能为实型。 case后的表达式可以是求得整型和字符型的常量表达式,但不能含有变量。 default的位置对程序的执行没有影响。
例1:(2010-09-19)若有定义语句int a,b;double x;则下列选项中没有错误是(C) A)switch(x%2) B) switch((int)x%2.0)
【解析】else总是与前面最近的且未曾配对的if语句配对,组成一对if-else语句。{case 0:a++;break; {case 0:a++;break; 即else b+=3;
case 1:b++;break; case 1:b++;break;
与if(a) b+=2;配对。if(!a)不成立,不执行b++;else if(a==0)不成立,不执行if(a) b+=2; default:a++;b++; default:a++;b++; else b+=3;故直接执行printf(“%d\\n”,b);,输出结果为0。
} }
C)switch((int)x%2) D)switch((int)(x)%2) {case 0:a++;break; {case 0.0:a++;break;
3.知识点:条件表达式
? ?
一般形式:表达式1?表达式2:表达式3
执行过程:表达式1的值为真,条件表达式取表达式2的值;表达式1的值为 case 1:b++;break; case 1.0:b++;break; 假,条件表达式取表达式3的值。
default:a++;b++; default:a++;b++;
例1:(2009-09-19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是(A) } } A)if((a>b)&&(b>c)) k=1; B) if((a>b)||(b>c)) k=1; else k=0; else k=0; C) if(a<=b) k=0; D) if(a>b) k=1; else if(b<=c) k=1; else if(b>c) k=1;
else k=0;
【解析】switch语句的圆括号中的表达式的值必须是整型或字符型,不能为实型。x是double型,x%2不合法,A项错误。(int)x%2.0不合法,B项错误。(int)x%2值为整型,故C项正确。case后面的表达式可以是求得整型量和字符型量的常量表达式,故D项错误。 例2:(2009-09-18)有以下程序
【解析】条件运算符的结合性是从右至左。当b>c时,b>c?1:0的值为1,k=a>b?1:0,#include
第 15 页 共 61 页