You are on page 1of 8

程序设计基础第一次测验

学号: 阮松玲 姓名:2020L024

注意:
(1)请将完成的考卷文档以:学号+姓名.docx 保存,
(2)打开以下链接并提交
“腾讯课堂:程序设计基础第一次测验
https://ke.qq.com/course/2861512?
termid=102972460&homeworkid=563d465e93454361844aa578fdce91b2&from=client_homew
ork#dialog=1
(手机端请升级至最新版 APP 完成作业)”

选择题 改错题 填空题 编程题 总分

一.选择题目(每小题 2 分, 共 40 分)

1、一个 C 语言的执行是从:
选项: 答案
A) 本程序的 main 函数开始,到本程序的 main 函数结束 A
B) 本程序的第一个函数开始,到本程序的最后一个函数结
C) 本程序的主函数开始,到本程序的最后一个函数结束
D) 本程序的第一个函数开始,到本程序的 main 函数结束

2. 在 C 语言中四种基本数据类型存储空间长度的排列顺序是:
选项: 答案
A) char<int<=float<double A
B) char=int<=float<double
C) char<int<=float=double
D) char=int<=float<double

3. 设有说明:char w; int x; float y; double z; 则表达式: w*x+z-y 值的数据类型是:


选项: 答案
A) float B) char D
C) int D) double

4. 若有定义:int a=7; float x=2.5, y=4.7; 则表达式: x+a%3*(int)(x+y)%2/4 的值是:


选项: 答案
A) 2.500000 B) 2.7500000 A
C) 3.500000 D) 0.000000

5. C 语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符:
选项: 答案
A) 必须为字母 C
B) 必须为下划线
C) 必须为字母或下划线
D) 可以是字母,数字或下划线中的任意一种

6. 下列四组常数中,均是正确的八进制数或十六进制数的一组是:
选项: 答案
A) 016 0xbf 018 C
B) 0abc 017 0xa
C) 010 -0x11 0x16
D) 0A12 7FF -123

7. C 语言中,要求运算量必须是整型的运算符是:
选项: 答案
A) + B) / C
C) % D) *

8. 以下程序的输出结果是:
main()
{
int a=12, b=12;
printf("%d,%d\n",--a,++b);
}
选项: 答案
A) 10,10 B) 12,12 D
C) 11,10 D) 11,13

9. 下面程序的输出的是
main()
{
int x=10,y=3;
printf("%d\n",x/y);
}
选项: 答案
A) 0 B) 1 C) 3 D) 不确定的值 C

10. 阅读下面的程序
main()
{
int i,j;
float x,y;
scanf("%f,%f",&i,&j);
scanf("%f,%f",&x,&y);
printf("i=%d,j=%d\n",i,j);
printf("x=%f,y=%f\n",x,y);
}

如果从键盘上输入
32,18<回车>
12.5,-4.3<回车>
则程序的运行结果是:
选项: 答案
A) i=32,j=18 B) i=0,j=0 D
x=12.500000,y=-4.300000 x=12.500000,y=-4.300000
C) i=32,j=18 D) i=0,j=0
x=12.5,y=-4.3 x=12.5,y=-4.3

11. 阅读下面的程序
#include<stdio.h>
main()
{
char c1,c2;
c1=getchar();
c2=c1+3;
printf("%c,%d\n",c2,c2);
}
已知字母 'A' 的 ASCII 的值为 65,如果从键盘上输入字母
D<回车>
则程序的运行结果是:
选项: 答案
A) D,68 B) 'G',68 B
C) D,71 D) G,71

12. 若有代数式(3ae)/(bc),则下面不正确的 C 语言表达式是:


选项: 答案
A) a/b/c*e*3 B) 3*a*e/b/c C
C) 3*a*e/b*c D) a*e/c/b*3

13. 为表示关系 x>y>z,应使用的 C 语言表达式是:


选项: 答案
A) (x>y)&&(y>z) B) (x>y)AND(y>z) A
C) x>y>z D) (x>y)&(y>z)

14.能正确表示 a≥10 或 a≤0 的关系表达式是


选项: 答案
A) a>=10 or a<=0 B) a>=10 | a<=0 D
C) a> =10&&a< =0 D) a>=10 || a<=0

15. 设 x 、y 、z 、t 均为 int 型变量,则执行以下语句后,t 的值为


x=y=z=1;
t=++x || ++y && ++z;

选项: 答案
A) 不定值 B) 4 C
C) 1 D) 0

16. 已知 x=43,ch='A',y=0,则表达式(x>=y && ch<'B' && !y)的值是:


选项: 答案
A) 0 B) 语法错 C
C) 1 D) "假"

17. 表达式 5!=3 的值是:


选项: 答案
A) T B) 非零值 D
C) 0 D) 1

18. 为了避免嵌套的 if-else 语句的二义性,C 语言规定 else 总是与以下哪个选项组成配对关


系。
选项: 答案
A) 缩排位置相同的 if B) 在其之前未配对的 if B
C) 在其之前未配对的最近的 if D) 同一行上的 if

19. 运行下面程序时,若从键盘输入数据为"86",
则输出结果是( )。
main( )
{ int t;
scanf("%d",&t);
if (t>=90) printf("A\n");
else if (t>=80) printf("B\n");
else if (t>=70) printf("C\n");
else if (t>=60) printf("D\n");
else printf("E\n");
printf("OK\n");
}
选项: 答案
A) B B) B OK C
C) B D) B
OK C
D
E
OK

