计算机二级考试C语言预测上机巩固试题
距离2017年3月计算机等级考试越来越近了,本站小编为大家整理了2017年计算机二级考试C语言预测上机巩固试题,希望对各位有所帮助!
一、程序填空题
请补充main()函数,该函数的功能是:如果数组arr的前一个元素比后一个元素小,则把它保存在数组bb中并输出。
例如,若数组中的元素为:“40,68,62,33,35,52,48,95,66,73”,则输出:“40,33.35,48,66”。
注意:部分源程序给出如下。
请勿改动函数()main和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
世define M 10
void main()
{
int i,n=0;
int arr[M]={40,68,62,33,35,52,48,95,66,73};
int bb[M];
system("CLS");
for(i=0;i<【1】 ;i++)
if(arr[i] 【2】 ;
printf("n***display bb***n"):
for(i=0;i printf("bb[%d]=%2d”,【3】);
}
二、程序改错题
给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
float m[10];
//****found****
int proc(void)
{
int j;
printf(”In subfunc after callingn”);
for(j=0;j<10;j++)
{
//****found****
printf("%f",m[j]%5);
}
}
void main()
{
int i;
printf("In main before callingn");
for(i=0;i<10;i++)
{
m[i]=i+20:
printf("%f",m[i]);
}
proc();
printf("nln main after callingn");
for(i=0;i<10;i++)
printf("%f",m[i]/5);
}
三、程序设计题
学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的`花括号中填人所编写的若干语句。
试题程序:
#include
#define M l6
typedef struct
{
char num[10];
int s;
}
STREC;
void proc(STREC a[])
{
int i,j;
STREC t:
for(i=1;i 排序*/
for(j=0;j if(a[j].s 的记录,高分在
前*/
{t=a[j];a[j]=a[j+1];a[j+1]=t;)
)
void main()
{
STREC stu[M]={{"GA005",85),{"GA003",
76},
{"GA002",59),{"GA004",85},{"GA001",91),
{fIGA007”,72),{"GA008",64),("GA006",87),
{”GAOl5”,"t5},{"GA013",91),{"GA012",64},
{"GA014",91),{"GAO11",66},{"GA017",64),
{¨GA018",64),{¨GA016",72));
int i;
proc(stu);
printf("The data after sorted:n");
for(i一0;i {
if(i%4==O)
//每行输出4个学生记录
printf("n");
printf("%S%4d",stu[i],stu[i].s);
}
printf("n");
}
上机考试试题答案与解析
一、程序填空题
【1】M-1【2】bb[n++]=arr[i]【3】i,bb[i]
【解析】由整个for循环可知,变量i为数组art的下标,题目中要求取出前一个元素比后一个元素小的元素,所以只需要判断前M-1个元素即可。因此,【1】处填“M-l”;如果第i个元素比第i+1个元素小,将第i个元素放入数组bb中,因此,【2】处填“bb[n++]=arr[i]”。最后,要输出数组bb中的每一个元素。因此,【3】处填“i,bb[i]”。
二、程序改错题
(1)错误:int proc(void)
正确:void proc(void)
(2)错误:printf("%f",m[j]%5);
正确:printf("%f",m[j]/5);
【解析】由主函数中的函数调用可知,函数proc()没有返回值。因此,“int proc(void)”应改为“void proc(void)”。题目中要求使数组中元素的值缩小到1/5,而不是对5取余。因此,“printf("%f",m[j]%5);”应改为“printf("%f",m[j]/5);”。
三、程序设计题
void proc(STREC a[])
{
int i,j;
STREC t:
for(i=1;i 排序
for(j=0;j if(a[j].s 的记录,高分在前
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
【解析】要按分数的高低排列学生的记录,可以使用冒泡排序法。将每一个学生的成绩与其他学生的成绩相比较,对不符合要求的记录交换位置。
-
C语言编程中的联合体union入门学习教程详解
联合体(union)在C语言中是一个特殊的数据类型,能够存储不同类型的数据在同一个内存位置。可以定义一个联合体使用许多成员,但只有一个部件可以包含在任何时候给定的值。联合体会提供使用相同的存储器位置供多用途的有效方式。定义联合体要定义联合体,必须使用unio...
-
c语言如何控制硬件
你们知道在C语言中如何控制计算机的硬件吗?下面是应届毕业生小编带来的关于c语言如何控制硬件的内容,欢迎阅读!c语言如何控制硬件?C语言是没办法控制硬件的首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。...
-
C语言数据结构中栈操作实验大纲
c语言中栈是一种数据结构,后进先出,即最后进入栈的数据最先弹出。以下是本站小编搜索整理的关于C语言数据结构中栈操作实验,需要的`朋友可以参考一下!想了解更多相关信息请持续关注我们应届毕业生考试网!实验:编写一个程序实现顺序栈的各种基本运算,并在此基础上设...
-
如何在c语言中调用Linux脚本
如何在c语言中调用Linux脚本呢?你知道如何在c语言中调用Linux脚本吗?下面是小编为大家带来的如何在c语言中调用Linux脚本的知识,欢迎阅读。一、引言对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系...