C语言上机考试题库(含详细答案解析 真题适配版)_第1页
C语言上机考试题库(含详细答案解析 真题适配版)_第2页
C语言上机考试题库(含详细答案解析 真题适配版)_第3页
C语言上机考试题库(含详细答案解析 真题适配版)_第4页
C语言上机考试题库(含详细答案解析 真题适配版)_第5页
已阅读5页,还剩5页未读, 继续免费阅读

下载本文档

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

文档简介

C语言上机考试题库(含详细答案解析真题适配版)说明:本题库为高校期末、计算机二级C语言上机真题整理,无冗余话术,代码均可直接编译运行,解析通俗接地气,完全贴合上机考试评分标准。题型包含:基础编程、分支结构、循环结构、数组、函数、指针六大必考模块。一、基础语法编程题(简单送分题)题目1:输入两个整数,求和、差、积、商题目要求:从键盘输入两个整数a、b,计算并输出两数的和、差、积、整除商(保证除数不为0)。参考答案代码c

#include<stdio.h>

intmain()

{

inta,b;

//输入两个整数

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

//计算并输出结果

printf("和:%d\n",a+b);

printf("差:%d\n",a-b);

printf("积:%d\n",a*b);

printf("商:%d\n",a/b);

return0;

}详细解析1、scanf用于接收键盘输入,变量前必须加取地址符&,这是上机最常见易错点;2、int类型相除为整除,只保留整数部分,小数直接舍弃;3、输出用printf,固定格式匹配即可,考试无需额外优化,能出结果就得分。题目2:输入圆半径,计算圆的面积和周长题目要求:输入浮点型半径r,圆周率取3.14,输出圆周长和面积,保留2位小数。参考答案代码c

#include<stdio.h>

intmain()

{

floatr,s,l;

floatpi=3.14;

scanf("%f",&r);

l=2*pi*r;//周长公式

s=pi*r*r;//面积公式

printf("周长:%.2f\n",l);

printf("面积:%.2f\n",s);

return0;

}详细解析1、小数输入输出用float类型,scanf对应%f,printf保留两位小数用%.2f;2、考试禁止直接写死公式,必须定义变量计算,符合上机评分规范;3、%.2f是考试高频考点,控制输出小数位数,不写会扣分。二、分支结构编程题(if/else、switch)题目3:判断输入整数的奇偶性题目要求:输入一个整数,判断并输出该数是奇数还是偶数。参考答案代码c

#include<stdio.h>

intmain()

{

intn;

scanf("%d",&n);

//对2取余,余数0为偶数,否则奇数

if(n%2==0)

{

printf("%d是偶数\n",n);

}

else

{

printf("%d是奇数\n",n);

}

return0;

}详细解析1、取余运算符%只能用于整数,不能用于小数;2、判断相等必须用==,单个=是赋值,属于考试高频错误;3、正负整数均可判断,代码兼容所有整数输入。题目4:成绩等级判定(switch语句)题目要求:输入百分制成绩(0-100),输出等级:90-100为A,80-89为B,70-79为C,60-69为D,60以下为E。参考答案代码c

#include<stdio.h>

intmain()

{

intscore;

scanf("%d",&score);

intgrade=score/10;

switch(grade)

{

case10:

case9:printf("A\n");break;

case8:printf("B\n");break;

case7:printf("C\n");break;

case6:printf("D\n");break;

default:printf("E\n");break;

}

return0;

}详细解析1、利用整数整除特性,将100个分数精简为10个档位,简化switch判断;2、case后必须加break,否则会发生穿透问题,导致输出错误;3、default处理所有不及格分数,兼容0-59所有情况。三、循环结构编程题(for/while/do-while必考)题目5:计算1~100所有整数的和题目要求:用for循环计算1+2+3+...+100的结果并输出。参考答案代码c

#include<stdio.h>

intmain()

{

inti,sum=0;

for(i=1;i<=100;i++)

{

sum=sum+i;

}

printf("1到100的和为:%d\n",sum);

return0;

}详细解析1、累加变量sum必须初始化为0,未初始化会出现随机垃圾值;2、循环条件i<=100,不能写i<100,否则少加100;3、最基础的循环考题,所有上机考试必考题型。题目6:输出1~100以内所有偶数题目要求:循环遍历1到100,打印所有偶数,每行输出10个数字。参考答案代码c

#include<stdio.h>

intmain()

