D)<<1 于4,故答案是C。
【解析】左移一位相当于该数乘以2,124>>1相当于124乘以16.知识点:关系运算符和表达式 2,等于248。故答案是D。 例1:(2010-09-08)在C语言中,当表达式值为0时表示逻辑例2:(2009-04-39)有以下程序 值“假”,当表达式值为 #include
第 11 页 共 78 页
仍为20 D)123.1415930
例2:int a=2;则表达式(!a==1)&&(a++==2)的值为0,a的值【解析】以%8.6f格式输出,即输出的总宽度为8,小数的位为2。 数为6。 【解析】!a为0,!a==1的值为0,&&左边的值为0,则不再19.知识点:格式输入函数scanf() 对右边的运算对象进行运算,所以a的值为2。 (1)一般形式:scanf(“格式控制字符串”,地址列表);
? 若||左边的运算对象的值为1,则不再对右边的运算对象进(2)若格式控制字符串中有非格式字符串,则按原样输入。行运算,整个表达式的值为1。 若格式控制字符串中没有非格式字符作输入数据之间的间隔,例2:(2010-03-17)若a是数值类型,则逻辑表达式(a==1)||(a!=1)则可用空格、Tab、回车作间隔。 的值是(A) 例1:(2011-09-16)若有定义:int a,b;,通过语句A)1 B)0 C)2 D)不知道a的值,不scanf(“%d;%d”,&a,&b);,能把整数3赋给变量a,5付给变量b能确定 的输入数据是 【解析】a的值有两种情况:a等于1或a不等于1。故逻辑表 A.3 5 B.3,5 C.3;5 D.35 达式(a==1)||(a!=1)的值为1。 【解析】scanf格式字符串中两个%d之间带有非格式字符分18.知识点:格式输入函数printf() 号,运行时应原样输入。 (1)一般形式:printf(“格式控制字符串”,输出列表); 例1:(2005-04-19)有以下程序 (2)遇到控制字符,按照控制字符的规定输出,遇到非格式字main() 符串按原样输出。 {int m,n,p; 例1:(2009-04-07)若变量x,y已定义为int类型且x的值为scanf(“m=%dn=%dp=%d”,&m,&n,&p); 99,y的值为9,请将输出语句printf(“ x/y=%d ”,x/y);补printf(“%d%d%d\\n”,m,n,p); 充完整,使其输出的计算结果形式为:x/y=11。 }若想从键盘上输入数据,使变量m中的值为123,n中的值例2:(2009-04-15)程序段:int x=12;double 为456,p中的值为789,则正确的输入是(A) y=3.141593;printf(“%d%8.6f”,x,y);的输出结果是(A) A)m=123n=456p=789 B)m=123 n=456 A)123.141593 B)12 3.141593 C)12,3.141593 p=789
第 12 页 共 78 页
C)m=123,n=456,p=789 D)123 456 789 例3:(2009-04-23)有以下程序 【解析】scanf(“m=%dn=%dp=%d”,&m,&n,&p); 格式控制字符#include
{int a1,a2; char c1,c2; 例2:(2011-03-26)有以下程序段
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
char name[20]; printf(“%d,%c,%d,%c”,a1,c1,a2,c2);
}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的int num;
值为字符a,c2的值为字符b,程序输出结果是:12,a,34,
scanf(\b则正确的输入格式是(以下_代表空格,
A)12a34b
当执行上述程序,并从键盘输入:name=Lili num=1001<回车>
D)12_a34_b
【解析】空格会被当作字符赋值给变量,故B、D错误;C项后,name的值(A)
中逗号会被当作字符赋值给变量,故C项错误。
A)Lili B)name=Lili C)Lili num= D)name=Lili
(4)格式字符串
? 一般形式:%[*][输入数据宽度][长度]类型 num=1001
? *表示该输入项,读入后不赋予相应的变量。
【解析】scanf中格式字符串的非格式字符串原样输入,如其? 输入数据宽度:用十进制数指定输入的字符数。
(2010-09-07)有以下程序 中的‘name=’和‘num=’,所以接受到的name值是后面的例4:
#include
Lili,num值为1001。故选A。 main() (3)在输入字符数据时,若格式控制字符串中无非格式字符,{int x,y; 则认为所有输入的字符均为有效字符。空格会被当作字符赋值scanf(“-%ld”,&x,&y); printf(“%d\\n”x+y);
}程序运行时输入:1234567程序的运行结果是 给变量。
第 13 页 共 78 页
34579 。 }若程序运行时从键盘输入48<回车>,则输出结果为 (09)。 【解析】-输入的数据宽度为2,x的值为12,y的值为34567,【解析】输入48,则c1=48,c2=48+9,以字符输出c1和c2,
x+y=34579。
则为输出ASCII码为48和57对应的字符,分别为0和9。
例5:(2009-04-16)若有定义语句:double x,y,*px,*py;执行
20.知识点:字符输出函数putchar()
了px=&x;py=&y;之后,正确的输入语句是(C)
一般形式:putchar(?a?);putchar(?\\101?);
A) scanf(“%f%f”,x,y);
21.知识点:字符输入函数getchar()
B)scanf(“%f%f”,&x,&y);
一般形式:getchar();或ch=getchar();
C)scanf(“%lf%le”,px,py); D)scanf(“%lf%lf”,x,y);
例1:(2010-03-15)有以下程序
【解析】A、D项地址列表,应为&x,&y;x、y为double型,
#include
格式控制字符串不是%f%f,故B项错误。
main()
? 当定义的变量类型和scanf中“格式符”类型不一致时(这
{char a,b,c,d;
里只限定在字符型和整型两种类型,其他数据类型不可
scanf(“%c%c”,&a,&b);
以。)整型和字符型之间通过ASCALL可以相互转化。
c=getchar(); d=getchar();
例6:(2011-03-12)有以下程序 (说明:字符0的ASCII码printf(“%c%c%c%c\\n”,a,b,c,d);
}当执行程序时,按下列方式输入数据(从第1列开始,
代表回车,注意:回车也是一个字符)
main() 12
34
则输出结果是(B)
scanf(\A)1234 B)12 C)12 D)12
3 34
c2=c1+9;
【解析】以%c格式读取一个字符,以getchar()形式也是读取一个字符。空格会被当作字符赋值给变量。所以,printf(\
第 14 页 共 78 页
a=?1?,b=?2?,c=?\\n?,d=?3?。
? getchar经常作为while循环条件,判断输入哪一个字符时,循环结束。例如,输入字符串,直到输入‘0’,程序结束,A)此while语句将无限循环
B) getchar()不可以出现在while语句的条件表达式中 则可写成while( getchar()!='0') 例2:(2011-03-26)有以下程序段 main() { ?
while( getchar()!='\\n'); ?
}以下叙述中正确的是(C)
C)当执行此while语句时,只有按回车键程序才能继续执行 D)当执行此while语句时,按任意键程序就能继续执行 【解析】while条件表达式getchar()!='\\n'只要输入的字符不是回车,就一直执行循环,而循环内是一个空语句,所以按回车键程序才能继续执行,选择C。
第二课 选择结构与循环结构
第 15 页 共 78 页