c语言程序设计试题库 下载本文

#include “stdio.h” main()

{ printf(“%d\\n”,NULL) ;} 99、以下程序的输出结果是

A、5,2,3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7 void sub(int x, int y, int *z) { *z=y-x;} main()

{ int a,b,c;

sub(10,5,&a); sub(7,a,&b); sub(a,b,&c); printf(“%d,%d,%d\\n”,a,b,c); } 100、以下程序的输出结果是( )

A、4 B、6 C、8 D、10 main()

{ int k=2, m=4, n=6; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm) printf(“%d\\n”,n); } 101、以下程序的输出结果是( )

A、 4,3 B、2,3 C、 3,4 D、 3,2 void fun (float *a, float *b) { float w ; *a= *a+*a;

w=*a; *a=*b; *b=w; } main()

{ float x=2.0, y=3.0; float *px=&x, *py=&y; fun(px,py);

printf(“%2.0f,%2.0f\\n”,x,y);} 102、以下程序的输出结果是( )

A、 9.000000 B、 1.500000 C、 8.000000 D、 10.500000 void sub (float x, float *y, float *z) { *y= *y-1.0; *z= *z+x;} main()

{ float a=2.5,b=9.0 , *pa, *pb; pa=&a; pb=&b; sub (b-a, pa , pa); printf (“%f\\n”, a);}

103、在c语言中,引用数组元素时,其数组下标的数据类型允许是( ) A、整型常量 B、整型表达式 C、整型常量或整型表达式 D、任何类型的表达式

104、以下对一维整型数组a的正确说明是( )

A、int a(10); B、int n;scanf(“%d”,&n);int a[n];

C、int n=10,a[n]; D、#define SIZE 10 int [SIZE]; 105、以下能对一维数组a进行正确初始化的语句是( )。

A、int a[10]=(0,0,0,0,0); B、int a [10]={}; C、int a[]={10,12,56}; D、int a[]={‘10*1’}; 106、以下对二维数组a的正确说明是( )。

A、int a[3][]; B、float a (3,4); C、double a[1][4]; D、float a(3)(4); 107、若有说明:int a[3][4];则对a数组元素的正确引用是 ( ) 。

A、a[2][4] B、a[1,3] C、a[1+1][0] D、a(2)(1)

108、若有说明:int a[3][4];则对a数组元素的非法引用是( )。

A、a[0][2*1] B、a[1][3] C、a[4-2][0] D、a[0][4] 109、以下能对二维数组a进行正确初始化的语句是( )。

A、int a[2][]={{1,0,1},{5,2,3}}; B、int a[][3]={{1,2,3},{4,5,6}}; C、int a[2][4]={1,2,3},{4,5}{6}}; D、int a[][3]={{1,0,1}{},{1,1}}; 110、以下不能对二维数组a进行正确初始化的语句是( )。

A、int a[2][3]={0}; B、int a[][3]={{1,2},{0}}; C、int a[2][3]={{1,2},{3,4},{5,6}}; D、int a[][3]={1,2,3,4,5,6}; 111、 若有说明:int a[3][4]={0};则下面正确的叙述是( )。

A、只有元素a[0][0]可得到初值0 B、数组a中每个元素均可得到初值0 C、数组a中各元素都可得到初值,但不一定为0 D、此说明语句不正确 112、 若有说明:int a[][4]={0,0};则下面不正确的叙述是( )。

A、数组a的每个元素都可得到初值0 B、二维数组a的第一维大小为1 C、因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1 D、只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

113、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为( )。(假设a[0][0]位于

数组的第一个位置上。)

A、i*m+j B、j*m+I C、i*m+j-1 D、i*m+j+1 114、对以下说明语句的正确理解是( )。int a[10]={6,7,8,9,10};

A、将5个初值依次赋给a[1]至a[5] B、将5个初值依次赋给a[0]至a[4]

C、将5个初值依次赋给a[6]至a[10] D、因为数组长度与初值的个数不相同,所以此语句不正确 115、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是( )。

A、2 B、3 C、4 D、无确定值 116、定义如下变量和数组:

int k;

int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。

for (k=0;k<3;k++)printf(“%d”,a[k][2-k]);

A、3 5 7 B、3 6 9 C、1 5 9 D、1 4 7 117、下面是对s的初始化,其中不正确的是( )。

A、char s[5]={“abc”}; B、char s[5]={‘a’,’b’,’c’}; C、char s[5]=””; D、char s[5]=”abcdef”; 118、下面程序段的运行结果是( )。

char c[5]={‘a’,’b’,’\\0’,’c’,’\\0’}; printf(“%s”,c);}

A、’a’’b’ B、ab C、ab_c D、ab (其中_表示空格)

119、对两个数组a和b进行如下初始化

char a[]=”ABCDEF”;