{

inti,count=0;

for(i=1;i<=100;i++)

{

if(i%2==0)

{

printf("%d",i);

count++;

//每10个换行

if(count%10==0)

{

printf("\n");

}

}

}

return0;

}详细解析1、count变量用于计数,实现规整换行,满足考试输出格式要求;2、通过取余判断偶数,逻辑简单不易出错;3、格式规整是上机评分的隐性得分点,换行错误会扣细节分。题目7:求斐波那契数列前20项题目要求:斐波那契数列规则:1、1、2、3、5、8...前两项为1,从第三项开始,每一项等于前两项之和,输出前20项。参考答案代码c

#include<stdio.h>

intmain()

{

inta=1,b=1,c,i;

printf("%d%d",a,b);

//已经输出2项,循环18次

for(i=3;i<=20;i++)

{

c=a+b;

printf("%d",c);

a=b;

b=c;

}

return0;

}详细解析1、先定义前两项固定值,循环推导后续数值;2、每次循环完成变量迭代,更新前两个数,实现递推效果;3、二级考试高频压轴基础题。四、数组编程题(一维/二维数组)题目8:一维数组求最大值、最小值、平均值题目要求:定义数组存储10个学生成绩,手动输入10个分数,输出最高分、最低分、平均分。参考答案代码c

#include<stdio.h>

intmain()

{

intscore[10];

intmax,min,sum=0;

floatavg;

inti;

//输入10个成绩

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

{

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

sum+=score[i];

}

//初始化最大最小值为第一个元素

max=min=score[0];

for(i=1;i<10;i++)

{

if(score[i]>max)

max=score[i];

if(score[i]<min)

min=score[i];

}

avg=sum/10.0;

printf("最高分:%d\n",max);

printf("最低分:%d\n",min);

printf("平均分:%.2f\n",avg);

return0;

}详细解析1、数组下标从0开始,循环范围必须是0~9;2、平均分计算必须除以10.0,不能除以10,否则整数相除结果为整数,丢失小数;3、最大最小值初始化为数组第一个元素,是最稳妥的写法。题目9:一维数组逆序输出题目要求:输入5个整数存入数组,将数组内容逆序输出。参考答案代码c

#include<stdio.h>

intmain()

{

intarr[5];

inti;

//输入

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

{

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

}

//逆序输出

printf("逆序结果:");

for(i=4;i>=0;i--)

{

printf("%d",arr[i]);

}

return0;

}详细解析1、正序遍历从0开始,逆序遍历从数组最后下标开始;2、本题可延伸为数组逆序交换元素,是上机常考拓展题。五、函数编程题(自定义函数核心考点)题目10:自定义函数判断素数题目要求:写一个自定义函数,判断一个数是否为素数,主函数输入数字,调用函数输出结果。参考答案代码c

#include<stdio.h>

//素数判断函数,是素数返回1,不是返回0

intisPrime(intn)

{

inti;

if(n<2)

return0;

for(i=2;i<n;i++)

{

if(n%i==0)

return0;

}

return1;

}

intmain()

{

intnum;

scanf("%d",&num);

if(isPrime(num)==1)

printf("%d是素数\n",num);

else

printf("%d不是素数\n",num);

return0;

}详细解析1、素数定义:大于1,且只能被1和自身整除的整数;2、自定义函数必须先声明或写在主函数上方,否则编译报错;3、函数返回值为int类型,主函数通过返回值判断结果,符合考试函数考点要求。题目11:自定义函数求两数最大值题目要求:自定义函数max,接收两个整数,返回最大值,主函数调用并输出。参考答案代码c

#include<stdio.h>

intmax(inta,intb)

{

if(a>b)

returna;

else

returnb;

}

intmain()

{

intx,y;

scanf("%d%d",&x,&y);

printf("最大值:%d\n",max(x,y));

return0;

}详细解析1、形参a、b仅在函数内有效,和主函数实参x、y互不冲突;2、函数必须有返回值,匹配定义的int类型;3、最简单的函数考题,必考基础题型。六、指针基础编程题(难点必考)题目12:利用指针交换两个整数题目要求:通过指针变量,实现两个整数的数值交换,不能直接用变量赋值交换。参考答案代码c

#include<stdio.h>

intmain()

{

inta,b;

int*p1,*p2;

inttemp;

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

//指针指向变量地址

p1=&a;

p2=&b;

//通过解引用交换数值

temp=*p1;

*p1=*p2;

*p2=temp;

prin

温馨提示

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

评论

0/150

提交评论