2205期C语言初级阶段结课测评

姓名
    ____________
以下4组标识符中,全部符合标识符命名规则的一组是( )。
A、static,#abc,Java
B、define,go,666
C、$a1,_123,printf
D、@cxk,bi1ibi1i,N_
以下C语句中,正确的是( )。
A、int a = 10%1.5;
B、int a = (1, 2, 3);
C、int a = 1, 2, 3;
D、int a = 555/0;
在C程序中有一个二维数组A[7][8],每个数组元素用相邻的8个字节存储,那么存储该数组需要的字节数为( )。
A、56
B、120
C、448
D、512
以下程序段的输出结果为( )。

void swap(int *x, int *y)

{

 int *z;

 z = x; x = y; y = z;

}

int main()

{

 int a = 10, b = 20;

 swap(&a, &b);

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

 return 0;

}

A、a=10,b=20
B、a=20,b=10
C、a=20,b=20
D、a=10,b=10
以下程序段的输出结果为( )。

 char c[10] = "abcdefg";

 short *sp = (short *)c;

 char *cp = (char *)(sp + 1);

 puts(cp);

A、abcdefg
B、bcdefg
C、cdefg
D、efg
以下程序段的作用是( )。

int a[]={4,0,2,3,1},i,j,t;

for (i=1;i<5;i++)

{

 t=a[i];

 j=i-1;

 while (j>=0&&t>a[j])

 {

  a[j+1]=a[j];

  j--;

 }

 a[j+1]=t;

}

A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
以下fun函数的功能是( )。

int fun(char * str) //abcdef\0

{

 int i=0;

 while('\0'!=*str++)

 {

  i++;

 }

 return i;

}

A、字符串比较
B、字符串拷贝
C、求字符串长度
D.选项4
有以下程序:

long fib(int n)

{

 if(n>2)

  return (fib(n-1)+fib(n-2));

 else

  return (2);

}

int main()

{

 printf("%ld\n",fib(5));

}

该程序的输出结果是( )。

A、4
B、6
C、8
D、10
若定义了以下函数fun,如果p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p正确的定义形式为( )。

void fun(……){

 *p=(int * )malloc(10 * sizeof(int));

}

int main()

{

 int *p = NULL;

 fun(&p);

 *p=10;

 printf("%d\n",*p);

 return 0;

}

A、int *p
B、int **p
C、int *(p)[10]
D、int *p[10]
若已建立如下图所示的单向链表结构:


在该链表结构中,指针p、s分别指向图中所示的节点,则不能将s所指向的节点插入到链表末尾使链表结构仍构成单向链表的语句组是( )。

A、p=p-next; s-next=p; p-next=s;
B、p=p-next; s-next=p-next; p-next = s;
C、s-next = NULL; p=p-next; p-next=s;
D、p=(*p).next; (*s).next=(*p).next; (*p).next=s;
以下程序段的输出结果为       

printf("%d ",sizeof("\0abc"));

printf("%d ",strlen("\0abc"));

printf("%d ",sizeof("\0123"));

printf("%d ",strlen("\0123"));

printf("%d ",sizeof("\123"));

printf("%d ",strlen("\123"));

    ____________
以下程序的输出结果为      

#include <stdio.h>

#define A(X) X;X;X;X;X;X;X;X;X;X;

void main()

{

 int n = 0;

 A(A(A(printf("%d\n", n++))))

 return 0;

}

    ____________
如有以下程序

#include <stdio.h>

void fun(char *a,char *b)

{

 while(*a=='*') a++;

 while(*b=*a){b++;a++;}

}

int main()

{

 char *s="*****a*b*****",t[20];

 fun(s,t);

 puts(t);

 return 0;

}

该程序的运行结果为      

    ____________
如有以下程序段:

char *strs[6]={"12345\67890abcde","C\0C++\\0","Hello World!\n",

     "\"Oh,yes!\"","Everything is C"};

char *str1 = strs[1];

char *str2 = *(strs+3);

char ch1 = *(*(strs+2)+6);

char ch2 = (*strs+4)[5];

char ch3 = *strs[4]+3;

printf("str1=%s\n",str1);

printf("str2=%s\n",str2);

printf("ch1=%c\n",ch1);

printf("ch2=%c\n",ch2);

printf("ch3=%c\n",ch3);

其运行后的输出结果为      

    ____________
以下程序的输出结果为      

#include <stdio.h>

union test{

 int a[3];

 int b,c;

};

void fun3()

{

 union test T = {1,2,3};

 printf("%d %d\n", T.b, T.c);

}

int main()

{

 fun3();

 return 0;

}

    ____________
编写函数,输出所有的“水仙花数”。

说明:所谓的水仙花数是指一个3位数,其各位数字的立方和等于其本身。

例如:153是一个水仙花数,因为153=1*1*1 + 5*5*5 + 3*3*3。

    ____________
从键盘输入一个正整数,编写一个函数判断其是否为回文数,如果是回文数则返回1,否则返回0。

说明:回文数就是顺序读和逆序读都一样的数。例如:12321反过来还是12321。

    ____________
编写一个函数求任意两个整数的最大公约数。
    ____________
编写一个函数求子串在父串中出现的次数。

例如:子串"abc"在父串"aabcbcabcabd"中的出现次数为2次。

    ____________
编程实现,递归求解猴子摘桃问题。

猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天又将剩下的桃子吃掉一半,又多吃一个。以后每天都吃掉前一天剩下桃子的一半加一个。直到第十天还想要吃桃子时,就只剩下一个桃子了。问猴子第1天摘了多少个桃子。

    ____________

21题 | 被引用0次

使用此模板创建