2026年程序员实操考核试题及答案_第1页
2026年程序员实操考核试题及答案_第2页
2026年程序员实操考核试题及答案_第3页
2026年程序员实操考核试题及答案_第4页
2026年程序员实操考核试题及答案_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年程序员实操考核试题及答案一、程序阅读题(每题5分,共15分)1.阅读以下C程序,写出运行结果。#include<stdio.h>

intmain(){

inti,sum=0;

for(i=1;i<=5;i++){

if(i%2==0){

continue;

}

sum+=i;

}

printf("sum=%d\n",sum);

return0;

}答案:sum=9解析:for循环遍历1到5,遇到偶数时执行continue跳过,因此只累加奇数1、3、5,和为9。2.阅读以下程序,写出fun(5)的返回值。#include<stdio.h>

intfun(intn){

if(n<=1){

return1;

}

returnn*fun(n-1);

}

intmain(){

printf("%d\n",fun(5));

return0;

}答案:120解析:函数fun为递归阶乘函数,fun(5)=5×4×3×2×1=120。3.阅读以下程序,写出输出结果。#include<stdio.h>

intmain(){

inta[4]={10,20,30,40};

int*p=a;

p++;

printf("%d\n",*p+1);

return0;

}答案:21解析:指针p原指向a[0],p++后指向a[1],*p为20,加1得21。二、程序改错题(每题5分,共15分)1.以下函数用于交换两个整数的值,程序中有错误,请指出错误并给出正确写法。voidswap(int*x,int*y){

int*temp;

*temp=*x;

*x=*y;

*y=*temp;

}答案:错误:temp是一个未初始化的指针变量,直接对*temp赋值会导致非法内存访问。正确写法:voidswap(int*x,int*y){

inttemp;

temp=*x;

*x=*y;

*y=temp;

}解析:应使用普通整型变量保存中间值,而不是一个没有指向合法内存的指针。2.以下函数的功能是计算数组中所有元素之和,请指出错误并改正。intsum_array(intarr[],intn){

ints=0;

for(inti=0;i<=n;i++){

s+=arr[i];

}

returns;

}答案:错误:循环条件i<=n会使数组访问越界,正确应为i<n。改正后的循环:for(inti=0;i<n;i++){

s+=arr[i];

}解析:长度为n的数组有效下标为0到n-1,循环到i=n时arr[n]越界。3.以下程序段用于判断两个字符串是否相等,请指出错误并改正。#include<stdio.h>

#include<string.h>

intmain(){

chars1[]="hello";

chars2[]="world";

if(s1==s2){

printf("equal\n");

}else{

printf("notequal\n");

}

return0;

}答案:错误:s1==s2比较的是数组首地址,而不是字符串内容。应使用:if(strcmp(s1,s2)==0){

printf("equal\n");

}else{

printf("notequal\n");

}解析:需要包含<string.h>,用strcmp比较字符串内容,返回0表示相等。三、程序填空题(每空4分,共20分)1.以下程序在有序数组arr中查找key,若找到返回其下标,否则返回-1。请补全下面二分查找程序中的(1)~(5)空。intbinary_search(intarr[],intn,intkey){

intleft=0,right=n-1;

while(left<=right){

intmid=(1);

if((2)){

returnmid;

}elseif((3)){

left=mid+1;

}else{

(4)=mid-1;

}

}

(5);

}答案:(1)(left+right)/2(2)arr[mid]==key(3)arr[mid]<key(4)right(5)return-1解析:二分查找每次取中间位置mid,若arr[mid]等于key则返回;若arr[mid]小于key,则说明key在右半区间,左边界更新为mid+1;否则在左半区间,右边界更新为mid-1。循环结束后未找到则返回-1。四、编程题(每题25分,共50分)1.编写一个完整的C语言程序,从键盘输入一个正整数n,计算1!+2!+...+n!的值并输出。#include<stdio.h>

intmain(){

intn;

longlongsum=0,term=1;

printf("请输入正整数n:");

scanf("%d",&n);

for(inti=1;i<=n;i++){

term*=i;//term即为i!

sum+=term;

}

printf("1!+2!+...+%d!=%lld\n",n,sum);

return0;

}解析:使用变量term保存当前阶乘值,每次乘以下一个数即可得到新阶乘,累加到sum中。使用longlong防止累加和溢出。2.编写一个完整的C语言程序,从键盘输入10个整数,用冒泡排序法将它们按从小到大排序并输出。#include<stdio.h>

intmain(){

inta[10];

inti,j,temp;

printf("请输入10个整数:\n");

for(i=0;i<10;i++){

scanf("%d",&a[i]);

}

//冒泡排序

for(i=0;i<9;i++){//共进行n-1轮

for(j=0;j<9-i;j++){//每轮比较次数递减

if(a[j]>a[j+1]){

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

printf("排序后的结果:\

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论