char b[]={‘A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是( )。

A、a与b数组完全相同 B、a与b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度大 120、有两个字符数组a、b,则以下正确的输入语句是( )。

A、gets(a,b); B、scanf(“%s%s”,a,b); C、scanf(“%s%s”,&a,&b); D、gets(“a”),gets(“b”); 121、有字符数组a[80]和b[80],则正确的输出语句是( )。

A、puts(a,b); B、printf(“%s,%s”,a[],b[]); C、putchar(a,b); D、puts(a),puts(b); 122、有下面的程序段

char a[3],b[]=”China”;

a=b; printf(“%s”,a); 则( )。

A、运行后将输出China B、运行后将输出Ch C、运行后将输出Chi D、编译出错 123、判断字符串a和b是否相等,应当使用( )。

A、if(a= =b) B、if(a=b) C、if(strcpy(a,b)) D、if(strcmp(a,b)) 124、判断字符串s1是否大于字符串s2,应当使用( )。

A、if(s1>s2) B、if(strcmp(s1,s2)) C、if(srtcmp(s2,s1)>0) D、if(strcmp(s1,s2)>0) 125、下述对C语言字符数组的描述中错误的是( )。

A、字符数组可以存放字符串

B、字符数组的字符串可以整体输入、输出

C、可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D、不可以用关系运算符对字符数组中的字符串进行比较 126、以下正确的说法是( )。建立函数的目的之一是

A、提高程序的执行效率 B、提高程序的可读性 C、减少程序的篇幅 D、减少程序文件所占内存 127、以下正确的说法是( )。

A、用户若需调用标准库函数,调用前必须重新定义

B、用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C、系统根本不允许用户重新定义标准库函数

D、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

128、以下正确的函数定义形式是( )。

A、double fun(int x,int y) B、double fun(int x;int y) C、double fun(int x,int y); D、double fun(int x,y); 129、以下正确的函数形式是( )。

A、double fun(int x,int y) {z=x+y;return z;} B、fun(int x,y) {int z; return z;}

C、fun(x,y) {int x,y;double z; z=x+y;return z;} D、double fun(int x,int y) {double z; z=x+y;return z;}

130、以下正确的说法是( )。在C语言中

A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参共占用一个存储单元

C、只有当实参和与其对应的形参同名时才共占用存储单元 D、形参是虚拟的,不占用存储单元

131、以下不正确的说法是( )。C语言规定

A、实参可以是常量、变量或表达式 B、形参可以是常量、变量或表达式 C、实参可以为任意类型 D、形参应与其对应的实参类型一致 132、以下正确的说法是( )。

A、定义函数时,形参的类型说明可以放在函数体内 B、return后边的值不能为表达式

C、如果函数值的类型与返回值类型不一致,以函数值类型为准 D、如果形参与实参的类型不一致,以实参类型为准

133、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )。

A、float型 B、int型 C、long型 D、double型 134、 C语言规定,函数返回值的类型是由( )。

A、return语句中的表达式类型所决定 B、调用该函数时的主调函数类型所决定 C、调用该函数时系统临时决定

D、在定义该函数时所指定的函数类型所决定 135、下面函数调用语句含有实参的个数为( )。

Func((exp1,exp2),(exp3,exp4,exp5));

A、1 B、2 C、4 D、5 136、以下错误的描述是( )。函数调用可以

A、出现在执行语句中 B、出现在一个表达式中 C、做为一个函数的实参 D、做为一个函数的形参 137、以下正确的描述是( )。在C语言程序中

A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套

138、若用数组名作为函数调用的实参,传递给形参的是( )。

A、数组的首地址 B、数组第一个元素的值 C、数组中全部元素的值 D、数组元素的个数

139、 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参的说明中,对形参数组array

的错误定义方式为 ( ) int a[3][4]; f(a);

A、f(int array[ ][6]) B、f(int array[3][ ]) C、f(int array[ ][4]) D、f(int array[2][5]) 140、 若使用一维数组名作参数,则以下正确的说发是 ( ) A、必须在主调函数中说明此数组的大小 B、实参数组类型与形参数组类型可以不匹配

C、在被调函数中,不需要考虑形参数组的大小 D、实参数组名与形参名必须一致

141、 以下正确的说法是( )

如果在一个函数中的复合语句中定义了一个变量,则该变量 A、只在复合语句中有效 B、在该函数中有效 C、在本程序范围内均有效 D、为非法变量 142、以下不正确的说法是( )

A、在不同的函数中可以使用相同名字的变量 B、形式参数是局部变量

C、在函数内定义的变量只能在本函数范围内使用 D、在函数内的复合语句中定义的变量在本函数范围内有效

143、 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( ) A、自动(auto)B、静态(static)C、外部(extern)D、寄存器(register) 144、 以下程序的运行结果是( ) sub(int x,int y,int *z)

{*z=y-x;} main() { int a,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);} printf(“M,M,M\\n”,a,b,c); }

A、5, 2, 3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7 145、 以下程序能对两个整型变量的值进行交换。以下正确的说法是( ) main(){ int a=10,b=20;

printf(“(1)a=%d,b=%d\\n”,a,b); swap(&a,&b);

printf(“(2)a=%d,b=%d\\n”,a,b); } swap( int p,int q) {int t; t=p;p=q;q=t;}

A、该程序完全正确 B、该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可 C、该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针变量即可。 D、以上说法都不正确

146、 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( ) main(){ int *p,*q,a,b;

p=&a;printf(“input a:”); scanf(“%d”,*p); ??}

A、*p表示的是指针变量p的地址

B、*p表示的是变量a的值,而不是变量a的地址 C、*p表示的是指针变量p的值 D、*p只能用来说明p是一个指针变量

147、 已有定义 int k=2;int *prt1,*prt2;且prt1和prt2均已指向变量k,下面不能正确执行的赋值语句是( )

A、k=*prt1+*prt2 B、prt2=k; C、prt1=prt2; D、k=*prt1*(*prt2); 148、 若有说明:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是( ) A、p1=&m;p2=&p1; B、p1=&m;p2=&n;*p1=*p2; C、p1=&m;p2=p1; D、p1=&m;*p2=*p1;

149、 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( )