c同步练习 下载本文

分四舍五入。

第二部分:输入函数: 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(\

执行以上语句时从键盘输入: 226.59<回车>

则变量 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,则输出结果是 } _12__34_____. #include main()

{ 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 页