2017/11/25 C语言作业

C语言试题

//编程环境32位机器

Ps:会做的题目,简要写出分析过程;不会的度娘写出思路!

 

一、选择题(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语言中,要求运算数必须是整型的运算符是(  B  )。

[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.    下面的程序运行结果为( C  )。

#include <stdio.h>

intmain(void)

      {

int x= 3, y = 1, z = 0;

        if(x = y + z)

              printf(“****”);

        else

           printf(“####”);

      }

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

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

intmain(void)

{

intY=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;  

   staticint   c;  

   a+=3;                   

   other();13/8/8 
         b+=3;  
       other();18/8/13  
  }      
     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;  13 8 8

          }

 

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

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

#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中,请为程序中的空白处选择适当的语句。  (    )       

    #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 ( D ) 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源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是(  A )。

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

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

     void sub(int x,int y, int *z)

        { *z = y – x ; }

        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语言表达式为((2<x&&x<3)||(x<-10)   )。

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

int *p[3], a[6], i;

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

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

1,2<CR>                   4567

int main(void)             891011      a[4] 1234

{                                     *p    p=a    *(p+i)

   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脚本的本质是( 操作系统与外部最主要的接口    )。

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

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

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

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

#define min (a>b?b:a)

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

#include<stdio.h>

int main(void)

{

   int i=2,j=0;

   do

   { 

     j=j+i;

     i=i+2;

   }while(i<=20);

   printf("1~20偶数的和为:%d",j);

   return 0;

}

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

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

Int findMax(int * array, int len, int * pData);

// 下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。

Int findMax(int * array, int len, int * pData)

// *array记录当前位置的元素数值    * pData 记录当前元素的下标志

{

   int max=0;

   for(i=0;i<len-1;i++)

   {

     if(*array[i]>*array[max])

     {

        max=i;    

     }

   }

   pData=array[max];

   return pData;

}

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

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

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

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

char *stringcat(char * dest,const char * str)

{

  char * save_head=dest;

  do

  {

    * dest++;

  }while(*dest!="\0");//让头指针指向"\0"

  while(* dest++=* str++)

  return save_head;

}

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

Void sort(int * array, int len);

#include <stdio.h>

int sort(int * array, int len)

{

  inti,j;

  int* amp;

  for(i=0;i<len-2;i++)

  {

    for(j=i+1;j<len-1;j++)

    {

       if(array[i]>array[j])

       {

          *amp=array[i];

          array[i]=array[j];

          array[j]=*amp;

       }

    }

  }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值