分四舍五入。
第二部分:输入函数: 1.定义:
2.scanf函数的一般调用形式:
1.scanf(格式控制,输出项表)如果在scanf函数后加上\;\就构成了输入语句:
例如: scanf(\求地址运算符 scanf函数名; “%d%d”格式控制
&a,&b是输入项表中的两个输入项; 三:格式说明:
A格式控制串的作用是指定输入时的数据转换格式;既格式转换说明
B格式转化说明符是由\开始,其后是格式描述符
C输入项表中的各输入项用逗号隔开,各输入项只能是合法的地址表达式。 四:scanf函数 中常用的格式字符 c 字符
d 十进制整数
i 输入整形数,可以是带前导0的八进制数,也可以是带前导0x的十六禁止数;
o 以八进制形式输入整形数,可以带前导0,也可以不带前导0
x 以十六禁止形式输入整形数,可以带前导0x也可以不带前导。 u 无符号十进制数 f(lf) 输入单晶度(双精度)数 s 输入字符串
二练习部分《考点分析》:
1.已有定义:int x;执行以下语句后的输出结果是___ x=11/3;y=5;
printf(\2.有以下程序段 int a=0,b=0,c=0;
scanf(\ scanf(\ scanf(\
执行以上语句时从键盘输入: 22
则变量 a中的值是__b中的值是__c中的值是___ 3.以下合法的C语言赋值语句是______ A a=b=51 B k=int(a+b); C a=51,b=51 D --i; 4.若变量已正确定义,要将a和b中的数值进行交换,下面的选项中不正确的是() A、a=a+b,b=a-b,a=a-b B、t=a, a=b, b=t; C、a=t; t=b; b=a; D、t=b;b=a;a=t; 易错题型分析
下列选项中不是C语言语句的是 A :{ int i;i++;printf(“%d”,i);} B:; C: a=5,c=10 D { ; } [答案] C
[分析]:A中用一对花括号把若干语句括起来,按语法规定这是一个复合语句。
B中只有一个;这是一个空语句。D 是一个复合语句,C是一个逗号表达式,最后没有分号。因此不是语句。 若有以下程序字段 int m=0xabc,n=0xabc; m-=n;
printf(“%X\\n”,m);
A 0X0 B 0x0 C 0 D 0XABC [答案] C
[分析]:格式字符x或X是以十六进制无符号形式输出整型数(不带前导0x或0X),对于x用abc输出,X用ABC输出。
若有说明:double a;则正确的输入语句为 A scanf(“%lf”,a); B scanf(“%f”,&a); C scanf(“%lf”,&a) D scanf(“%le”,&a); [答案] D
[分析]:A变量不变量的地址。B因为double格式为%lf或%le C语句末没有加分号 有以下程序段:
int m=0,n=0;char c=’c’; scanf(“%d%c%d”,&m,&c,&n);
第 5 页 共 38 页
printf(“%d,%c,%d\\n”,m,c,n);
若从键盘上输入10A10(回车),则输出结果是
A10,A,10 B 10,a,10 C 10,a,0 D10,A,0 [答案] D
}
[07/04]:执行以下程序后的输出结果是 a=14 main() {int a=10;
[分析]:在scanf语句 ,键盘输入时,使用的间隔符应与输入项之 a=(3*5,a+4); printf(“a=%d\\n”,a); 间的间隔符一致 [历年考试回顾]
}
[07/04] :设变量均已正确定义,若要通过
第二部分上机
数并进行输出。
留2位小数,(用两中方法来完成:提示:I模仿例题3.2 II利用宽度控制说明)
编写程序:读入三个整数,a,b,c然后交换他们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c;(用多种方法) Si
2. 编写程序,读入三个双精度的数,求出他门的平均值,并保
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a21. 编写程序。输入两个整数:1500和250,求出他们的商和余赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)(D) A)10□X□20□Y〈回车〉 B)10□X20□Y〈回车〉 C)10□X〈回车〉 D)10X〈回车〉 20□Y〈回车〉 20Y〈回车〉 [07/04]:有以下程序,其中%u表示按无符号整数输出 main()
{unsigned int x=0xFFFF; /* x的初值为十六进制数 */ printf(“%u\\n”,x); }程序运行后的输出结果是
A)-1 B)65535 C)32767 D)0xFFFF 叙述中正确的是
第4章 选择结构练习题
一、填空题 main()
[07/09]:以下关于long、int和short类型数据占用内存大小的1、下面程序的输出结果是() A)均占4个字节 B)根据数据的大小来决定所占内存的字节数 { int a=4,b=5,c=0,d; C)由用户自己定义 D)由C语言编译系统决定
d=!a&&!b||!c;
[07/09]:若变量均已正确定义并赋值,以下合法的C语言赋值语 printf(\句是
A)x=y==5; B)x=n%2.5; C)x+n=i; D)x=5=4+1; [07/09]有以下程序段
int j; float y; char name[50]; scanf(\的值为
A)55566.0 B)566.0 C)7777.0 D)566777.0
}
2、下列程序的运行结果是() main()
{ int i=1,j=2,k=3; if(i++=&&k--==j) else
printf(\
当执行上述程序段,从键盘上输入55566 7777abc后,y printf(\
[07/09]: 执行以下程序时输入1234567
{ int a=1,b;
scanf(\
3、下面程序的运行结果是() main()
{ int x=5,y=9,z; z=(x==y?x:(y=7)); printf(\
第 6 页 共 38 页
}
4、下面程序的输出结果是() main()
{ int a=0,b=0,c=0; if(++a>0||++b>0) ++c;
printf(\ }
5、下面程序的运行结果是() main() { int x; scanf(\ if(x++>5)
printf(\ else
printf(\ }
6、下面程序的运行结果是() main()
{ int x,y=1; if(y!=0) x=5;
printf(\ if(y==0) x=3; else x=5;
printf(\ }
7、下列程序的运行结果是() main()
{ int a=b=c=0; int x=35; if(!a)x=-1; else if(b); if(c) x=3; else x=4;
}
8、下面程序的运行结果是() main()
{ int c,x,y; x=1;y=1;c=0; c=x++||y++;
printf(\ }
9、下面程序的运行结果是() main()
{ int x=100,a=10,b=20,c=5,d=0; if(a
printf(\ }
10、下面程序的运行结果是() main()
{ int x=1,y=0; switch(x) { case 1: switch(y)
{ case 0:printf(\ case 1:printf(\ } break;
case '2': printf(\ }
易错题型分析
下面错误的语句是()
A) if(a>b) printf(“%d”,a); B)if(&&) ; a=m; C)if(1) a=m;else a=n; D)if(a>0) ;else { a=n;}
第 7 页 共 38 页
[答案] B
[分析] 本题考察了if语句和关系运算的知识,&&不能作为表达式。
以下程序的输出结果是() #include “stdio.h” main() { int a,b,c; a=10;b=50;c=30; if(a>b) a=b,b=c;c=a;
printf(“a=%d,b=%d,c=%d”,a,b,c);}
A a=10,b=50,c=10 B a=10,b=30,c=10 C a=50,b=30,c=10 D a=50,b=30,c=50 [答案] A
A )1,1,2 B )2,2,1 C) 2,2,2 D) 2,2,3 [答案] C
[分析]在c语言中,执行“||”运算的两个操作数,若有一个值为1,则整个表达式的值都为1,若运算符左边的值为1,则就不能继续执行右边的操作数了。 以下程序运行后的结果是_____ main( )
{ int x=10,y=20,t=0; if(x==y) t=x;x=y;y=t; printf(“%d,%d\\n”,a,b); } [答案] 20,0
[分析],本题的if语句提只有一个语句,所以本题没有交换x,y 数值的功能。 以下程序运行后的结果是_____
[分析]本题考察了if语句的执行流程。首
先要注意到“a=b,b=c;”是一条语句,因为a>b的值是假,if语句什么都不能做。在就是要注意到语句“c=a”与if语句无关
有以下程序
main( )
{ int a=1,b=3,c=5;
if(c=a+b) printf(“yes\\n”); else printf(“no\\n”);
main()
} [答案] yes
{ int i=1,j=1,k=2;
[分析] 在条件中表达式的值是”c=a+b”的值,a+b的值
if(j++||k++)&&i++) printf(“%d,%d,%d\\n”,i,j,k); } 执行后输出的结果是()[多多注意短路现象]
4赋给c则条件表达式的值是4,条件成立。 [历年考试回顾]
[07/04]设变量x和y均已正确定义并赋值,以下if语句
第 8 页 共 38 页