C语言程序设计专升本题库
(总分100分,考试时长90分钟)
一、单项选择题(每小题2 分,共 40分)
1、以下叙述中正确的是________。
    A、局部变量说明为static存储类,其生存期将得到延长
    B、全局变量说明为static存储类,其作用域将被扩大
    C、任何存储类的变量在未赋初值时,其值都是不确定的
    D、形参可以使用的存储类说明符与局部变量完全相同
2、下列四组常数中,均是合法整型常量的一组是________。
    A、160    0xffff    011
    B、-0xcdf 01a        0xe
    C、-01    986,012    0668
    D、-0x48a 2e5        0x
3、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
    A、y=0,a
    B、y=0,a
y=1,a≥b y一1,a≥b且c≠d
    C、y=0,a
    D、y=0,a
y=1,a<B且C≠D    y="1,c≠d
4、下面的代码int i=10; 之后的for循环语句,语法正确,不会编译出错的是________。
    A、for(i=0,i<10,i++)
    B、for{
  i=0;i<10;i++}
    C、for( ;i>5;i--)
    D、for(i=0;i<10;i++;)
5、下列关于函数参数的叙述中,正确的是________。
    A、在函数原型中不必声明形参类型
    B、函数的实参和形参共享内存空间
    C、函数形参的生存期与整个程序的运行期相向
    D、函数的形参在函数被调用时获得初始值
6、以下选项中,不能作为合法常量的是________。重庆专升本报名入口
    A、1.234e04
    B、1.234e0.4
    C、1.234e+4
    D、1.234e0
7、若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为: ( )
    A、2
    B、3
    C、4
    D、无确定值
8、与二进制小数0.1等值的十六进制小数为________。
    A、0.1
    B、0.2
    C、0.4
    D、0.8
9、下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是________。
main()
{
    char s1[]="chinese",s2[]="japanese";
    int i;
    for(i=0;s1[i]='\0'&&s2[i]!='\0';i++) if(s1[i]==s2[i]&&i<7) ________;
}
    A、putchar(s2[i]);putchar(i)
    B、puts(s1[i],i)
    C、printf("%c%d\n",s2[i]。i)
    D、printf("%C",s1[]);printf("%d\n",i)
10、以下能正确定义一维数组的选项是________。
    A、int a[5]={
  0.1,2.3.4,5);
    B、char a[]={
  0,1,2,3,4,5);
    C、char a={'A’,'B','C');
    D、int a[5]=”0123”;
11、以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:
#include<stdio.h> findmax(int*s,int t,int*k)
{
    int p;
    for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________;
}
main()
{
    int a[10],i,k;
    for(i=0;i<10;i++)scanf("%d",&a[i]);
    findmax(a,10,&k);
    printf("%d,%d\n",k,a[k]);
}
    A、k=p
    B、*k=p-s
    C、k=p-s
    D、*k=p
12、变量的指针是________。
    A、变量的值
    B、变量存储单元的地址
    C、指针变量
    D、变量存储单元的字节数
13、有以下程序: 
int f(int n) 
{
    if(n ==1) return 1;
    else return f(n-1)+1;
     
}
main( ) 
{
    int i,j=0;
    for(i=1;i<3;i++) j+=f(i);
    printf("%d\n",j);
     
}
  程序运行后的输出结果是________。
    A、4
    B、3
    C、2
    D、1
14、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。 
struct node 
{
    char data;
    struct node *next;
}
a,b,*p=&a,*q=&b;
    A、3 4 7 5
    B、3 5 7 4
    C、1 2 3 4
    D、1 2 3 5
15、有以下程序:
void fun(int*pl,int*p2,int*s)
{
    s=(int*)malloc(sizeof(int));
    *s=*pl+*p2;
    free(s);
}
main()
{
    int a=1,b=40,*q=&a;
    fun(&a,&b,q);
    printf("%d\n",*q);
}
程序运行后的输出结果是________。
    A、42
    B、0
    C、1
    D、41
16、有以下程序
#include <stdio.h>
main()
{
    int a[]={2,3,5,4},i;
    for(i=0;i<4;i++)
    switch(i%2)
    {
        case 0: switch(a[i]%2)
        {
            case 0:a[i]++;
            break;
            case 1:a[i]--;