C-11练习题

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

1,在C语言中,合法的长整型常数是()

A. OxOL
B. 4962710M
C. 324562&
D. 216D

2,设有定义: int a[10],*p=a+6,*q=a; ,则下列运算哪种是错误的()

A. p-q
B. p+q
C. p+3
D. p>q

3,下列语句中符合C语言语法的赋值语句是()

A. a=1+b+c=a+1;
B. a=(1+b,c-atl);
C. a=(1+b,b++,a+1);
D. a=l+b,c=a+1

  1. 下面的叙述中不正确的是()

A.用typedef可以定义各种类型名,但不能用来定义变量
B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的标识符来代表
D.使用typedef有利于程序的通用和移植

5,设有数组定义: char array [7]-“China”;则数组array所占的空间为()

A. 4 个字节
B. 5个字节
C. 6个字节
D. 7个字节

6.已知字母a的ASCII值为十进制的97,下面程序的输出是()

#include
void main
{
char cl,c2;
cl=‘a’+6’-2’; c2=‘a’+‘6’-‘3’;
printf(“%c,%din”,c2,cl);
}

A. 输出不确定的值
B. d,e
C. e, f
D. d, 101

7,以下正确定义一维数组的选项是()

A. mta[5]={0, 1,2,3,4,5);
B. char a[]= “ABC”;
C. char a[]= “ABC”. char a=“ABC”;
D. int a[5]=“123”;

8若定&inti;则以下循环语句的循环执行次数是(forfi=2; i=0;) printf(“%d”, i-)

A.无限次
B. 0次
C. 1次
D. 2次

  1. 与以下定义等价的是()
    int*p4

A. int p4]
B. intp
C. int
(p4])
D. int (*p)[4]

10.假定a和b为int型变量,则执行以下语句后b的值为()
a=1;b=10;
do {b-=a;a++;)
while(b–<0);

A. 9
B. -2
C. -1
D. 8

  1. 请选出正确的程序段()
    A. int p;
    scanf(“%d”,p);
    ‘’‘’
    B. int *s,k;
    *s=100;

C. int *s, k;
char *p, c;
s=&k;
p=&c;
*p=‘a’;

D. int *s, k;
char *p, c;
s=&k;
p=&c;
S-p;
*s=1;

12.若有以下的说明和语句:
#include
void main()
{ int t[3][2], *pt[3],k;
for(k=0; k<3;k++) pt[k]=t[k]; }

A. &t[3][2]
B. *pt[0]
C. *(pt+1)
D. &pt[2]

  1. 若有以下定义和语句:doubler=50,*p=&r; *p-T; 则以下正确的叙述是()

A. 两处的p 含义相同,都说明给指针变量p赋值
B.在double r-50,p-&r;中,把r的地址赋值给了p所指的存储单元
c.语句
p-T:把变量r的值赋给指针变量p
D.语句
p-t:取变量r的值放回r中

14.执行以下程序后, y的值是()

#include
void main ()
{
int a0={2,4,6,8,10};
int y=1,x.p;
p=&a[1];
for(x=0;x<3;x++) y+=
(p+x);
printf(“%d\n”,y);
}

A17
B18
C19
D20

15.当说明一个共用体变量时,系统分配给它的内存是()

A.第一个成员所需内存空间
B. 各成员所需内存空间之和
c. 各成员所需内存空间的最大值
D.最后一个成员所需内存空间

16, 设ntx=1, y-1:表达式(! x++&&y-) 的值是()

A.0
B. I
C. 2
D. -1

  1. 要求函数的功能是交换x 和y中的值,且通过正确调用返回交换结果。能正确执行功能的函数是()

A. funa (intx, inty) {int*p: *p=*x: x=*y: y=*p: }
B. fund (intx,inty) {intt; tx; xy: yt: }
C. fune (int xs intg) {*x=*y: *y=x: }
D. fund fint
x, int *y) {*x=*x+*y; *y=*x-*y: *x=*x-*y: }

18以下程序的输出结果是()

#include
#include < string.h>
void mainz()
{ char *s1=“ABCDEF”,*s2=“aB”;
sl++;s2++;一printf(“%d”,strcmp(s1,s2));
}

