第七章 变量的存储类别
一、选择题
1.有以下程序
#include <stdio.h>
int a=2;
int f(int n)
{
    static int a=3;
    int t=0;
    if(n%2)
    {
        static int a=4; t += a++;
    }
    else
    {
        static int a=5; t += a++;
    }
    return t+a++;
}
void main()
{
    int s=a, i;
    for( i=0; i<3; i++) s+=f(i);
    printf("%d\n", s);
}
  程序运行后的输出结果是______。
  A)26    B)28    C)29    D)24
答案: C
2. 凡是函数中未指定存储类别的局部变量,其默认的存储类别是       
A) auto        B) register        C) extern        D) static
答案:A
3. 以下不正确的说法是       
A) 在不同的函数中可以使用名称相同的变量
B) 在函数内定义的变量只在本函数范围内有效
C) 形式参数是局部变量
D 在函数内的复合语句中定义的变量在本函数范围内有效
答案:D
4. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是     
A auto        B register        C extern        D static
答案:D
5. 如果在一个函数中的复合语句中定义了一个变量,则以下说法正确的是       
A) 在本函数范围内有效
B) 在本程序范围内有效
C) 只在复合语句中有效
D 非法变量
答案:C
6. 下列变量定义错误的是       
A) int x,y;
B) register static int a,b,c;
C) auto int x,y;
D extern int A;
答案:B
7. 以下程序的正确运行结果是_____________。
#include <stdio.h>
int m=1;
int n=5;
int min(int a,int b);
void main( )
{
    int m=100,n=10,t;
    t=min(m,n);
    printf ("%d\n", t);
}
int min(int a,int b)
{
    int c;
    c=(a<=b)? a:b;
    return(c);
}
A) 1        B) 5        C) 10        D) 0
答案:C
8. 以下程序的正确运行结果是_____________。
#include <stdio.h>
void main( )
{
    int m=1,n=2,t=3;
    ++m;
    t+=++n;
    {
        int n=10,t;
        t=n*2;
        m+=t;
        printf("%d,%d,%d\n",m,n,t);
    }
    printf("%d,%d,%d\n",m,n,t);
}
static修饰的变量A) 22,11,5                          B)22,10,20
    18,5,6                              22,3,6
C) 32,9,5                        D) 16,21,6
    10,10,20                          22,3,9
答案:B
9.以下叙述中正确的是      
(A)全局变量的作用域一定比局部变量的作用域范围大     
(B)静态(static)类别变量的生存期贯穿于整个程序的运行期间 
(C)函数的形参都属于全局变量 
(D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
答案:B
10.下面程序的输出是      
#include <stdio.h>
int fun3 (int x)
    static int a=3;
    a+=x;
    return(a);
}
void main( )
{
    int k=2,m=1,n;
    n=fun3(k);
    n=fun3(m);
    printf("%d\n",n);
}
(A)3      (B)4      (C)6    (D)9
答案:C
11.有以下程序
#include <stdio.h>
int a=2;
int f(int *a)
    return(*a)++;
}
void main( )
    int s=0;
    {
        int a=5;
        s+=f(&a);
    }
    s+=f(&a);
    printf("%d\n",s);
}
执行后输出结果是     
(A)10      (B)9      (C)7    (D)8
答案:C
12.以下只有在使用时才为该类型变量分配内存的存储类说明是     
A)auto和static        (B)auto和register   
(C)register和static      (D)extern和register
答案:B
13.下面叙述中正确的是     
A)全局变量的作用域一定比局部变量的作用域范围大     
B)静态(static)类别变量的生存期贯穿于整个程序的运行期间   
C)函数的形参都属于全局变量       
D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值
答案:B
14.在C语言中,形参的缺省存储类型是     
A)auto      B)register    C)static        D)extern
答案:A
15.下面程序运行后的输出结果是     
#include <stdio.h>
int f()
    static int i=0;
    int s=1;
    s+=i;i++;
    return s;
}
void main( )
    int i,a=0;
    for(i=0;i<5;i++)
        a+=f( );
    printf("%d\n",a);
}
A)20      B)24    C)25        D)15

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。