江西山水光电科技有限公司 - C基础题目笔试题

C语言考试题(考试时间:60分钟)

一、单项选择题 

1、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( D )

  A、 6.500000           B、 6          C、 5.500000           D、 6.000000  

2、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 (B )  

A、 INPUT x、y、z;                B、 scanf("%d%d%d",&x,&y,&z);   

C、 scanf("%d%d%d",x,y,z);      D、 read("%d%d%d",&x,&y,&z);   

3、设 int  x=1, y=1; 表达式(!x||y--)的值是( B)。  

A、0  B、1  C、2  D、-1  

4、对两个字符数组a和b进行初始化char a[]="ABCDEF";char b[ ]={'A','B','C','D','E','F'}; 则以下叙述正确的是( D )。 

A、a与b数组完全相同     B、a与b长度相同    

C、a和b中都存放字符串   D、a数组比b数组长度长  

5、为了避免在条件语句if―else中产生二义性,c语言规定:else子句总是与( B )配对。  

A、缩排位置相同的if  B、其之前最近的if   C、其之后最近的if   D、同一行上的if 

6、下面不正确的字符串常量是( A) 

A、 'abc'    B、 "12'12"      C、 "0"      D、 "  " 

7、以下错误的if语句是(C )。

 A、 if(x>y) z=x;       B、 if(x= =y) z=0;  

C、 if(x!=y) printf("%d",x) else printf("%d",y);      D、 if(x<y) { x++;y--;} 

8、若有说明:int  a[3][4];则对a数组元素的非法引用是( D )。 

A、a[0][2*1]   B、a[1][3]   C、a[4-2][0]   D、a[0][4] 

9、程序char c[5]={‘a’,’b’,’\0’,’c’c,’\0’}; printf(“%s”,c);}的运行结果是(   C )。 

A、'a''b'  B、abc  C、ab  c  D、ab cc 

10、一个C程序的执行是从(A )。 

A、本程序的main函数开始,到main函数结束 

B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C、本程序的main函数开始,到本程序文件的最后一个函数结束   

D、本程序文件的第一个函数开始,到本程序main函数结束 

11、若变量已正确定义,以下非法的表达式是(B) 

A、a/=b+c    B、a%(4.0)    C、a=1/2*(x=y=20,x*3)    D、a=b=c 

12、判断字符串a是否大于b,应当使用( D )。 

A、if (a>b)  B、if (strcmp(a,b))   C、if (strcmp(b,a)>0)   D、if (strcmp(a,b)>0) 

13、以下关于运算符优先顺序的描述中正确的是( C)。 

A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 

B、逻辑与运算符<关系运算符<算术运算符<赋值运算符  

C、赋值运算符<逻辑与运算符<关系运算符<算术运算符

 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 

14、使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据输入是:( A) 

A、a=2.2,b=3    B、a=2.2 b=3    C、2.2 3    D、2.2,3 

15、表示关系12<=x<=y的C语言表达式为:( B) 

A、(12<=x)&(x<=y)   B、(12<=x)&&(x<=y)  

 C、(12<=x)|(x<=y)  D、(12<=x)||(x<=y) 

16、语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数(C ) 

A、4    B、6    C、5    D、1 

17、如下定义:struct jan{int a;float b;}c2,*p;若有p=&c2;则对c2中的成员a的正确引用( C) 

A、(*p).c2.a     B、(*p).a     C、p->c2.a    D、p.c2.a  

18、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a > b)&&(n=c>d)后n的值为( B )
  A、1              B、2               C、3             D、4

