二级C语言-112
(总分100,考试时间90分钟)
一、选择题
1. 若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是______。
A. sqrt(fabs(pow(n,x)+exp(x)))
B. sqrt(fabs(pow(n,x)+pow(x,e)))
C. sqrt(abs(n^x+e^x))
D. sqrt(fabs(pow(x,n)+exp(x)))
2. 以下叙述中错误的是______。
A. 可以给指针变量赋一个整数作为地址值
B. 函数可以返回地址值
C. 改变函数形参的值,不会改变对应实参的值
D. 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
3. 有以下程序:
#include <stdio.h>
int a =4;
int f(int n)
{int t = 0; static int a=5;
if (n%2) {int a=6; t + = a+ +; }
else {int a=7; t + = a+ +;}
return t + a+ +;
{
main( )
{int s=a, i=0;
for (; i<2;i+ +) s + = f(i);
printf("%d\n", s) ;
}
程序运行后的输出结果是______。
A. 36        B. 24
C. 32        D. 28
4. 有以下程序:
#include <stdio.h>
int f(int n)
{int t = 0, a=5;
if (n/2) {int a=6; t + = a+ +;
else {int a=7; t + = a+ +;}
return t + a+ +;
main( )
{ int s=0, i=0;
for (; i<2;i+ +) s + = f(i);
printf( " % d\n" , s) ;
}
程序运行后的输出结果是______。
A. 28        B. 24
C. 32        D. 36
5. 若有以下程序:
#include <stdio.h>
int a=2;
int f(int m)
{ static int n;
n=0; n+ +; a+ +;
return n+m+a;
main( )
{ int k;
for (k=0; k<4; k+ +) printf("%d,",f(k));
}
则程序的输出结果是______。
A. 4,5,6,7,        B. 4,7,10,13,
C. 4,6,8,10,        D. 3,5,7,9,
6. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是______。
A. 丙数的形参和实参分别占用不同的存储单元
B. 形参只是形式上的存在,不占用具体存储单元
C. 同名的实参和形参占同一存储单元
D. 函数的实参和其对应的形参共占同一存储单元
7. 以下叙述中错误的是______。
A. C程序必须由一个或一个以上的函数组成
B. 函数调用可以作为一个独立的语句存在
C. 若函数有返回值,必须通过return语句返回
D. 函数形参的值也可以传回给对应的实参
8. 以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。
#include <stdio.h>
void f(int b[], int n, int flag)
{
int i,j,t;
for (i=0; i<n-1; i+ +)
for (j=i+1; j<n; j+ +)
if (flag ? b[i]>b[j] : b[i]<b[j])
{ t=b[i]; b[i]=b[j]; b[j]=t; }
}
main( )
{
int a[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0);
f(a,5,1);
for(i=0;i<10;i+ +)
printf("%d,",a[i]);
程序运行后的输出结果是______。
A. 1,2,3,4,5,6,7,8,9,10,
B. 3,4,5,6,7,2,1,8,9,10,
C. 5,4,3,2,1,6,7,8,9,10,
D. 10,9,8,7,6,5,4,3,2,1,
9. 以下关于return语句的叙述中正确的是______。
A. 一个自定义函数中必须有一条return语句
B. 一个自定义函数中可以根据不同情况设置多条return语句
C. 定义成void类型的函数中可以有带返回值的return语句
D. 没有return语句的自定义函数在执行结束时不能返回到调用处
10. 已定义以下函数:
int fun(int *p)
{ return *p; }
fun函数返回值是______。
A. 一个整数        B. 不确定的值
C. 形参p中存放的值        D. 形参p的地址值
11. 以下叙述中错误的是______。
A. 用户定义的函数中可以没有return语句
B. 用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C. 用户定义的函数中若没有return语句,则应当定义函数为void类型
D. 函数的return语句中可以没有表达式
关于printf函数正确的是
12. 若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是______。
A. main ( ){ ... x=fun(2,10); ...}float fun(int a,int B) {...}B. float fun (int a,int
B. t {...}main( ){... x=fun(i,j); ...}
C. float fun(int ,int);main ( ){ ... x=fun(2,10); ...}float fun(int a,int bB){...}
D. main( ){ float fun(int i,int j);... x=fun(i,j); ...float fun(int a,int B) {...}
13. 有以下程序:
#include <stdio.h>
void fun( int a, int b )
{int t;
t=a; a=b; b=t;
}
main( )
{ int c[10] = {1,2,3,4,5,6,7,8,9,0}, i;
for (i=0; i<10; i+ =2) fun(c[i], c[i+1]);
for (i=0;i<10; i+ +) printf("%d,", c[i]);
printf( " \n" );
}
程序的运行结果是______。
A. 1,2,3,4,5,6,7,8,9,0,
B. 2,1,4,3,6,5,8,7,0,9,
C. 0,9,8,7,6,5,4,3,2,1,
D. 0,1,2,3,4,5,6,7,8,9,
14. 有以下程序:
#include <stdio.h>
double f(double x);
main( )
{double a=0; int i;
for(i=0; i<30; i+ =10) a+ =f((double)i);
printf("%3.0f\n",a);
}
double f(double x)
{ return x*x+1; }
程序运行后的输出结果是______。
A. 500        B. 401
C. 503        D. 1404
15. 有以下程序:
#include <stdio.h>
main( )
{int m=1,n=2,*p=&m,*q=&n,*r;
r=p; p=q; q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
程序运行后的输出结果是______。
A. 2,1,1,2        B. 1,2,1,2
C. 2,1,2,1        D. 1,2,2,1
16. 有以下程序:
#include <stdio.h>
void f(int *q)
{int i=0;
for( ;i<5;i+ +)(*q)+ +;