广州传智播客iOS基础班C语言考试题目(自我感觉挺简单的,很多老师讲的都没考到,错了一道选择题,加油,OC!)

广州传智播客iOS基础班C语言考试题目

考试时间:180分钟

满分:100分 及格分数:80分

 

一、选择题(共10题,每题5分)

 

 1. 若有数组 int arr[2][3];  则对a数组元素的正确访问是(C )

    A. arr(1,2)       B. arr[1,3]       C. arr[1>2][!1]        D. arr[2][0]

 

 2. 若有代码: double d1 = 12.56; int num = d1; 请问num变量的值是(C )

    A. 12.56         B. 13            C. 12               D. 13.0

 

 3. 若有说明语句:

int a, b, c, *d=&c;

    则能正确从键盘读入三个整数,分别赋给变量a、b、c的语句是(A )

   A. scanf("%d%d%d", &a, &b, d);

   B. scanf("%d%d%d", a, b, d);

   C. scanf("%d%d%d", &a, &b, &d);

   D. scanf("%d%d%d", a, b,*d);

 

 4. 若有语句:

     int num1 = 10;

     int num2 = 4;

     double num3 = num1 / num2;

   请问变量num3的值是(D )

  A.   2.5            B.  3             C .  2              D. 2.0

 

5. 如有代码:

    int i = 1;

    int j = i++;

    printf(“i = %d, j = %d”,i,j);

  请问程序的输出结果是( C)

  A. i = 1,j = 1       B.  i = 1, j = 2      C. i  = 2, j = 1     D. i = 2, j = 2   //i 已经自增为2了,汗,大意了

 

 

 

 

 

6. 如有代码:

    int num = 10;

    if(num - 10)

        printf(“哈哈”);

    else

    printf(“呵呵”);

请问该代码的执行结果是(C )

  1.  代码错误,编译报错.
  2.   打印  哈哈
  3.   打印  呵呵
  4.   打印  哈哈 呵呵

 

 

7. 请问如下循环体(最内层的循环体)将执行多少次(B )

    for(int i = 0; i < 5; i++) 

    {

for(int j =  0;j < i ; j++) 

       {

printf(“我爱传智播客!\n”);

}

    }

   A. 5次              B. 10次             C. 15次           D. 20次

 

8. 有如下代码:

int num1 = -4;

int num2 = num1 >> 2;

  请问变量num2的值是多少(A )

   A.  -1                B. 1               C. 16                   D. -16

 

9.以下叙述中正确的是(A )

  A、C语言程序总是从main函数开始执行

  B、C语言程序所调用的函数必须放在main函数的前面

 C、C语言程序中main函数必须放在程序开始位置

 D、C语言程序总是从最前面的函数开始执行

 

 

 

 

 

10. 有代码如下:

char str[] = “jack”;

int length =  sizeof(str);

printf(“%d”,length);

    请问程序执行的结果是(C )

    A. 10        B. 4        C. 5         D. 6

 

 

 

二、简答题(共2题,每题10分)

 

 1. 请简述break、continue、return这三个关键字在C语言中各自的作用.

答:

 

 

 

 

 

 

2. 请简述C语言中字符串数据是如何存储的.

答:字符串在C语言中有两种存储方式。

 

 

 

三、编程题(共2题)

 

  1. 请自定义一个函数交换两个整形变量的值。(10分)

#include

/**

 *  交换主调函数只中两个整形变量的值

 *

 *  @param p1 变量1的地址

 *  @param p2 变量2的地址

 */

void exchange2Num(int *p1,int *p2);


int main(int argc, const char * argv[])

{

    int num1 = 1;

    int num2 = 2;

    printf("交换前:num1 = %d, num2 = %d\n",num1,num2);

    exchange2Num(&num1,&num2);

    printf("交换后:num1 = %d, num2 = %d\n",num1,num2);

    return 0;

}

void exchange2Num(int *p1,int *p2)

{

    *p1 = *p1 ^ *p2;

    *p2 = *p1 ^ *p2;

    *p1 = *p1 ^ *p2;

}


 

 

2.  请用户从控制台输入班级的总人数,然后让用户依次输入每一位学生的成绩并保存(20分)

1). 将分数从高到底的打印来.

2). 显示总分数和平均分. 

3). 去掉3个最低分再显示总分数和平均分.

