二级C语言程序填空题专项强化真题试卷1
程序填空题
1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blankl.c。在此程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。
例如,s所指的字符串为“def35adh3kjsdf7”,执行后结果为“defadhajsdf3537”。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
void fun(char*s)
{int i,j=0,k=0;char t1[80],t2[80];
for(i=0;s[i]!=’\0’;i++)
if(s[i]>=’0’&&s[i]<=’9’)
{
/**********found**********/
t2[j]=s[i];【1】;
}
else t1[k++]=s[i];
t2[j]=0;t1[k]=0;
/**********found**********/
for(i=0;i<k;i++)【2】;
/**********found**********/
for(i=0;i<【3】;i++)s[k+i]=t2[i];
}
main( )
{char s[80]=\\
(1)j++或j+=l或++j或j=j+1
(2)s[i]=t1[i]
(3)j
解析:填空1:根据函数fun中的内容可知,数组t1存储了s中的非数字字符,数组t2存储了s中的数字字符,为了存储下一个数字字符,下标j要进行加1操作。
填空2:将s串中的数字与非数字字符分开后,要先将非数字字符放入字符串s中,因此填入s[i]=t1[i]。
填空3:最后将数字字符加到s串之后,并且i要小于数字的个数j。
2.给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include
typedef struct
{ int Rum;
char/name[10];
}PERSON;
/**********found**********/
void fun(PERSON【1】
{
/**********found**********/
【2】temp;
if(std[0].Rum>std[1].num)
{temp=std[0];std[0]=std[1];
std[1]=temp;}
if(std[0].num>std[2].hum)
{temp=std[0];std[0]=std[2];
std[2]=temp;}
if(std[1].num>std[2].1lum)
{temp=std[1];std[1]=std[2];
std[2]=temp;}
}
main()
{PERSON std[]={5,“Zhanghu”,2,“WangLi”,6,“LinMin”};
int i;
/**********found**********/
fun【3】;
printtf(“The result is”:);
for(i=0;i<3;i++)
pfinff(“%d,%s”,std[i].hum,std[i].name);
}
【1】std[]
【2】PERSON
【3】std
解析:本题考查:数据类型的定义;数组元素的操作;函数参数的传递。
要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小,但无论用哪种形式,程序在编译时都将其作为一个指针变量处理。
填空1:定义形参变量引用数组std,此时形参可以定义为指针变量,也可以定义为数组。由下文可知,程序是通过数组下标对数组元素进行操作的,因此形参应使用数组形式,而非指针形式。
填空2:程序使用变量temp交换结构体数组元素的值,因而temp应定义为PERSON型。
填空3:程序通过函数fun对数组std进行操作,因此函数的实参应为std。
3.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include
typedef struct
{ int num;
char name[9];
float score[3];
}STU;
void show(STU tt)
{ int i;
printf(\\
(1)STU
(2)score[i]
(3)&std
解析:本题是利用结构体存储学生记录,对记录进行修改并由实参ss返回。
填空1:实参ss是一个结构型指针变量,所以应填STIJ。
填空2:该学生的各科成绩都乘以一个系数a,所以应填score[i]。
填空3:函数的调用,由于函数定义时使用的指针结构型变量,所以应填&std。
4.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。函数fun根据所给n名学生的成绩,计算出所有学生的平均成绩,把高于平均成绩的学生成绩求平均值并返回。
例如,若有成绩为:50,60,70,80,90,100,55,65,75,85,95,99,则运行结果应为:91.5
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#pragma warning(disable:4996)
double fun(double x[],int n)
{ int i,k=0;
double
本文档预览:3600字符,共4534字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载