A. 正数
B. 负数
C. 零
D.

19.一下程序的运行结果是()

#include 

void sub(int s[], int *y) {
    static int t = 3;
    *y = s[t];
    t--;
}

int main() {
    int a[] = {1, 2, 3, 4};
    int i, x = 0;

    for (i = 0; i < 4; i++) {
        sub(a, &x);
    }

    printf("%d\n", x);

    return 0;
}

A. 1234
B. 4321
C. 0000
D. 4444

  1. 以下不能正确赋值的是()

A. char s1[10];s1=“test”;
B. char s20={t’e’s,'t}
C. char s3[20]=“test”;
D. char s4[4]={‘t’,‘e’,‘s’,‘t’}

二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结果填写在答题纸的相应位置上。)

#include 
void main()
{ int n='c';
switch(n++)
{default: printf("error"); break;
case 'a': case 'A': case 'b': case 'B': printf("good"); break;
case 'c': case 'C': printf("pass");
case 'd': case 'D': printf("warn");
}
}
#include 

void main() {
    char s[] = "ABCD";
    char *p;

    for (p = s; p < s + 4; p++) {
        printf("%c\n", *p);
    }
}

#include

void main() {
    int a[3][4] = {
        {1, 3, 5, 7},
        {9, 11, 13, 15},
        {17, 19, 21, 23}
    };

    int (*p)[4], i, j, k = 0;
    p = a;

    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            k += *(*(p + i) + j);
        }
    }

    printf("%d\n", k);
}

#include 

static int m = 0, i = 2;

int func(int a, int b) {
    i += m + 1;
    m = i + a + b;
    return m;
}

int main() {
    int k = 4, p;
    
    p = func(k, m);
    printf("%d\n", p);
    
    p = func(k, m);
    printf("%d\n", p);

    return 0;
}

#include 

int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

int f(int n) {
    if (n - 1) {
        return (n * f(n - 1) + a[n] / (n + 1));
    } else {
        return a[0];
    }
}

int main() {
    int n = 6;
    printf("f(%d) = %d\n", n, f(n));

    return 0;
}

三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上

  1. 函数 void fun(float * sn,int n)的功能是:根据以下公式计算 S,计 结果通连形 A指锥 s 传回: n通过形参传入,n的值大于等于0。
#include 

void fun(float *sn, int n) {
    float s = 0.0, w, f = -1.0;
    int i = 0;

    for (i = 1; i <= n; i = i + 2) {
        f =_________;  // Toggle the sign for each iteration
        ________=s;
    }

  1. 以下程序用来显示如下图案,请填空。
    C-11练习题_第1张图片
#include 

int main() {
    int a[5][5], i, j;

    for (i = 0;________; i++) {
        for (j = 0; ________; j++) {
            if (i == j) {
                a[i][j] = ________;  
            } else {
              
                a[i][j] = _________;
            }
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }

    return 0;
}

3.以下程序中函数fun的功能是:统计person所指结构体数组中所有年龄>60的记录的个数,存入变量n中,并作为函数值返回。请填空。

#include 

#define N 3

typedef struct {
    int num;
    char name[10];
    int age;
} SS;

int fun(SS person[]) {
    int i, n = 0;

    for (i = 0; i < N; i++) {
        if (____________) {
            n++;
        }
    }

    return n;
}

int main() {
    SS W[N] = {{1, "AA", 60}, {2, "BB", 73}, {3, "CC", 62}};
    int n;

    n =_________;

    printf("n = %d\n", n);

    return 0;
}

四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)

  1. 编程:分别输出 1!到n!(要求用静态变量)

  2. 编程:从字符串 str 中截取一子串。要求该子串是从 str 的第 m个字符开始,由 n个字符组成。

3,从键盘输入某班学生的学号以及某门课的成绩(每班人数最多不超过40入,其体人数由键盘输入),计算并输出最高分及相应学生的学号。
要求:1.输入数据用子函数实现。2.计算最高分用子函数实现。3.在主函数输出结果。

你可能感兴趣的:(2模拟2C,c语言,算法,开发语言,河北专升本)