//
//  main.c
//  编程题2--改进为通过定义结构体返回多个值
//  Created by LongMa on 15/8/16.
//  Copyright (c) 2015年 itcast. All rights reserved.
//2.  请用户从控制台输入班级的总人数,然后让用户依次输入每一位学生的成绩并保存(20分)
//1). 将分数从高到底的打印来.
//2). 显示总分数和平均分.
//3). 去掉3个最低分再显示总分数和平均分.

#include 

#define  Dast1_Debug 1
#if Dast1_Debug
#define LOG1(str1,str2)   printf(str1,str2)
#else
#define LOG1(str1,str2)
#endif

#define LOG(str1,str2) printf(str1,str2)//有参宏定义,方便输出

/**
 *  让用户依次输入每一位学生的成绩并保存
 */
void userInputScores(int num, float *a);

/**
 *  将分数从高到底排序.
 */
void sortScorsHighTolow(int num, float *a);

/**
 *   输出分数
 *
 *  @param num 人数
 *  @param a   存成绩的数组的首地址
 */
void showScore(int num,float* a);

/**
 *  求总分和平均分
 *
 *  @return 总分,平均分通过返回结构体成员的值进行修改
 */

//自定义 struct Score 类型含两个参数的结构体 score。不必用指针也可以用结构体多个元素的特点返回多个值!
typedef struct //匿名结构体,省去了结构体的名字,在用typedef自定义时,可以省略的!
{
    float totalS;
    float avgS;
    
}score;
score totalScore(int num, float *a);

int main(int argc, const char * argv[])
{
    int num = 0;
    LOG("请输入学生总人数:",NULL);//str2无参可传,传NULL
    scanf("%d",&num);
    float a[num];
    
    userInputScores(num, a);
    sortScorsHighTolow(num, a);
    
//    float avgScore1;          //用结构体,省略了这些和下面减除3的多次定义!
//    float* avgS = &avgScore1;
    score score2;
    score2 = totalScore(num, a);
    LOG ("学生总分为:%20.1f\n",score2.totalS);
    LOG ("学生平均分为:%18.1f\n",score2.avgS);
    
    score score3 = totalScore(num - 3, a);
    LOG("------------------------------------------------\n",NULL);
    if (num >3)
    {
        LOG ("去掉3个最低分后学生总分为:%7.1f\n",score3.totalS);
        LOG ("去掉3个最低分后学生平均分为:%6.1f\n",score3.avgS);
    }else
    {
        printf("学生人数不大于3个,无法实现去掉3个最低分的功能!\n");
    }
    
    LOG("------------------------------------------------\n",NULL);
    LOG ("The end!\nWish you love it!\n", NULL);
    LOG("\t\t\t\t- By Dast1\n", NULL);
    LOG("------------------------------------------------\n",NULL);
    return 0;
}

void userInputScores(int num, float *a)
{
    
    for (int i = 0; i < num; i++)
    {
        LOG ("请输入第%d个学生的成绩:", i + 1);
        rewind(stdin);
        scanf("%f", (a + i));
    }
    LOG1("------------------------------------------------\n",NULL);//LOG1(),可通过 Dast1 来控制是否输出下面的用于调试的内容。
    LOG1("您输入的学生成绩如下:\n",NULL);//验证是否存储正确
    showScore(num, a);
}

void sortScorsHighTolow(int num, float *a)
{
    for (int i = 0; i <= num - 2; i++)//冒泡降序排序
    {
        for (int j = 0; j <= num - 2 - i; j++)
        {
            if (a[j] < a[j + 1])
            {
                float temp = a[j];
                a[j]       = a[j + 1];
                a[j + 1]   = temp;
            }
        }
    }
    LOG("------------------------------------------------\n",NULL);
    LOG("学生成绩从高到低输出如下:\n",NULL);
    showScore(num, a);
}

void showScore(int num,float* a)
{
    for (int j = 0; j < num; j++)
    {
        LOG1 ("%.1f\t\t",a[j]);
    }
    LOG1 ("\n",NULL);
}

score totalScore(int num, float *a)//只是声明了函数的类型,函数里面肯定要定义新的此类型的变量啊!
{
    score score1;//先定义!
    score1.totalS = 0.0f;
    for (int i = 0; i < num; i++)
    {
        score1.totalS += a[i];
    }
    score1.avgS = score1.totalS / num;
    return score1;//返回结构体变量里面的 成员 的值!
    
}


你可能感兴趣的:(广州传智播客iOS基础班C语言考试题目(自我感觉挺简单的,很多老师讲的都没考到,错了一道选择题,加油,OC!))