C语言--基础编程题(各公司面试笔试真题)

article/2025/8/22 22:48:12

下面我会给大家分享下各公司的面试笔试当中的真题,我挑出来的算是相对比较简单基础的一些题目,也适合基础水平的在学编程小白进行练习,大家现在,也动动脑,动动手,把下面我给出来的这些题目,大家自己动手做做,我也会在下面进行代码块的关键点给大家,简单的解释解释。

下面我们来看看真题吧,看看你符不符合这些公司的招聘要求水平呢🤭🤭

1.创建一个整型数组,完成对数组的操作
 (1)实现print()打印数组的每个元素。 
 (2)实现resever()函数完成数组元素的逆置。 
 (3)实现函数Init()初始化数组为全0。

#include <stdio.h>
void Init(int arr[],int sz){int i=0;for(i=0;i<sz;i++){arr[i]=0;}}void print(int arr[],int sz){int i=0;for(i=0;i<sz;i++){printf("%d ",arr[i]);} printf("\n"); }void resever(int arr[],int sz){int left=0;int right=sz-1;int tmp=0;int i=0;while(left<=right){int tmp=arr[left];arr[left]=arr[right];arr[right]=tmp;left++;right--;}   }int main(){int arr[10]={1,2,3,4,5,6,7,8,9,10};int sz=sizeof(arr)/sizeof(arr[0]);print(arr,sz); resever(arr,sz);print(arr,sz);Init(arr,sz);print(arr,sz);return 0;} 

 这道题比较中规中矩,就是通过for循环遍历我的数组然后把它打印出来,然后第二问就是通过在函数中加如中间变量tmp,借助这个中间量对数组中的元素进行逆序,第三问也是通过简单的for循环对数组进行初始化。通过这三问可以看出,使用循环遍历数组的操作是我们必须掌握的点。

2.将数组A中的内容和数组B中的内容进行交换。(数组一样大)

#include<stdio.h>void print(int arr[],int sz){int i=0;for(i=0;i<sz;i++){printf("%d ",arr[i]);} printf("\n"); }void swap_arr(int arr1[],int arr2[],int sz)
{int left=0;int right=0;int tmp=0;int i=0;while(left<sz){tmp=arr1[left];arr1[left]=arr2[left];arr2[left]=tmp;left++;}for(i=0;i<sz;i++){printf("%d ",arr1[i]);}printf("\n");for(i=0;i<sz;i++){printf("%d ",arr2[i]);}
}int main()
{int arr1[10]={1,2,3,4,5,6,7,8,9,0};int arr2[10]={0,9,8,7,6,5,4,3,2,1};int sz=sizeof(arr1)/sizeof(arr1[0]);swap_arr(arr1,arr2,sz);print(arr1,sz);print(arr2,sz);return 0;} 

这题也比较基础,上面的代码块给出了两种打印方式,一种是通过调用打印函数的方式,一直是在目标函数中直接对交换后的数组进行打印,大家可以看看更倾向于哪一种方式,我客人觉得调用函数的方式更加便捷(在大量的代码中)。

4.有关操作符的计算题

#include <stdio.h>
int main()
{int a,b,c;a=5;c=++a;b=++c,c++,++a,a++;b+=a++ +c;printf("a=%d b=%d c=%d \n",a,b,c);return 0;} 

 这道题就比较有意思了,所欲即便不是编程题,我也把它放了进来🤭🤭

相信大家可能看到了答案脑袋里就产生了??????我来给大家一步一步讲解,因为这道题还是比较考验同学对操作符的逻辑顺序的基本功的。

首先 a=5

c=++a--->c=6,a=6;

(逗号操作符优先级<赋值操作符)b=++c--->b=7,c=7--->b=c++--->b=7,c=8--->b=++a--->b=7,a=7--->b=a++--->b=7,a=8;

b+=a++ +c--->b=b+a++ +c--->b=15+8=23,a=9;

所以输出a=9,b=23,c=8。

5.乘法口诀表
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
如:输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表

#include <stdio.h>
void mult(int m)
{int i=0;int p=0;for(i=1;i<=m;i++){int j=0;for(j=1;j<=i;j++){p=j*i;printf("%d*%d=%-2d ",j,i,p);}printf("\n");}} 
int main()
{int i=0;scanf("%d",&i);mult(i);return 0;}


 

 这道打印乘法口诀表题,比较基础,可能大家有疑惑的是为什么是以%-2d的形式打印,这样打印的目的是为了让我们的结果在总共两位的基础上向左对齐,以便于我们的观看,用于美化我们的乘法口诀表。其他的也是用到的是我们基本的循环语句。

6.strlen函数的实现 

#include<stdio.h>
int my_strlen(char* str)
{char* i=str;char* j=str;while(*j !='\0'){j++;}return j-i;}
int main()
{char arr[]="yang";int len =my_strlen(arr);printf("%d",len);return 0;} 

这道题就是模仿我们的strlen函数的工作机制,用来求我们的字符串长度,因为有些题目会要求在不使用库函数的情况下完成求字符串长度的操作,这时候我们就可以调用我们自己编写的函数完成相应的操作。