19、执行下列语句后,程序的运行结果是(  B
  int main()
  {
    int x = 10,y = 10, i;
    for(i=0;x>8;y=i++)
    {  printf(“%d,%d,”,x--,y);    }

}
 A.10,0,9,1     B.10,10,9,0      C.10,1,9,2          D.9,10,8.0

20、下列程序的运行结果是( C )

struct example1  

{

short a;  long b;  };  

struct example2  

{  char c;   example1 struct1;  short e;     };  

int main()  

{  

printf(“%d”, sizeof(example1));  

printf(“%d”, sizeof(example2));  

}
A. 6,9        B. 6,10 C. 8,16       D. 8,24

二、填空题 

1、a是整型变量,则执行表达式a=25/3%3后a的值为。  2     

2、下面程序的运行结果是 。   

main() 

{ int i,x,y;    i=x=y=0; 

   do {++i;        if(i%2!=0)   {x=x+i;  i++;}       y=y+i++;     } while (i<=7); 

      printf("x=%d,y=%d\n",x,y); } 

运行结果是:   x=1,y=20       

3、若int x=5;while(x>0)printf(“%d”,x--);的循环执行次数为   5            。 

4、若有说明和语句:int a=5,b=6,y=6;b-=a;y=a++则b和y的值分别是  b=1,y=5    。 

5、x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式: x<z || y<z          

6、以下程序的输出结果为     to   
main( )
{  char *a[]={“welcome”,”to”,”ruishang”};
   char **pa=a;    pa++;
printf(“%s”,*pa);return ;  }

四、编程题  

1、输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留一位小数

#include <stdio.h>
 int main(int argc, char const *argv[])
 {
    int grades[3][4];
    int score[3] = {0};
    printf("请输入成绩\n");
    for(int i = 0; i < 3; i++)
    {
        for(int j = 0; j < 4; j++)
        {
            scanf("%d", &grades[i][j]);
            score[i] += grades[i][j];
        }
    }
    for(int n = 0; n < 3; n++)
    {
        printf("总分:%.1f,平均分:%.1f\n",(float)score[n], score[n]/4.0);
    }
    return 0;
 }

2、起泡法(选择法)对十个数排序 

//冒泡排序
#include <stdio.h>

#define N 10

void swap( int *a, int *b)//交换两个数
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

int main(int argc, char const *argv[])
{
    int arr[N];
    printf("请输入%d个整数:",N);
    for(int i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }
    for(int i = 0; i < N-1; i++)
    {
        for(int j = 0; j < N-1-i; j++)
        {
            if(arr[j] > arr[j + 1])
            {
                swap(&arr[j], &arr[j+1]);
            }
        }
    }
    for(int n = 0; n < N; n++)
    {
        printf("%d ", arr[n]);
    }
    printf("\n");
    return 0;
}
//选择排序法
#include <stdio.h>

#define N 10

void swap( int *a, int *b)//交换两个数
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}


int main(int argc, char const *argv[])
{
    int arr[N], k = 0;
    printf("请输入%d个整数:",N);
    for(int i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }
    for(int i = 0; i < N-1; i++)
    {
        k = i;//标记下标
        for(int j = i+1; j < N; j++)
        {
            if(arr[k] > arr[j])
            {
                k = j;//寻找最小值的下标
            }
        }
        if(k != i)//将最小值放入最左边
        {
            swap(&arr[i],&arr[k]);
        }
    }
    for(int n = 0; n < N; n++)
    {
        printf("%d ", arr[n]);
    }
    printf("\n");
    return 0;
}

3、编写strcpy函数:已知strcpy函数的原型是  char *strcpy(char *strDest, const char *strSrc);  其中strDest是目的字符串,strSrc是源字符串。

char *my_strcpy(char *strDest, const char *strSrc)
{
    char *ret = strDest;
    while(*strDest++ = *strSrc++)
    {
        ;
    }
    return ret;
}

4. 以下为ARM下的32位C程序,请计算sizeof的值

char  str[] = “Hello” ;

char   *p = str ;

int     n = 10;

请计算

sizeof (str ) =  6

sizeof ( p ) =  4 

sizeof ( n ) =   4

  

void Func ( char str[100])

{

请计算

sizeof( str ) =   100

}

void *p = malloc( 100 );

请计算

sizeof ( p ) =   100

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值