第九次作业

来源:互联网 发布:mac地址查询 编辑:程序博客网 时间:2024/06/06 17:04

C语言试题

//编程环境32位机器

一、选择题(15题,共30分)

1.假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下( C )通配符可以挑选出其中的编号为1、3、5的文件。

[A] file_*.txt [B] flie_?.txt [C] file_[135].txt [D] file_[^135].txt

2.文件权限 r-x-wxr–对应的八进制表示形式为( D )

[A] 0536 [B] 0654 [C] 0656 [D] 0534

3.在C语言中,要求运算数必须是整型的运算符是( D )。

[A] / [B] ++ [C] != [D] %

4.C语言中,逻辑“真”等价于( C )。

[A] 大于零的数 [B] 大于零的整数 [C] 非零的数 [D] 非零的整数

5.下面函数的功能是( A )。

int fun (char*x){char*y=x;while(*y++);return(y-x-1);}

[A] 求字符串的长度
[B] 比较两个字符串的大小
[C] 将字符串x复制到字符串y
[D] 将字符串x连接到字符串y后面
6.C语言程序的三种基本程序是( A )。
[A] 顺序结构,选择结构,循环结构
[B] 递归结构,循环结构,转移结构
[C] 嵌套结构,递归结构,顺序结构
[D] 循环结构,转移结构,顺序结构

7.执行下面语句后的输出结果为( D )。

int i = -1;    if (i < =0)        printf(“****\n”);            i = 2;        else         printf(“%%%%\n”);

[A] **** [B] %% [C] %%%% [D] 有语法错误。不能正确执行

8.下面的程序运行结果为( B )。

#include <stdio.h>int main(void)            {                int x = 3, y = 1, z = 0;                if(x = y + z)                    printf(“****”);                else                    printf(“####”);        }

[A] 语法有错误,不能编译 [B] ** [C] #### [D] 能编译,不能连接

9.下述程序的输出结果是( C )。

int main(void){ int Y=100;while(Y--);printf(“Y=%d”,Y);}

[A] Y=0 [B] Y=1 [C] Y=-1 [D] Y=随机数

10.结构体DATA定义如下,则sizeof(struct DATA)的值为( C )。

struct DATA { float f1; int i;char  c2; };

[A] 6 [B] 8 [C] 12 [D] 16

11.下述程序第二次的输出结果为( B )。

int main(void)   {       extern   int   a;       int   b=0;       static int   c;       a+=3;       other();           b+=3;           other();       }           int   a=5;               other()               {                   int   b=3;                   static   int   c=2;                   a+=5; b+=5; c+=5;                   printf("%d,%d,%d\n",a,b,c);                   c=b;               }

[A] 13,0,13 [B] 18,8,13 [C] 13,8,13 [D] 18,8,0

12.以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:( B )。

#include <stdio.h>int main(void){    char s[80] ;    int i, j ;    gets(s) ;    for ( i = j = 0 ; s [i] != ‘\0’ ; i++ )        if ( s [i] != ‘c’ )                         ;    s [ j ] = ‘\0’ ;    puts ( s ) ;    return 0 ;}

[A] s [ j++] = s [ i ] [B] s [ ++j ] = s [ i ]
[C] s [ j ] = s [ i ]; j++ [D] s [ j ] = s [ i ]

13.下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 ( A D A

        #include <stdio.h>        int main(void)        {            char a[ ] = “acegikm”;            char b[ ] = “bdfhjlnpq”;            char c[80], *p;            int i = 0, j= 0, k = 0;            while( a[i] != ’\0’ && b[j] != ‘\0’ )            {                if ( a[i] < b[j] )  { ( A ) }                  else { ( D ) }                  k++;            }            c[k] = ‘\0’;            if ( A )  p = b + j;              else  p = a + i;            strcat ( c , p );            puts ( c );        }

① [A] c[k] = a[i]; i++; [B] c[k] = b[j]; i++;
[C] c[k] = a[i]; j++; [D] c[k] = a[j]; j++;
② [A] c[k] = a[i]; i++; [B] c[k] = b[j]; i++;
[C] c[k] = a[i]; j++; [D] c[k] = b[j]; j++;
③ [A] a[i] = ‘\0’ [B] a[i] != ‘\0’
[C] b[j] = ‘\0’ [D] b[j] != ‘\0’

14.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( D )。

[A] extern [B] register [C] auto [D] static

15.以下程序的运行结果为( B )。

        void sub(int x, int y, int *z)            { *z = yx ; }            int main(void)            {                int a,b,c ;                sub(10, 5, &a) ;                sub(7, a, &b) ;                sub(a, b, &c) ;                printf( “%4d,%4d, %4d\n”,a,b,c);            }       

[A] 5, 2, 3 [B] -5, -12, -7 [C] -5, -12, -17 [D] 5, -2, -7

二、填空题(6题,第5题4分,其余每空2分,共16分)

1. 条件“2 < x < 3或x < -10”的C语言表达式为( x>2&&x<3|| x<-10 )。

2. 若有以下定义和语句,则*p[0]引用的是a数组元素中的( a[0] ),*(p[1]+1)引用的是a数组元素中的( a[3] )。

int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i];

3. 若有以下输入(代表回车换行符),则下面程序的运行结果为( 6 )。

12<CR>int main(void){    int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};    int (*p)[4], i, j;    p = a;    scanf(“%d,%d”,&i,&j);    printf(“%d\n”, *(*(p+i)+j));    return 0;}

4. shell脚本的本质是( shell命令的有序集合 )。

5. gcc的编译步骤按先后顺序分别为( 预处理,编译,汇编,链接 )。

6. make工程管理器根据( 文件时间戳 )来自动发现更新过的文件从而减少编译的工作量。

三、简答题(1题4分,第2题10分,共15分)

1.请写出定义一个求最小的宏(5分)

#define MIN ((a)<(b))?a:b

2.写出1~20偶数的和,用do…while编程来实现(10分)#include

int main(void){    int i = 0, sum = 0;    do{        i+=2;        sum += i;    }while((i%2)||i<20);    printf("sum=%d\n",sum);}

四、编程题(3题,每题12分,共39分)(编程题写出思路并且正确可以得一半分)

1.下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。(13分)

Int findMax(int * array, int len, int * pData);int findMax(int *array, int len, int *pData){    int i;    *pData=0;    for(i=0;i<len;i++)    if(array[*pData]<array[i])     *pData=i;     return array[*pData]; }

2.char * stringcat(char * dest, const char * str); (13分)

功能:把src所指空间的字符连接到dest所指字符串的后面。

char * stringcat(char * dest, const char * str){    char *P;    *p = dest;    while(*(dest+1)++);    while(*dest++ = *str++);    return *p;}

3.写一个接口,把去年1月份的每天的平均温度进行排序。(13分)

Void sort(int * array, int len);void swap(int array[], int i, int j){    int temp = array[i];    array[i] = array[j];    array[j] = temp;}void sort(int *array, int len){    int i, j;    for(j = 0; j < len-1; j++)    {        for(i = 0; i < len-1; i++)        {            if(array[i] > array[i + 1])            {                sawp(array, i, i+1);            }        }    }}
原创粉丝点击