main()
{int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m;
printf(\ }
A)-1 B)1 C)0 D)4
2.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误的原因是( ). main()
{int *p,*q,a,b; p=&a;
printf(\ scanf(\ }
A)*p表示的是指针变量p的地址.
B)*p表示的是变量a的值,而不是变量a的地址. C)*p表示的是指针变量p的值
D)*p只能用来说明p是一个指针变量
3.已有定义 int k=2;int *ptr1,*ptr2;且ptr1t 、ptr2均已指向变量k,下面不能正确执行 的赋值语句是( )
A) k=*ptr1+*ptr2 B) prt2=k;
C) ptr1=ptr2 D) k=*ptr1*(*ptr2); 4.变量的指针,其含义是指变量的( )
A) 值 B) 地址 C) 名 D) 一个标志 5.若有说明: int *p,m=5,n; 以下正确的程序是( )
A) p=&n; scanf(\ B)p=&n; scanf(\ C) scanf(\ *p=n; D) p=&n; *p=m; 6.下面程序段的运行结果是( ) char *s=\
s+=2; printf(\
A) cde B) 字符‘c’
C) 字符‘c’的地址 D) 无确定的输出结果
7.设指针x指向的变量值为25, 则printf(\的输出结果是( ) A)23 B)24 C)25 D)26
8.若有定义char s[10];则在下面表达式中不表示s[1]的地址的是( ) A) s+1 B) s++ C) &s[0]+1 D) &s[1] 9.有以下程序 #include
{char str[][20]={\ printf(\ }
程序运行后的输出结果是( )
A)0 B)5 C)7 D)20 10.有以下程序
main()
{int a[3][3],*p,i; p=&a[0][0];
for(i=0;i<9;i++) *(p+i)=i+1; printf(\ }
程序运行后的输出结果是( )
A)3 B)6 C)9 D)2 11.已定义以下函数 fun(int *p) { return *p; }
该函数的返回值是( )
A)不确定的值 B)形参p中存放的值 C)形参p所指存储单元中的值 D)形参p的地址值 12.对于基类型相同的指针变量,不能进行( )运算。
A) + B)- C) = D)= =
13.若已定义a为int型变量,则对p的说明和初始化正确的是( ) A) int *p=a; B)int p=a; C) int p=a; D)int *p=&a; 14.设有如下程序段 char str[]=”hello”; char *ptr; ptr=str;
执行完上面的程序后,*(ptr+5)的值为( ) A) ‘0’ B)’\\0’ C)不确定的值 D)’0’的地址
15.若x为整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是( A)pb=&x B)pb=x C)*pb=&x D)*pb=*x 答案:CBBBD BDBCB CADBA
函数
1.建立函数的目的之一是: A) 提高程序的可读性 B) 提高程序的执行效率 C) 减少程序的篇幅
D) 减少程序文件所占内存
2.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是 A) void B) int C) float D) double 3.C语言中,形参的缺省存储类别是
A) auto B) register C) static D) extern 4.以下正确的函数定义形式是 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)
5.以下叙述中正确的是
A)全局变量的作用域一定比局部变量的作用域范围大
B)静态(static)类别变量的生存期贯穿于整个程序的运行期间 C)函数的形参都属于全局变量
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值 6.若程序中定义了以下函数 double myadd(double a,double b) { return (a+b);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
A)double myadd(double a,b); B)double myadd(double,double); C)double myadd(double b,double a); D)double myadd(double x,double y); 7.有以下程序
char fun(char x , char y) { if(x<y) return x; return y; } main( )
{ int a=?9?,b=?8?,c=?7?;
printf(\ }
程序的执行结果是()
A) 函数调用出错 B)8 C)9 D)7 8.以下正确的说法是_________。 在C语言中
A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 9.以下不正确的说法是______ C语言规定
A) 实参可以是常量、变量或表达式 B) 形参可以是常量、变量或表达式 C) 实参可以为任意类型
D) 形参应与其对应的实参类型一致
10.若调用一个函数,且此函数中没有return语句,则正确的说法是_______ A)没有返回值
B)返回若干个系统默认值
C)能返回一个用户所希望的函数值 D)返回一个不确定的值
11.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是_______ A) 地址传递 B) 单向值传递
C) 由实参传给形参,再由形参传回给实参 D) 由用户指定传递方式
12.以下程序有语法性错误,有关错误原因的正确说法是_________ main()
{int G=5, k;
void prt_char( ); ……
k=prt_char(G); …… }
A)语句void prt_char();有错,它是函数调用语句,不能用void说明 B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾 D)函数名不能使用下划线
13.以下函数调用语句含有实参的个数为_________ fun((exp1,exp2),(exp3,exp4,exp5)) ; A) 1 B) 2 C) 4 D) 5
14.以下错误的描述是______ 函数调用可以
A)出现在执行语句中 B)出现在一个表达式中 C)做为一个函数的实参 D)做为一个函数的形参
15.以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序 void sort(int a[],int n) { int i,j,t;
for(i=0;i〈n-1;i++) for(j=i+1;j〈n;j++)
if(a[i]〈a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5);
for(i=0;i〈10;i++) printf(\ printf(\
程序运行后的输出结果是______。 A) 1,2,3,4,5,6,7,8,9,10, B) 10,9,8,7,6,5,4,3,2,1, C) 1,2,3,8,7,6,5,4,9,10, D) 1,2,10,9,8,7,6,5,4,3,
16.以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[],int n) { int i,t;
for(i=0;i〈n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0; reverse(b,8);
for(i=6;i<10;i++) s+=b[i]; printf(\
程序运行后的输出结果是______。
A) 22 B) 10 C) 34 D) 30 17.有以下程序 void ss(char *s,char t) { while(*s)
{if(*s==t) *s=t-?a?+?A?; s++; } } main()
{ char str1[100]=\ ss(str1,c); printf(\ 程序运行后的输出结果是______。 A) ABCDDEFEDBD B) abcDDfefDbD C) abcAAfefAbA D) Abcddfefdbd 18.有以下程序 void f(int x,int y) { int t;
if(x<y){ t=x; x=y; y=t; } } main()
{ int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c);
printf(\ }
程序执行后输出的结果是
A) 3,4,5 B) 5,3,4 C) 5,4,3 19.有以下程序 int *f(int *x,int *y) { if(*x<*y) return x; else
D) 4,3,5