c语言练习题 下载本文

内容发布更新时间 : 2024/12/24 2:47:41星期一 下面是文章的全部内容请认真阅读。

1、 判断程序的对错与写出结果

#include main() { printf(\}

2.1 下列变量名中哪些是合法的?

? 2a a# C$ t3 _var ? int

2.2 选择填空

(1)C语言中用________表示逻辑值“真”。 A) true B) 整型值0 (2)下列合法的字符常量为________。

C) 非零整数值

D) T

A) \ B) '\\n' C) 'china' D) a (3)设有语句char c='\\72'; 则变量c________。

A) 包含1个字符 B)包含2个字符 C) 包含3个字符 D) 不合法 (4)字符常量\的长度为________。

A) 19 B) 15 C) 18 D) 不合法

(5)设a,b,c 为 int 型变量,且a = 3 ,b = 4 , c = 5,下面表达式值为0的是________。

A) 'a' && 'b' B) a <= b

C) a || b+c && b-c D) !((a

则表达式 a * b + d – c 的值的类型为_____________ A) float B) int C) char

double d ; D) double

(7)设有语句int a = 3; 执行了语句a += a -= a * a; 后,变量a的值是________。 A) 3 B) 0 C) 9 D) -12

(8)设有语句int a = 3; 执行了语句printf(\后,输出的结果是________,变量a的值是________。

A) 3 B) 4 C) -3 D) -2 2.3将下列数学表达式表示为合法的C语言表达式。 (1)

a?b2c22 (2) (a?b)(c?d)?2 (3) (lnx?sin(y))/2

11?1x(4) 2?r (5) (6)

sin(30)?2e2y?yx?x

3.1 C语句分为哪几类? 3.2 选择填空

(1)下列可作为C语言赋值语句的是:_____________。

A) x = 3, y = 5 B) a = b = c C) i -- ; (2)以下程序的输出结果为:_____________。

main()

{ int a = 2, c = 5; printf(\}

D) y = int ( x ) ;

A) a = %2, b = %5 B) a = 2, b = 5 C) a=%%d, b=%%d D) a=%d, b=%d 3.3分析下面程序片断,指出程序错在哪里,错误的原因,并将其改正。 (1)int a, b;

scanf(\

(2)float f = 2.39;

printf(\

(3)double var;

long a;

scanf(\

(4)int a, b;

scanf(\

(5)float f;

scanf(\

(6)

main() { int a, b; scanf(\ printf(\}

程序运行时输入:6, 2 ↙ 3.4分析下列程序并写出程序运行结果: (1)

main() { char c1 = 'a', c2 = 'b', c3 = 'c'; printf(\}

(2)

main() { int x = 12 , y = 8; printf(\}

(3)

main() { int x, y; scanf(\ printf(\}

程序执行时从键盘输入:1234567↙ (4)

main() { int a = 2, b = 3 ; float x = 3.5, y = 2.5 ; printf(\}

(5)

main()

{ int x = 12 , y = 8; printf(\ printf(\}

(6)

main() { int x = 12, y = 8, p, q; p = x++; q = ++y; printf(\ printf(\}

3.5 已知三角形的三边长a,b,c,计算求三角形面积的公式为:

s =

12(a?b?c), area = s(s?a)(s?b)(s?c)

要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积。

[提示:程序运行时应保证输入的a,b,c值满足三角形成立的条件,这样计算得到的三角形面积才有意义。另外,将面积计算的数学公式写成合法的C语言表达式如下:

area = sqrt(s*(s-a)*(s-b)*(s-c))

注意写成:

area = sqrt(s(s-a)(s-b)(s-c))

是不错误的。

将数学公式s=

12(a?b?c),写成如下C语言表达式:

s = 0.5*(a+b+c)

s = 1.0/2*(a+b+c)

都是正确的。而写成

s = 1/2*(a+b+c)

虽然是合法的,但结果是错误的,请读者思考为什么。] 3.6 编程从键盘输入圆的半径r,计算并输出圆的周长和面积。

[提示:将计算园周长和面积公式中的? 定义为符号常量。.]

4.1 简答题:

(1)什么是算法?算法在程序设计中的重要作用是什么? (2)什么是结构化程序设计?其基本思想是什么?

(3)什么是“自顶向下、逐步求精”的程序设计方法?

4.2 选择题:

(1)在下面的条件语句中,只有一个在功能上与其它三个语句不等价(其中s1和s2表示它是C语句),这个不等价的语句是: 。

A) if (a) s1; else s2;

B) if (!a) s2; else s1;

C) if (a != 0) s1; else s2; D) if (a == 0) s1; else s2;

(2)设有声明语句:int a=1,b=0;则执行以下语句后输出为: 。

switch (a)

{

case 1:

switch (b) {

case 0: printf(\

case 1: printf(\ }

case 2: printf(\}

A) **0** B) **0****2** C)**0****1****2** D)有语法错误 (3)在while (x)语句中的x与下面条件表达式等价的是: 。

A) x == 0 B) x == 1 C) x != 1 D) x != 0 (4)若int x;且有下面的程序片断,则输出结果为: 。

for (x=3; x<6; x++) {

printf((x%2) ? \}

A) **3 B) ##3 C) ##3 D) **3##4

##4 **4 **4##5 **5

**5 ##5

4.3 写出下列程序的运行结果。

(1)下面程序运行结果为 。

#include main() { int a = 2, b = 3, c = 1; if (a > b) if (a > c) printf(\ else printf(\ printf(\}

(2)若从终端上由第一列开始输入以下数据:

right?↙

则程序运行结果为: 。

#include main() { char c; c = getchar(); while (c != '?') { putchar(c); c = getchar(); } }

(3)对下面程序,若输入数据同上,则程序运行结果为: 。

#include main() { char c;

while ((c = getchar()) != '?') { putchar(c); } }

(4)对下面程序,若输入数据同上,则程序运行结果为: 。

#include main() { char c; while (putchar (getchar()) != '?') ; }

(5)请读者上机运行下面的程序,并仔细体会两个程序运行结果的不同。 程序1:

#include main() { char c;

while ((c = getchar()) != '\\n') { putchar(c); } printf(\}

程序2:

#include main() {

char c;

while ((c = getchar()) != '$') { putchar(c); }

printf(\}

运行时输入abcdefg$abcdefg↙

则两个程序的运行结果分别为: 。 (6)下面程序运行结果为: 。

#include main() {

int i, j, k; char space = ' ';

for (i=1;i<=4;i++) { for (j=1; j<=i; j++) { printf(\ } for (k=1; k<=6; k++) { printf(\ } printf(\ } }

(7)下面程序运行结果为: 。