代码原理:就是通过传参给函数,然后在函数里用指针进行接收,因为传数组的名字给函数,传过去的是数组首元素的地址,所以我们就应该用指针对他进行接收和解引用操作,然后通过解引用获取到数组的首元素,然后就是简单的循环语句进行判断,返回值打印。

7.写了个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如:调用DigitSum(1729),则返回1+7+2+9,它的和是19
输入1729,输出19

#include<stdio.h>
int DigitSum(unsigned int num)
{if(num>9){return DigitSum(num/10) + num%10;}else{return num;}
}
int main()
{unsigned int num=0;scanf("%d",&num);int ret=DigitSum(num);printf("ret=%d",ret); return 0;} 

 这道题的关键点就是分别对数进行%10和/10操作,用%10操作获得余数(也就是最后的一位数,如1729%10=9),用/10操作获得整数部分(也就是商,如1729/10=172)这样如此反复递归,就可以获得1,7,2,9这些数,然后我们对其相加就可以完成要求输出结果。

8.递归实现n的k次方

#include<stdio.h>
int Square(int n,int k)
{if(k>0){return n*Square(n,k-1);}else if(k==0){return 1;}else if(k<0){return (1.0/(Square(n,-k)));}
}
int main()
{int n=0;int k=0;scanf("%d%d",&n,&k);int count=Square(n,k);printf("count=%d",count);return 0;} 

 看我们的代码成功的实现了我们的功能,我们的同学肯定有很多第一次下笔写这道题时都会像我写的这种一样,然后通过编译也成功运行了,出来的答案也是对的,但我们的代码真的没有问题吗?🤭🤭

但是,当我们用负数进行测试的时候,结果却出错了,不管你输入的负数是多少,输出的结果始终是0,这是为什么呢? 我相信也有的同学比较敏感,已经发现了,我们的常量类型是有问题的。确实,当我们输入k为负数时,我们的数据类型确实是有问题的,当k为负数时,我们的结果就是小于1的小数了,可我们却用的是int类型对它进行储存,因为只要k是负数结果就是小于1的数,所以不管你输入多少,答案一直是0,所以我们应该用double类型对我们数据进行储存,这样我们的代码才是真正的正确。

#include<stdio.h>
double Square(int n,int k)
{if(k>0){return n*Square(n,k-1);}else if(k==0){return 1;}else if(k<0){return (1.0/(Square(n,-k)));}
}
int main()
{int n=0;int k=0;scanf("%d%d",&n,&k);double count=Square(n,k);printf("count=%lf",count);return 0;} 

 这样我们的结果就正确了。

这些题都是我们在各公司面试笔试中一些基础题常规题,我们通过观察也可以看出,这些题都多次用到了我们的循环思想,所以学好并掌握熟练运用循环语句是我们学好c语言的基础,也是我们迈向大公司的第一步!!!

(大学软工在读小白)用来整理我记录我自己的学习日志和收获,如有不对的地方,望各位大佬指出!!!


http://chatgpt.dhexx.cn/article/08PkCy8t.shtml

相关文章

数据可视化编程题练习

数据可视化编程部分练习 python python 使用pandas、numpy、seaborn、matplotlib 使用Seaborn绘制条形图&#xff0c;展示2014年12月31日北京地区PM2.5的变化情况。 import seaborn as sns import matplotlib.pyplot as plt import pandas as pd# 请在下方作答 # ##将数据框d…

Scratch编程-画图模块12【蓝桥杯scratch编程题真题】

【题目要求】 1)绘制如下图所示的图形; 2)中心位置是&#xff08; 0,0 )&#xff0c;画笔颜色为黑色; 3)完整图形是由十个边长为100的正五边形组成。 【评分标准】 10分:可以绘制一个正五边形;20分∶能够画出十个正五边形; 20分︰图形的颜色、位置、大小、方向均正确&#xff0…

蓝桥杯scratch编程题(1)

关注私聊给源码 题目1-scratch守护之盾 题目2-scratch小猫旅行 题目3-scratch季节 题目4-scratch投球 题目5-scratch五角星 题目6-scratch接苹果 题目7-scratch时间 题目8-scratch碰苹果 题目9-scratch城堡题目10-scratch来回走 题目11-scratch画图 题目12 -scratch金字塔 题目…

用C语言如何编程一道选择题,使用C语言编写一道简单的编程题

C语言&#xff0c;是一种通用的、过程式的编程语言&#xff0c;广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点&#xff0c;在程序员中备受青睐。C语言是世界上最流行、使用最广泛的高级程序设计语言之一。今天小编要为大家分享的一篇…

c语言编程题题库及详解答案,C语言编程题及答案.pdf

C语言编程题及答案.pdf C C 语言编程题及答案语言编程题及答案(三)(三) 1. 给小学生出加法考试题 编写一个程序&#xff0c;给学生出一道加法运算题&#xff0c;然后判断学生输入的答案对错与否&#xff0c;按下列要 求以循序渐进的方式编程。 程序程序 1通过输入两个加数给学生…

100+Python编程题给你练(附答案)