20.下面的程序,正确的说法是____。
#include <stdio.h>
int main( )
{ int x=3,y=0,z=0;
if (x=y+z) printf("* * * *");
else printf("# # # #");
return 0;
}
选项: 答案
A) 有语法错误不能通过编译。 B
B) 输出* * * *。
C) 可以通过编译,但是不能通过连接,因而不能运行。
D) 输出# # # #。

二.改错题(每小题 4 分,共 16 分)

(要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。)
(1) 输 入 并 运 行 下 面 的 程 序 , ( 程 序 中 有 两 处 错 误 , 错 误 都 在 提 示 行 :
/***********found***********/的下面一行。请改正程序中的错误,使它能得出正
确的结果。注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构!)
/* test1.c */
#include <stdio.h>
int main( )
{ /***********found(1)***********/
int i,j;
scanf("%f,%f",&i,&j);
/***********found(2)***********/
printf("i=%d,j=%d\n",i,j);
return 0;
}

found(1)答案: found(2)答案:
Float i,j; Printf(“i=%.3f,j=%.3f\n”,i,j);

(2)给定程序 test2.c 的功能是:


对于如下函数:

用 scanf 函数输入 x 的值,求 y 值。


(程序中有两处错误,错误都在提示行: /***********found***********/的下面一行。
请改正程序中的错误,使它能得出正确的结果。注意:不要随意改动程序,不得增行或删
行,也不得更改程序的结构!)
/* test2.c */
#include <stdio.h>
int main()
{ int x, y;
scanf ("%d",&x);
if ( x < 10 )
if(x>1)
y = x;
/***********found(1)***********/
else (x<=1)
y = 2*x -1 ;
/***********found(2)***********/
if ( x>=10 );
y = 3*x -11;
printf("y = %d\n", y );
reurn 0;
}
found(3)答案: found(4)答案:
三.填空题(每小题 4 分,共 16 分)

(1) 以下程序 test3.c 将实现将输入 2 个数 a,b,如果它们的值不相等,则交换并输


出它们的值,交换后,按“a= ,b= ”的格式输出;否则,输出“equal"。,完善下面
程序中的输出语句。填写必要的语句:
/* test3.c */
# include <stdio.h>
main( )
{
int a, b, t;
printf("input a, b:\n");
/***********fill(1) ***********/
scanf( );
if(a!=b)
{
t = a;
a = b;
b = t;
/***********fill(2) ***********/
printf( );
}
else
printf("equal\n");
}
fill(1)答案: fill(2)答案:

(2) 以下程序 test4.c 根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的


面积。编程序输入三角形的三条边,判断输入的三边的数据的合法性,如果输入的三
边能组成三角形则计算三角形的面积。

求面积的公式如下:area=√ s( s−a)( s−b)( s−c) 其中 s=(a+b+c)/2;

/* test4.c */
#include <math.h>
#include <stdio.h>
main()
{
float a,b,c,s,area;
printf(“输入三角形的边 a,b,c=?”);
scanf(“%f,%f,%f”,&a,&b,&c);
/***********fill(3) ***********/
if( )
{
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“三角形的面积=%5.2f\n”,area);
}
/***********fill(4) ***********/

printf(“不能组成三角形!!!\n”,area);
}
fill(3)答案: fill(4)答案:

编程题(共 28 分)(只需要代码,不需要截图)

请在 /***********begin***********/ 与 /************end************/之间填写主要
的代码

1. (6 分)编写一个程序 test5.c ,程序的功能是:从键盘上输入一个华氏温度,能够输


出相应的摄氏温度。华氏温度 F 与摄氏温度 c 的转换关系为:
5
c= ─(F-32)
9

要求输出保留 2 位小数。

/* test5.c */
#include <math.h>
#include <stdio.h>
main()
{
/************begin************/
//将必要的代码写在此处

/************end************/
}
2.(10 分)编写程序 test6.c:程序实现用 if 语句判断读入字符变量 ch 中的字符是否是英文小写
字母,若是小写字母则将其转换成大写字母输出(小写字母的 ASCII 码值与大写字母的 ASCII 码
值差值为 32),否则原样输出显示在屏幕上。
例如, 如果从键盘输入小写字母 a, 则程序的输出结果应为: A
如果从键盘输入字符 ?, 则程序的输出结果应为: ?

/* test6.c */
#include<stdio.h>
main()
{
/***********begin***********/
定义字符类型变量;(2 分)
用 getchar()函数读取字符;(2 分))
用 if 语句实现判断;(4 分)
用输出语句输出转换后的结果;(2 分)
/************end************/
}
3.(12 分) test6.c 对于形式为:ax2+bx+c=0 的方程一元二次方程的 a,b,c 系数的取值,判断方
程是否有实根,若有:则计算并输出求得的一元二次方程的两个实根。若没有则输出没有方
程根的信息(假定方程不存在虚根).
提示:输出结果可以参照如下语句:
printf("方程无实根!");
printf("方程的两个实根为:x1=%.2f,x2=%.2f\n", x1, x2);

用到的公式:
−b± √b 2−4 ac
x=
2a
例如,如果 a=1,b=2,c=1,则程序的输出结果应为:方程的根为:x1=-1.00,x2=-1.00 。

部分数据变量已给出,

/* test7.c */
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
float delt,x1,x2;
a=2;b=4;c=1;
/***********begin***********/

计算 delt=b2-4ac 部分(2 分)
用根据 delt 的值用 if 语句实现判断;(4 分)
用输出语句输出结果;(2 分)

/************end************/

return 0;
}

You might also like