课程代码:A100002座位号:《计算机技术基础(C语言)》试卷A 姓名: 学号: 专业:学院: 班级:20 年月日第一部分选择题(共 30 分)一、单项选择题(本大题共 15 小题,每题只有一个正确答案,答对一题得 2 分,共 30 分)1、以下关于C语言标识符的描述中,正确的是【】。
A)标识符可以由汉字组成B)标识符只能以字母开头C)关键字可以作为用户标识符D)Area与area是不同的标识符2、使下列程序段输出“123,456,78”,键盘输入数据,正确的输入是【】。
int i,j,k;scanf(“%d,%3d%d”,&i,&j,&k);printf(“%d,%d,%d\n”,i,j,k);A)12345678 B)123,456,78 C)123,45678 D)123,*456783、判断char类型的变量c1是否为数字字符的正确表达式为【】。
A) (c1>=0)&&(c1<=9) B) (c1>=’0’)&&(c1<=’9’)C) ’0’<=c1<=’9’ D) (c1>=’0’)||(c1<=’9’)4、若有语句int a=1,b=2,c=3;则以下值为0的表达式是【】。
A)’a’&&’b’ B)a<=b C)((a>b)||(b<c) D)(!(a+b)==c&&a)5、已知:int a[2][3]; 则对数组元素的非法引用是【】A. *(a[0]+2)B. a[1][3] C . a[1][0] D. *(*(a+1)+2)6、在循环语句的循环体中执行break语句,其作用是【】。
A)跳出该循环体,提前结束循环B)继续执行break语句之后的循环体各语句C)结束本次循环,进行下次循环D)终止程序运行7、执行语句for(i=10;i>0;i--);后,变量i的值为【】。
A)10 B)9 C)0 D)18、若有int *p1, *p2,k; 不正确的语句是【】A. p1=&kB. p2=p1C. *p1=k+12D. k=p1+p29、在函数中未指定存储类别的局部变量,其隐含的存储类别是【】A. 静态(static)B. 外部(extern)C. 自动(auto)D. 寄存器(register)10、如下程序的输出结果是【】main( ){ int x=2,a=0,b=0;switch(x){ case 2: a++; b++;case 1: ++a; b--; break;case 0: b++;}printf("a=%d, b=%d\n", a, b);}A. a=2, b=0B. a=2, b=1C. a=1, b=1D. a=1, b=011、表示关系a<b<=c的C语言表达式为【】A. (a<b)&&(b<=c)B. (a<b)AND(b<=c)C. (a<b<=c)D. (a<b)&(b<=c)12、有以下程序#include <stdio.h>main(){int x;scanf(“%d”,&x);if(x<=3) ; elseif(x !=10)printf(“%d\n”,x); }程序运行时,输入的值在哪个范围才会有输出结果。
【】A.不等于10的整数B.大于3且不等于10的整数C.大于3或不等于10的整数D.小于3的整数13、break 语句的正确用法是 【 】A. 无论在任何情况下,都中断程序的执行,退出到系统下一层。
B. 在多重循环中,只能退出最靠近的那一层循环语句。
C. 跳出多重循环。
D. 只能修改控制变量。
14、若a, b, c, d 均为整型变量,执行以下程序段后的t 的值为 【 】#define MAX(A,B) (A)<(B)?(A):(B) ................a=5; b=3; c=3; d=4; t=MAX(a+b,c+d) *10;A. 70B. 7C. 8D. 80 15、执行以下程序段后, m 的值为 【 】 int a[6]={1,2,3,4,5,6}, m, *p; p=&a[0];m=(*p)*(*(p+2))*(*(p+4));A) 15 B) 14 C) 13 D) 12第二部分 非选择题(共 70 分)二、判断题(本大题共 10 小题,每题1分,共 10 分,答T 表示说法正确.答F表示说法不正确,本题只需指出正确与错误,不需要修改)16. 字符型数据不可以进行加减运算。
【 】 17. 函数定义与函数的声明是一回事。
【 】 18.在C 语言中函数能嵌套调用,也能嵌套定义。
【 】 19. 在C 语言中switch 语句必须使用break 语句。
【 】 20. for 循环中的三个表达式都可以省略。
【 】 21. do-while 循环是先进行循环体语句,后判断表达式。
【 】 22. 只能在main()函数中定义静态变量。
【 】 23. char *s1=“I love china ”;定义了一个指针变量s1,它的初值为字符串“I love china ”的首地址。
【 】24. int *p[4];与int (*p)[4];的作用相同,都是定义了一个指向数组的指针。
【 】25. 预处理命令行最后也是以分号(;)结尾的。
【 】三、填空题(本大题共 6 小题,每题 3 分,共 18 分。
)26、在C语言中* 作为单目运算符时表示____________,作为双目运算符时表示__________,而作为一种标记时表示______________。
27、表达式(a=3*5,a*4),a+5中a的值是__________,整个表达式的值是_________。
28、设有如下的类型说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;若数组所占内存单元的起始地址为446且整型数据占2个字节,则p+5=_______,*(p+5)=______。
29、若定义了如下的共用体类型变量x和结构类型变量y,则x和y所占用的内存字节数分别为_________和__________。
union stu1 struct stu2{ int num; {int num;char name[5]; char name[5];char s; }x; char s; }y;30、在TC中CTRL+F9的功能是__________、__________和_____________。
31、有以下程序#include <stdio.h>main(){char c1,c2;scanf(“%c”,&c1) ;while(c1<65||c1>96) scanf(“%c”,&c1) ;c2=c1+32;printf(“%c,%c”,c1,c2);}程序运行输入65回车后,能否输出结果。
(请回答能或不能)______。
四、简答题(本大题共 2 小题,每题 3 分,共 6 分。
)32、C语言中变量的存储类别有几种?局部变量的缺省存储类别是哪种。
33、请解释以下与一个C程序有关的3种文件(需要说明这些文件是什么文件、如何形成的):(1) file.c (2) file.obj (3) file.exe五、阅读程序回答问题(本大题共 4 小题,每题 5分,共 20 分)34、#include <stdio.h>void main(){ int a=10,b=18;fun1(a,b);}int fun1(int x,int y){ if(x>y)printf("a>b\n");else if(x<y) printf("a<b\n");else printf("a==b\n");}问题:(1)写出程序的运行结果;(2)分别列出形参和实参;(3)解释#include <stdio.h>。
35、int fun(int a){ int b=0;static int c=3;b=b+1;c=c+1;return(a+b+c);}main( ){ int a=2, i;for(i=0; i<3; i++)printf(“%d”, fun(a)); }问题:(1) 写出该程序的运行结果;(2) 如果将static int c=3; 语句改写成int c=3; ,则运行结果如何变化?为什么?36、main( ){ int a[2][3]={1,2,3,4,5,6}, b[3][2], i, j;printf(“array a:\n”);for(i=0;i<=1;i++){ for(j=0;j<=2;j++){printf(“%5d”, a[i][j]);b[j][i]=a[i][j];} /*第七行*/printf(“\n”);}printf(“array b:\n”);for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf(“%5d”, b[i][j]);printf(“\n”);}}问题:(1) 写出程序的运行结果;(2)如果将第七行中的b[j][i]=a[i][j];语句改写成b[i][j]=a[i][j];,则结果如何变化。
37、#include<stdio.h>void fun(int *p1, int *p2){ int t;t=*p1; *p1=*p2; *p2=t; }void main(){ int x,y;int *p1,*p2;scanf("%d %d",&x,&y);p1=&x; p2=&y;if(x>y) fun(p1,p2);printf("x=%d,y=%d", x, y); }问题:(1) 该程序的功能是什么;(2) 程序中的* 和& 分别代表什么运算符?(3)若输入 5 3 ,则运行结果如何?六、编写程序(本大题共1小题,共 10 分。
)38、输入两个正整数m和n,求其最大公约数和最小公倍数。
(先画N-S图,然后再编写程序代码)七、程序填空(本大题共1小题,共 6 分。
)39、invert( )函数的功能是将一个字符串str的内容倒序存放。
例如:字符串str原内容为:abcde,函数调用后变为:edcba。