国家二级C语言机试(操作题)模拟试卷678
程序填空题
1.给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按hum成员进行升序排列。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
typedef struet
{
int num;
char name[10];
}PERSON;
/******found******/
void fun(PERSON___1___)
{
/******found******/
___2___temp:
if(std[0].num>std[1].num)
{
temp=std[0];
std[0]=std[1];
std[1]=temp;
}
if(std[0].num>std[2].num)
{
temp=std[0];
std[0]=std[2];
std[2]=temp;}
if(std[1].num>sta[2].num)
{
temp=std[1];
std[1]=std[2];
std[2]=temp;
}
}
main()
{
PERSON std[]={5,\\
(1)std[]
(2)PERSON
(3)std
解析:本题考查:数据类型的定义;数组元素的操作;函数参数的传递。
要使用函数对整个数组进行操作时,应使用数组名作为函数的实参。当使用数组名作实参时,函数传递的实际上是数组的首地址,而并非数组本身,此时形参除了可以定义为指针变量外,还可以定义为数组,并且数组可以不指定大小。但无论用哪种形式,程序在编译时都将其作为一个指针变量处理。
填空1:定义形参变量引用数组std,此时形参可以定义为指针变量,也可以定义为数组。由下文可知,程序是通过数组下标对数组元素进行操作的,因此形参应使用数组形式,而非指针形式。
填空2:程序使用变量temp交换结构体数组元素的值,因而temp应定义为PERsON型。
程序修改题
2.下列给定程序中,函数fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<eonio.h>
void fun(char*s)
{
int i,j;
for(i=0,j=0;s[i]!=’\0’;i++)
if(s[i]>=’0’&&8[i]<=’9’)
/******found******/
s[j]=s[i];
/******found******/
s[j]=\\
(1)s[j++]=s[i];
(2)s[j]=’\0’;
解析:题目要求依次取出字符串中所有的数字字符,因此将元素s[i]存入s[j]后要使j加1,为下次存储做准备。s[j]=\\
程序设计题
3.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入\\
void fun(char*ss)
{
int i:
for(i=0;ss[i]!=’\0’;i++)/*将ss所指字符串中所有下标为奇数位置的字母转换为大写*/
if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)
ss[i]=ss[i]-32;
}
解析:本题要求将给定字符串中奇数位置的字母转换为大写,需要先判断奇数位置以及是否是小写字母,如果是再通过其转换方法进行转换。
从C语言的学习中知道,只要将小写字母减去32即转成大写字母,将大写字母加上32即转成小写字母。本程序用if语句实现转换功能。
本文档预览:3600字符,共2241字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载