有以下程序
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{ int *p;
p=(int*)malloc(sizeof(int));
*p=n; return *p;
}
main()
{ int a;
a = fun(10); printf("%d\n",a+fun(10));
}
程序的运行结果是
A)0
B)10
C)20
D) 出错
以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
A.main( ) { int *p; fun(p); ┆ } int fun(int *p) { int s; p=&s;}
B.main( ) { int *p; fun(&p); ┆ } int fun(int **p) { int s; *p=&s;}
C.#include<stdlib.h> main( ) { int *p; fun(&p); ┆ } int fun(int **p) { *p=(int*)malloc(2);}
D.#include<stdlib.h> main( ) { int *p; fun(p); ┆ } int fun(int *p) { p=(int*)malloc(sizeof(int));}
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
A.p=2*(int*)malloc(sizeof(int));
B.p=(int*)mall0c(2*sizeof(int));
C.p=(int*)malloc(2*2);
D.p=(int*)calloc(2,sizeof(int));
若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。
A.int
B.int*
C.(*int)
D.(int*)
以下程序段中,能够通过调用函数fun(),使main()函数中的指针变量p指向一个合法的整型单元的是( )。
A.main() {int*p; fun(p); … } int fun(int*p) {int s; p=&s; }
B.main {int*p fun(&p); … } iht fun(int**p) {int s; *p=&s;}
C.main() {int*p; fun(&p); } int fun(int**p) {*p=(int*)malloc(2);}
D.main() {int*p; fun(p); } int fun(int*p) {p=(int*)malloc(sizeo(int));}
C程序设计19春在线作业2-0003试卷总分:100 得分:0一、 单选题 (共 20 道试题,共 60 分)1.不能把字符串:Hello!赋给数组b的语句是()A.char b10=H,e,l,l,o,!;B.char b10;? b=Hello!;C.char b10;? strcpy(b,Hello!);D.char b10=Hello!;正确答案:B2.若k为整型,则下列while循环 k=2; while(k=0) printf(“%d”,k); k-; printf(“n”); 执行多少次?()A.2B.9C.0D.1正确答案:C3.若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元: int *p; p=_ malloc( sizeof(int); 则应填入()A.intB.*intC.(*int)D.(int *)正确答案:D4.设 int a=12; 表达式a+=a-=a*=a的值是()A.12B.144C.0D.132正确答案:C5.下列标识符中,不能作为合法的C用户定义标识符的是()A.a3_b3B.voidC._123D.IF正确答案:B6.以下选项中属于C语言的数据类型是()A.复合型B.双精度型C.逻辑型D.集合型正确答案:A7.设有以下宏定义: #define H 30 #define LEN H+20 则执行赋值语句v=LEN*10;后,v的值是()A.60B.230C.500D.0正确答案:B8.有以下程序段: main() int a=5,*b,*c; c=&b; b=&a; 程序在执行了c=&b;b=&a;语句后,表达式*c的值是()A.变量a的地址B.变量b的地址C.变量a的值D.变量b的值正确答案:C9.以下能正确定义一维数组的选项是()A.int num ;B.#define N 100 int num N;C.int num0.100;D.int N=100; int numN;正确答案:B10.以下程序: main( ) int a=011; printf(“%dn”, a); 的输出结果是()A.12B.11C.10D.9正确答案:D11.为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与哪个if组成配对关系?()A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if正确答案:C12.下面程序 main() char ch7= 65ab21; int i,s=0; for(i=0;chi=0 & chi,=,=,=运算。A.错误B.正确正确答案:B6.getchar()函数没有参数。A.错误B.正确正确答案:B7.C程序中,一行上可以写多个语句。A.错误B.正确正确答案:B8.宏定义的宏名一定要大写,否则无效。A.错误B.正确正确答案:A9.表达式 0195 是一个八进制整数。A.错误B.正确正确答案:A10.如果一个函数不需要参数,则函数名后的括号可以省略。A.错误B.正确正确答案:A11.在赋值语句=中,当表达式的类型和变量的类型不一致时,以表达式的类型为准。A.错误B.正确正确答案:A12.int i=20; switch(i/10) case 2:printf(A); case 1:printf(B); 的输出结果为A。A.错误B.正确正确答案:A13.逻辑运算符的优先级为&|!。A.错误B.正确正确答案:A14.联合变量与结构变量的最大区别在于,联合变量的所有成员占用同一段内存,而结构变量的成员占用不同的内存。A.错误B.正确正确答案:B15.假设有int? a10,? *p;? 则p=&a0与p=a等价。A.错误B.正确正确答案:B16.C语言规定数组元素的下标从0开始。A.错误B.正确正确答案:B17.一个函数中只允许有一条return语句。A.错误B.正确正确答案:A18.若有形参定义:int a10;则a+是合法的表达式。A.错误B.正确正确答案:A19.在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。A.错误B.正确正确答案:B20.不允许对二维数组的部分元素赋初值。A.错误B.正确正确答案:A
若要用下面的程序片段指针变量p指向一个存储整型变量的动态存储单元int *p;p=______ malloc (sizeof (int));则应填入 ______。
A.int
B.int*
C.(*int)
D.(int*)
设pl和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )。
A.k=*pl+*p2
B.p2=k;
C.pl=p2;
D.k=*pl*(*p2.;
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是( )
A.p=2 *(int *)malloc(sizeof(int));
B.p=(int*)calloc(2*sizeof(int));
C.p=(int*)malloc(2* sizeof(int));
D.p=2 *(int*)calloc(sizeof(int));
以下程序的输出结果是______。 fun(int**p,int a[2][3]) {**p=a[1][2]; } main() { int a[2][3]=}1,3,5,7,9,11},*p; p=(int*)malloc(sizeof(int)); fun(&p,a) ; printf("%d\n",*p); }
A.9
B.7
C.1
D.11
有以下程序#include <stdio.h>#include <stdlib.h>int fun(int t){ int *p; p=(int*)malloc(sizeof(int)); *p=t; return *p;}main(){ int a; a = fun(8); printf("%d\n", a+fun(10));}程序的运行结果是A.0 B.10 C.18 D.出错