大家如果能坚持独立思考完成以下题目&#xff0c;一定可以帮大家轻松 get Python 的编程技能。目前&#xff0c;这个项目已经获得了 3994 Stars&#xff0c;2952 Forks。 Github 地址&#xff1a;Python-programming-exercises 首先&#xff0c;这 100 练习题根据难易程度分为…

c语言关于指针的编程题,C语言指针编程题

当前编程题&#xff1a;指针练习---字符串拼接 后一道编程题>>> 1. 【问题描述】用字符指针实现函数strcat(s&#xff0c;t)&#xff0c;将字符串t复制到字符串s的末端&#xff0c;并且返回字符串s的首地址&#xff0c;并编写主程序。 【输入形式】输入两个字符串 【输…

安卓编程题

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:paddingB…

循环 — 你必须要会的十五道编程题

目录 前言&#xff1a; 本讲习题来自谭老先生的《C程序设计》 对于这些题目进行了细致的讲解&#xff0c; 以求带你掌握循环的知识。 ★博文转载请注明出处。 1. 请补充例5. 7程序,分别统计当“fabs(t)>…

50道基础编程题

1、输入3个数&#xff0c;求最大值 int main() { int a,b,c,m; cin>>a>>b>>c; ma; if(b>m) mb; if(c>m) mc; cout<<m; } 2、编程序&#xff0c;求方程ax2bxc0的根 #include <iostream> #include<algorithm> #include<cmath&g…

DSSD(Deconvolutional Single Shot Detector)

本文作者将当前表现最好的分类器Residual-101和SSD进行了结合&#xff0c;并为SSDResidual-101添加了额外的降卷积层以引入大尺度的context用于提高目标检测的精度&#xff0c;尤其是小目标。DSSD又叫做deconvolutional single shot detector。虽然这两种贡献容易在高层上表达&…

DSSD学习笔记

本专栏将从论文的角度解读一下CV方向的一些经典神经网络模型及其贡献与意义&#xff0c;以期加深自己的印象&#xff0c;后续可以随时翻看并且学习其中好的tricks。这一期介绍基于SSD改进的DSSD。 论文相关信息 论文全名为《DSSD : Deconvolutional Single Shot Detector》&a…

SSD系列(SSD、DSSD、FSSD 、RefineDet)

SSD:SingleShotMultiBoxDetector 简介 one-stage、基于回归的目标检测&#xff0c;74.3mAP、59FPS &#xff08; on VOC2007 test &#xff09;网络结构 SSD 300中输入图像的大小是300x300&#xff0c;特征提取部分使用了VGG16的卷积层&#xff0c;并将VGG16的两个全连接层转换…

DL之DSSD:DSSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

DL之DSSD&#xff1a;DSSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略 相关文章DL之DSSD&#xff1a;DSSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略DL之DSSD&#xff1a;DSSD算法的架构详解 DSSD算法的简介(论文介绍) DSSD&#xff0…

SDD和SDT

语法制导语法分析语义翻译&#xff1a; 语义翻译语义分析中间代码生成&#xff1b; 一&#xff1a;SDD: 依赖&#xff1a;A->B&#xff0c;表明B依赖A,A决定B。lexeme是虚属性。

SSD目标检测算法改进DSSD(反卷积)

论文&#xff1a;DSSD : Deconvolutional Single Shot Detector 论文地址&#xff1a;https://arxiv.org/abs/1701.06659 代码&#xff1a;https://github.com/chengyangfu/caffe/tree/dssd DSSD是2017年的CVPR&#xff0c;二作就是SSD的一作Wei Liu。另外值得一提的是&#xf…

SSD、DSSD算法详解

SSD(Single Shot MultiBox Detector) 特点:多尺度特征图用于检测;采用了先验框,,SDD backbone采用VGG-16 SSD和YOLO一样都是采用一个CNN网络进行检测,但是采用了多尺度的特征图,如下图所示: 采用多尺度特征图用于检测 采用步长stride=2的卷积或者pool来降低特征图…

sds

双向链表(adlist.h/adlist.c) 链表(list)是Redis中最基本的数据结构,由adlist.h和adlist.c定义。 数据结构 typedef struct listNode {//指向前一个节点struct listNode *prev;//指向后一个节点struct listNode *next;//值void *value; } listNode;listNode是最基本的结构,表示…

xSSD: DSSD,FSSD,ESSD,MDSSD,fireSSD

1 DSSD title :DSSD : Deconvolutional Single Shot Detector conf & anthor: arXiv, Cheng-Yang Fu arXiv:https://arxiv.org/abs/1701.06659 intro:Deconvolutional 主要内容&#xff1a; DSSD使用ResNet-101代替VGG作为主干网络&#xff0c;在‘SSD layers‘后面添加了…

redis SDS介绍

Redis面试中经常被问到&#xff0c;Redis效率为什么这么快&#xff0c;很多同学往往回答&#xff1a; ① Redis基于内存操作② Redis是单线程的&#xff0c;采用了IO多路复用技术③ Redis未使用C语言字符串&#xff0c;使用了SDS字符串然而&#xff0c;很少有人能说清楚SDS字符…