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

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

目录


第一题


第二题


第三题


第四题


第五题


 大家好,我是纪宁。


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


第一题

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


#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 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( )


#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]


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


//* @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模式


#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;

}


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


相关文章
|
3月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
6月前
|
存储 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(下)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
91 5
|
3月前
|
存储 小程序 C语言
C语言数据的存储(内含百度笔试题)
C语言数据的存储(内含百度笔试题)
41 4
|
3月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
3月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
5月前
|
程序员 C语言 C++
【C语言基础】:动态内存管理(含经典笔试题分析)-2
【C语言基础】:动态内存管理(含经典笔试题分析)
|
5月前
|
程序员 编译器 C语言
【C语言基础】:动态内存管理(含经典笔试题分析)-1
【C语言基础】:动态内存管理(含经典笔试题分析)
|
6月前
|
存储 C语言 Python
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题(下)
从C语言到C++_24(二叉搜索树)概念+完整代码实现+笔试题
73 3
|
6月前
|
算法 编译器 C语言
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题(中)
从C语言到C++_34(C++11_下)可变参数+ lambda+function+bind+笔试题
58 2
|
6月前
|
编译器 C语言 C++
从C语言到C++_21(模板进阶+array)+相关笔试题(下)
从C语言到C++_21(模板进阶+array)+相关笔试题
47 2