西南交17秋《高级语言程序设计A》在线作业12[资料]
西南交《高级语言程序设计A》在线作业一一、单选题:【25道,总分:50分】
1.下面能正确进行字符串赋值操作的是 (满分:2)
A. char s[5]={"ABCDE"}; B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};
C. char *s;s="ABCDE"; D. char *s;char a; scanf("%s",&s);
2.函数Func的功能是( ) intFunc(char*ptr) {char*p; p=ptr; while (*p++); return (p-ptr-1); } (满分:2)
A. 比较两个字串的大小 B. 求字符串的长度
C. 将串ptr复制到p中 D. 以上三种说法都不对
3.下列程序的输出结果是 main( ) { double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf("%d\n", d*y); } (满分:2)
A. 3 B. 3.2
C. 0 D. 3.07
4.已知实型变量a存贮的是一个0--1之间的实数,将a以两位小数百分比形式输出(如:a=0.347592,则输出为34.75%)正确的打印语句是( ) (满分:2)
A. printf(“%.2f%%”,a*100)
B. printf(“%.2f%”,a)
C. printf(“%.2f%%”,a/100)
D. printf(“%.2f%%”,100*(a+0.5));
5.C语言中运算对象必须是整型的运算符是( ) (满分:2)
A. %
B. /
C. =
D. <=
6.下面程序段的运行结果是 char *format="%s,a=%d,b=%d\n"; int a=11,b=10; a+=b; printf(format,"a+=b",a,b); (满分:2)
A. for,"a+=b",ab
B. format,"a+=b"
C. a+=b,a=21,b=10
D. 以上结果都不对
7.若有如下说明 char a={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’},*p=a; 则输出表达式*(p+8),即printf("%c\n",*(p+8));得到( ) (满分:2)
A. g
B. h
C. i
D. j
8.能正确表达逻辑关系"a≥5"且"a≤10"的C语言表达式是( ) (满分:2)
A. a>=5ora<=10
B. a>=5|a<=10
C. a>=5&&a<=10
D. a>=5( )a<=10
9.下列程序段的输出结果是( )void fun(int *x, int *y) { printf("%d %d", *x, *y); *x=3; *y=4;}void main( ) { int x=1, y=2; fun(&y,&x); printf("%d %d", x, y); } (满分:2)
A. 1212
B. 2143
C. 1234
D. 2112
10.有以下程序,程序运行的结果是( ) #include “stdio.h” main( ){int x=1;switch(x){ case 0: printf(“0\t”); break; case 1: printf(“1\t”); case 2: printf(“2\t”); case 3: printf(“3\t”); break; default: printf(“error”); } } (满分:2)
A. 123
B. 23
C. 23error
D. 2
11.C语言中,能识别处理的文件为 (满分:2)
A. 文本文件和数据块文件
B. 文本文件和二进制文件
C. 流文件和文本文件
D. 数据文件和二进制文件
12.下面程序的运行结果是 #include main( ) { int y=10; do{y--;}while(--y); printf("%d\n",y--); } (满分:2)
A. 1
B. 1
C. 8
D. 0
13.continue语句的作用是( ) (满分:2)
A. 中止函数的执行
B. 立即中止循环
C. 中止本次循环,直接开始下一次循环
D. 从一个循环体直接跳转至另一个循环体内
14.函数 rewind 的作用是 (满分:2)
A. 使文件位置指针重新返回文件的开始位置
B. 将文件位置指针指向文件中所要求的特定位置
C. 使文件位置指针指向文件的末尾
D. 使文件位置指针自动移至下一个字符位置
15.以下说法中正确的是( ) (满分:2)
A. 一个函数在编译时被分配得到一个入口地址,这个入口地址称为函数的指针
B. a/=b+c;这个式子和a=a/b+c;等价
C. C语言开始执行程序的开始执行点是程序中第一条可执行的语句
D. 对二维数组a赋值可以用这样的语句完成inta[]={1,2,3,4,5,6,7,8};
16.设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是 (满分:2)
A. 00010100
B. 00011011
C. 00011100
D. 00011000
17.下列程序的输出结果是 int b=2; int func(int *a) { b += *a; return(b);} main( ) { int a=2, res=2; res += func(&a); printf("%d\n",res); } (满分:2)
A. 4
B. 6
C. 8
D. 10
18.C语言表示逻辑假的方法是( ) (满分:2)
A. FALSE
B. 0
C. 1
D. NULL
19.有定义static int a[]={1, 2, 3, 4},*p ; 执行语句p=a+2 ; 后,表达式*p的值为( ) (满分:2)
A. 4
B. 1
C. 2
D. 3
20.若有宏定义:#define PI3.14#define S(r)PI*r*r 则主函数中语句s2=S(r+3);宏替换后的结果为( ) (满分:2)
A. s2=PI*r+3*r+3
B. s2=3.14*(r+3)*(r+3)
C. s2=3.14*r+3*r+3
D. s2=PI*r*r
21.假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入: PROG ABCDEFGH IJKL,则输出结果为 main( int argc, char *argv[]) { while(--argc>0) printf("%s",argv[argc]); printf("\n"); } (满分:2)
A. ABCDEFG
B. IJHL
C. ABCDEFGHIJKL
D. IJKLABCDEFGH
22.一个C语言程序是由 (满分:2)
A. 一个主程序和若干子程序组成
B. 函数组成
C. 若干过程组成
D. 若干子程序组成
23.以下可作为函数fopen中第一个参数的正确格式是( ) (满分:2)
A. c:user\text.tex
B. c:\user\text.txt
C. “c:user\text.tex”
D. “c:\\user\\text.txt”
24.以下不正确的叙述是 (满分:2)
A. 在C程序中,逗号运算符的优先级最低
B. 在C程序中,APH和aph是两个不同的变量
C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
25.若有以下程序 #include int a[]={2,4,6,8}; main( ) { int i; int *p=a; for(i=0;i<4;i++)a[i]=*p; printf("%d\n",a[2]); } 上面程序输出结果是 (满分:2)
A. 6
B. 8
C. 4
D. 2
二、多选题:【15道,总分:30分】
1.带参宏定义与函数的区别是:( )。 (满分:2)
A. 函数调用时,先求出实参表达式的值,然后代入形参,带参的宏只是进行简单的字符替换
B. 函数调用是在程序运行时为形参分配临时的存储单元,而宏展开是在编译前进行的
C. 宏不存在类型问题,宏名和参数都不存在类型问题
D. 调用函数只能得到一个返回值,而使用宏可设法得到几个结果
2.C提供的预处理功能主要有( )。 (满分:2)
A. 宏定义
B. 文件包含
C. 条件编译
D. 异常终止
3.以下不正确的叙述是( )。 (满分:2)
A. C语言的主函数是无参函数
B. C语言的主函数最多允许有1个参数
C. C语言的主函数最多允许有2个参数
D. C语言的主函数可以有2个以上参数
4.以下正确的C语言标识符是( )。 (满分:2)
A. ABC
B. abc
C. abc
D. ab.c
5.若有以下定义和语句:double r=99,*p=&r; *p=r;则以下不正确的叙述是:( ) (满分:2)
A. 以上两处的*p含义相同,都说明给指针变量p赋值
B. 语句“*p=r;”把变量r的地址值赋给指针变量p
C. 语句“*p=r;”取变量r的值放回r中
D. 在“double r=99,*p=&r;”中,把r的地址赋值给了p所指的存储单元
6.已知:int x;,则下面的说明指针变量pb的语句( )不是正确的。 (满分:2)
A. int pb=&x;
B. int *pb=x;
C. int *pb=&x;
D. *pb=*x
7.在文件操作中,用于检测和设置文件状态的函数有( )。 (满分:2)
A. 文件结束检测函数feof( )
B. 读写文件出错检测函数ferror( )
C. 文件出错和结束标志文件函数才clearerr( )
D. 文件关闭函数fclose( )
8.在C语言中,正确的int类型的常数是:( )。 (满分:2)
A. 0
B. 32768
C. 037
D. 0xaf
9.以下说法不正确的是( )。 (满分:2)
A. 定义函数时,形参的类型说明可以放在函数体内
B. return后边的值不能为表达式
C. 如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准
D. 如果形参与实参的类型不一致,以实参类型为准
10.下列说法中错误的是( )。 (满分:2)
A. 不允许设置参数的默认值
B. 设置参数的默认值只能在定义函数时设置
C. 设置参数的默认值时,应该设置右边的参数
D. 设置参数的默认值时,应该全部参数都设置
11.下列字符中能构成标识符的是( )。 (满分:2)
A. 数字字符
B. 连接符
C. 下划线字符
D. 大写字母
12.下列说法不正确的是( )。 (满分:2)
A. C程序由符号构成
B. C程序由标识符构成
C. C程序由函数构成
D. C程序由C语句构成
13.对静态变量的正确描述 (满分:2)
A. 静态局部变量在静态存储区内分配单元( )
B. 静态外部变量可以赋初值,也可以不赋初值
C. 静态外部变量的作用与外部变量相同
D. 静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
14.在缓冲文件系统中用于读写的函数有 (满分:2)
A. putchar( )
B. fread( )
C. rewind( )
D. putw( )
15.对函数的正确使用方法描述 (满分:2)
A. A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组
B. B、实参数组元素和形参数组元素类型可以不一致
C. C、形参数组长度可以不指定
D. D、形参数组长度可以大于实参数组长度
三、判断题:【10道,总分:20分】
1.switch语句中,各个case和default的出现次序不影响执行结果。( ) (满分:2)
A. 错误
B. 正确
2.函数必须有返回值,否则不能使用函数 (满分:2)
A. 错误
B. 正确
3.若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被清除。 (满分:2)
A. 错误
B. 正确
4.共用体所占的内存空间大小取决于占空间最多的那个成员变量。 (满分:2)
A. 错误
B. 正确
5.‘ a’和“a”在内存中所占字节数相同。( ) (满分:2)
A. 错误
B. 正确
6.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出。 (满分:2)
A. 错误
B. 正确
7.C语言编译系统在给出逻辑运算结果时,以数值1代表真,以0代表假,但在判断一个量是否为“真”时,以0代表假,以非0代表真。( ) (满分:2)
A. 错误
B. 正确
8.宏名必须用大写字母表示。 (满分:2)
A. 错误
B. 正确
9.switch语句中,多个case可以共用一组执行语句。( ) (满分:2)
A. 错误
B. 正确
10.语句int pt中的*pt是指针变量名。 (满分:2)
A. 错误
B. 正确
西南交《高级语言程序设计A》在线作业二
一、单选题:【25道,总分:50分】
1.设有以下说明语句 struct ex { int x ; float y; char z ;} example; 则下面的叙述中不正确的是 (满分:2)
A. struct结构体类型的关键字
B. example是结构体类型名
C. x,y,z都是结构体成员名
D. struct ex是结构体类型名
2.设有int x=11;则表达式(x++*1/3)的值是 (满分:2)
A. 3
B. 4
C. 11
D. 12
3.以下说法中错误的是( ) (满分:2)
A. a*=1;这个式子等价于a=a*1
B. a/=b+c;这个式子和a=a/b+c;等价
C. a/=b-c;这个式子等价于a=a/(b-c)
D. a*=b;这个式子等价于a=a*b;
4.若有如下说明 char a={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’},*p=a; 则输出表达式*(p+8),即printf("%c\n",*(p+8));得到( ) (满分:2)
A. g
B. h
C. i
D. j
5.若有以下定义: char a; int b; float c; double d;则表达式a*b+d-c值的类型为( ) (满分:2)
A. float
B. int
C. char
D. double
6.C语言开始执行程序的开始执行点是( ) (满分:2)
A. 程序中第一条可执行的语句
B. 程序中第一个函数
C. 程序中的main( )函数
D. 包含文件中的第一个函数
7.下面程序的运行结果是 #include main( ) { int a=1,b=10; do {b-=a;a++;}while(b--<0); printf("a=%d,b=%d\n",a,b); } (满分:2)
A. a=3,b=11
B. a=2,b=8
C. a=1,b=-1
D. a=4,b=9
8.下列程序段的输出结果是( )void fun(int *x, int *y) { printf("%d %d", *x, *y); *x=3; *y=4;}void main( ) { int x=1, y=2; fun(&y,&x); printf("%d %d", x, y); } (满分:2)
A. 1212
B. 2143
C. 1234
D. 2112
9.返回值为void的函数,其含义为( ) (满分:2)
A. 调用函数之后,被调用的函数没有返回值
B. 调用函数之后,被调用的函数不返回
C. 调用函数之后,被调用的函数的返回值为任意的类型
D. 该类函数不允许被调用
10.以下说法中正确的是( ) (满分:2)
A. 一个函数在编译时被分配得到一个入口地址,这个入口地址称为函数的指针
B. a/=b+c;这个式子和a=a/b+c;等价
C. C语言开始执行程序的开始执行点是程序中第一条可执行的语句
D. 对二维数组a赋值可以用这样的语句完成inta[]={1,2,3,4,5,6,7,8};
11.以下程序有错,错误原因是 main( ) { int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ...... } (满分:2)
A. p和q的类型不一致,不能执行*p=*q;语句
B. *p中存放的是地址值,因此不能执行*p=40;语句
C. q没有指向具体的存储单元,所以*q没有实际意义
D. q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
12.有如下程序: long fib(int n) { if(n>2)return(fib(n-1)+fib(n-2)); else return(2); } main( ) { printf("%d\n",fib(3));} 该程序的输出结果是 (满分:2)
A. 2
B. 4
C. 6
D. 8
13.设有以下语句: char x=3,y=6,z; z=x^y<<2; 则z的二进制值是 (满分:2)
A. 00010100
B. 00011011
C. 00011100
D. 00011000
14.以下不正确的叙述是 (满分:2)
A. 在C程序中,逗号运算符的优先级最低
B. 在C程序中,APH和aph是两个不同的变量
C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
15.C语言中运算对象必须是整型的运算符是( ) (满分:2)
A. %
B. /
C. =
D. <=
16.C语言表示逻辑假的方法是( ) (满分:2)
A. FALSE
B. 0
C. 1
D. NULL
17.若有以下程序段int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后c3中的值是( ) (满分:2)
A. 0
B. 0.5
C. 1
D. 2
18.设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是 (满分:2)
A. p=1;
B. *q=2;
C. q=p;
D. *p=5;
19.下面程序的运行结果是 #include main( ) { int y=10; do{y--;}while(--y); printf("%d\n",y--); } (满分:2)
A. 1
B. 1
C. 8
D. 0
20.下面程序段的运行结果是 char *format="%s,a=%d,b=%d\n"; int a=11,b=10; a+=b; printf(format,"a+=b",a,b); (满分:2)
A. for,"a+=b",ab
B. format,"a+=b"
C. a+=b,a=21,b=10
D. 以上结果都不对
21.执行以下程序后,a,b的值分别为 main( ) { int a,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b); } (满分:2)
A. -1,5
B. 1,6
C. 0,7
D. 4,10
22.若有以下程序 #include int a[]={2,4,6,8}; main( ) { int i; int *p=a; for(i=0;i<4;i++)a[i]=*p; printf("%d\n",a[2]); } 上面程序输出结果是 (满分:2)
A. 6
B. 8
C. 4
D. 2
23.函数Func的功能是( ) intFunc(char*ptr) {char*p; p=ptr; while (*p++); return (p-ptr-1); } (满分:2)
A. 比较两个字串的大小
B. 求字符串的长度
C. 将串ptr复制到p中
D. 以上三种说法都不对
24.有如下程序 int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=p[5]; 则b的值是 (满分:2)
A. 5
B. 6
C. 9
D. 8
25.C语言存贮字符串时,用特殊字符( )表示字符串结束 (满分:2)
A. ’\x0a’
B. ’0’
C. 13
D. ’\0’
二、多选题:【15道,总分:30分】
1.以下对一维数组a进行初始化,错误的语句是( )。 (满分:2)
A. int a=(0,0,0,0,0);
B. int a={};
C. int a={0};
D. int a={10,9,8}
2.以下叙述中正确的是( )。 (满分:2)
A. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
C. 可以通过赋初值的方式确定数组元素的个数
D. 数组名代表的是数组所占存储区的首地址,其值不可改变
3.以下正确的C语言标识符是( )。 (满分:2)
A. ABC
B. abc
C. abc
D. ab.c
4.若有以下定义和语句:double r=99,*p=&r; *p=r;则以下不正确的叙述是:( ) (满分:2)
A. 以上两处的*p含义相同,都说明给指针变量p赋值
B. 语句“*p=r;”把变量r的地址值赋给指针变量p
C. 语句“*p=r;”取变量r的值放回r中
D. 在“double r=99,*p=&r;”中,把r的地址赋值给了p所指的存储单元
5.下列字符中能构成标识符的是( )。 (满分:2)
A. 数字字符
B. 连接符
C. 下划线字符
D. 大写字母
6.在文件操作中,用于检测和设置文件状态的函数有( )。 (满分:2)
A. 文件结束检测函数feof( )
B. 读写文件出错检测函数ferror( )
C. 文件出错和结束标志文件函数才clearerr( )
D. 文件关闭函数fclose( )
7.在动态存储区中主要存放以下数据( )。 (满分:2)
A. 函数形式参数
B. 自动变量
C. 函数调用时的现场保护和返回地址
D. 全局变量
8.关于文件的打开方式描述正确的是:( )。 (满分:2)
A. r:打开只读文件
B. a+:打开或建立用于更新数据的文件,数据追加到文件尾
C. a:打开或建立一个把数据追加到文件尾的文件
D. r+:打开用于更新数据的文件
9.关于宏定义的说法正确的是: (满分:2)
A. <p>宏名一般习惯用大写字母表示,以便与变量名相区别</p>
B. 使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量
C. 宏定义是用宏名代替一个字符串,也就是简单的置换,不作正确性检查
D. 宏定义不是C语句,不必在行末加分号
10.在C语言中,正确的int类型的常数是:( )。 (满分:2)
A. 0
B. 32768
C. 037
D. 0xaf
11.已知:int x,a,b;下列选项中正确的if语句是( )。 (满分:2)
A. if(a=b) x++;
B. if(a=<b) x++;
C. if(a-b) x++;
D. if(x) x++;
12.以下( )是正确的转义字符。( ) (满分:2)
A. ‘\\'
B. ‘\’
C. ‘\81'
D. ‘\0'
13.函数调用可以( )。 (满分:2)
A. 出现在一个表达式中
B. 出现在执行语句中
C. 作为一个函数的实参
D. 作为一个函数的形参
14.对静态变量的正确描述 (满分:2)
A. 静态局部变量在静态存储区内分配单元( )
B. 静态外部变量可以赋初值,也可以不赋初值
C. 静态外部变量的作用与外部变量相同
D. 静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
15.下列关于#include命令的叙述中,正确的是( )。 (满分:2)
A. 一个#include命令中只能指定一个被包含文件
B. 一个#include命令中可以指定多个被包含文件
C. 一个被包含文件中又可以包含另一个被包含文件
D. #include命令中,文件名可以用双引号或尖括号括起来
三、判断题:【10道,总分:20分】
1.C程序中各函数之间既允许直接递归调用也允许间接递归调 (满分:2)
A. 错误
B. 正确
2.puts和gets函数只能输入或输出一个字符串 (满分:2)
A. 错误
B. 正确
3.宏名必须用大写字母表示。 (满分:2)
A. 错误
B. 正确
4.for(;;)语句相当于while(1)语句 (满分:2)
A. 错误
B. 正确
5.宏定义就是用宏名代替一个字符串,也就是简单的置换,不作正确性检查。 (满分:2)
A. 错误
B. 正确
6.数据结构指的是数据的组织形式,数组就是一种数据结构( ) (满分:2)
A. 错误
B. 正确
7.语句int pt中的*pt是指针变量名。 (满分:2)
A. 错误
B. 正确
8.C程序的执行总是从第一个定义的函数开始 (满分:2)
A. 错误
B. 正确
9.‘ a’和“a”在内存中所占字节数相同。( ) (满分:2)
A. 错误
B. 正确
10.模运算符要求两侧均应为整型数据。( ) (满分:2)
A. 错误
B. 正确
页:
[1]