C语言笔试题训练【第一天】

目录

第一题

第二题

第三题

第四题

第五题


大家好,我是纪宁。

从今天开始博主会日更一些经典的C语言笔试题,持续20天左右。题目类型为5道选择题加2道编程题,希望能和大家一起进步。

第一题

1.读程序,下面程序正确的输出是()

cpp 复制代码
#include<stdio.h>
int x = 5, y = 7;
void swap()
{
	int z;
	z = x;
	x = y;
	y = z;
}
int main()
{
	int x = 3, y = 8;
	swap();
	printf("%d,%d\n",x, y);
	return 0;
}

A: 5,7 B: 7,5 C: 3,8 D: 8,3

swap函数调用时用的是全局变量,主函数中定义的变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平 行关系;输出语句这里,考虑局部优先的原则。所以答案选 C

知识点:

C语言函数详解http://t.csdn.cn/wkkmF

第二题

2.以下不正确的定义语句是( )

A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0} ;

B: char c2[] = {'\x10', '\xa', '\8'} ;

C: char c1[] = {'1','2','3','4','5'} ;

D: int y[5+3]= {0, 1, 3, 5, 7, 9} ;

本题B选项考察转义字符的应用

\ddd ddd表示1到3个八进制数 如:\130 转义为 字符X

\xhh hh表示1到2位十六进制数 如 \x30 转义为 字符'0'

选项B第三个字符中 \ 后没有 x ,故表示8进制数,但8进制数的范围是 0~7,故B 不对,选 B

第三题

3.test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( )

cpp 复制代码
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;

A: a B: b C: c D: d

这道题考察 #define定义的替换和类型的重命名。

INT_PTR 在预处理阶段被替换为了 int* ,语法规则上讲它的 * 只会被 a 使用,b的类型就变为了 int 型;而typedef 却是对类型进行重定义,它后面的 c d 的类型就都是 int*类型。

所以答案选 A,C,D

知识点:

C环境及预处理http://t.csdn.cn/6fP4a

第四题

4、编程题:打印从1到最大的n位数

题目描述

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

  1. 用返回一个整数列表来代替打印

  2. n 为正整数,0 < n <= 5

知识点:

C语言for循环http://t.csdn.cn/0xvjx 示例:

输入:

1

返回值:

[1,2,3,4,5,6,7,8,9]

这道题牛客网上采用核心代码模式

cpp 复制代码
 //* @param n int整型 最大位数
 //* @return int整型一维数组
 //* @return int* returnSize 返回数组行数 
int* printNumbers(int n, int* returnSize ) {
    int Max=0;
    while(n--)
         Max=Max*10+9;
    int *arr=(int*)malloc(Max*sizeof(int));
    for(int i=0;i<Max;i++)
    {
        arr[i]=i+1;
    }
    *returnSize=Max;
    return arr;
}

其中 returnSize 是打印的数字的个数,而需要返回数组首元素的地址。

第五题

5、编程题:计算日期到天数转换

描述:根据输入的日期,计算是这一年的第几天,且保证年份为4位数且日期合法。时间复杂度:O(n) ,空间复杂度:O(1) 。

输入描述:输入一行,每行空格分割,分别是年,月,日

输出描述:输出是这一年的第几天

示例1:

输入:2012 12 31 输出:366

示例2:

输入:1982 3 4 输出:6

C语言操作符详解逻辑操作符 部分有如何求出闰年的方法

本题牛客网采用ACM模式

cpp 复制代码
#include <stdio.h>
int main() {
    int year=0,month=0,day=0;
    scanf("%d %d %d",&year,&month,&day);
    int arr1[11]={31,29,31,30,31,30,31,31,30,31,30};
    int arr2[11]={31,28,31,30,31,30,31,31,30,31,30};
    int days=0;
    if((year%4==0&&year%100!=0)||(year%400==0))
    {
        for(int i=0;i<month-1;i++)
        {
            days+=arr1[i];
        }
    }
    else
    {
        for(int i=0;i<month-1;i++)
        {
            days+=arr2[i];
        }
    }
    days+=day;
    printf("%d",days);
    return 0;
}

思路就是先开辟两个数组空间,然后判断年份是否为闰年,将月份天数利用循环逐个加上即可。

相关推荐
AndrewHZ12 分钟前
【图像处理基石】暗光增强算法入门:从原理到实战(Python+OpenCV)
图像处理·python·opencv·算法·计算机视觉·cv·暗光增强
MOON404☾24 分钟前
Rust程序语言设计(5-8)
开发语言·后端·rust
lifallen1 小时前
从Apache Doris 学习 HyperLogLog
java·大数据·数据仓库·算法·apache
智驱力人工智能1 小时前
使用手机检测的智能视觉分析技术与应用 加油站使用手机 玩手机检测
深度学习·算法·目标检测·智能手机·视觉检测·边缘计算
姚瑞南2 小时前
【AI 风向标】四种深度学习算法(CNN、RNN、GAN、RL)的通俗解释
人工智能·深度学习·算法
Knight_AL2 小时前
浅拷贝与深拷贝详解:概念、代码示例与后端应用场景
android·java·开发语言
枫叶丹42 小时前
【Qt开发】输入类控件(六)-> QDial
开发语言·qt
补三补四2 小时前
SMOTE 算法详解:解决不平衡数据问题的有效工具
人工智能·算法
思考的笛卡尔2 小时前
Go语言实战:高并发服务器设计与实现
服务器·开发语言·golang
RTC老炮2 小时前
webrtc弱网-RobustThroughputEstimator源码分析与算法原理
网络·算法·webrtc