计算机等级考试(国家)-二级c语言分类模拟题76.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二级C语言分类模拟题7 6
一、程序填空题
1> str为一个字符序列。

请补充函数proc(),该函数的功能是:查找str+值为x的元素,返回该字符序列中值为x的元素个数,并把这些值为x的元素下标依次保存在数组bb中。

例如,在
''abcdedabcdab^中查找''c〃,结果为:2个''c〃,下标依次为2、8。

注意:部分源程序给出如下。

请勿改动mainO函数和其他函数中的任何内容,仅在函数proc ()的横线上填入所编:写的若干表达式或语句。

试题程序:
#include<stdlib. h>
#include<stdio. h>
# include <conio. h>
#define M 20
int bb [M];
int proc(char*str, char ch)
{
int i=0, n=0;
char t=ch;
char*p=str;
while(*p)
{
if ()
.
_________________ f
P++;-
i + +;
)
return ;
)
void main()
{
char str [M];
char ch;
int i, n;
system("CLS");
printf("***Input the original string***\n H);
gets (str);
printf("***The Original***\n");
puts(str);
printf("***Input character***\n n);
scanf("%c", &ch);
n=proc(str, ch);
printf (11 \nThe numbr of character is : %d\n n , n);
printf(H***The suffix of character***\n n);
for (i = 0 ; i<n; i + + )
printf("%d"z bb [i]);
二、程序改错题
2、下列给定程序中,函数proc ()的功能是:在字符串的最前端加入m个*号,形成新串,并且覆盖原串。

例如,用户输入字符串abed(以Enter键结束),然后输入m值为3,则结果为***abcdo
注意:字符串的长度最长允许为79。

请修改函数proc()中的错误,使它能得出正确的结果。

注意:不要改动mainO函数,不得增行或删行,也不得更改程序的结构。

试题程序:
#include<stdlib. h>
#include<stdio • h>
#include<string .h>
#include<conio • h>
void proc (char str [] , int m) char a [80] , *p;
int i ;
/ound* ** *
str=p;
for (i = 0 ; i<m; i + +) a [i] = ' * 1 ;
do
{a [i]=*p;
//****found****
i++;
)
while(*p);
//****found****
a[i]=0;
strcpy(str, a);
)
void main()
(int m; char str [80];
system("CLS");
printf(H\nEnter a string: n); gets(str);
printf(H\nThe string: %s\n n, str);
printf(H\nEnter n(number of*): n);
scanf("%d", &m);
proc(str, m);
printf(H\nThe string after inster: %s\n n, str); }
三、程序设计题
3、某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。

请编写proc ()函数,它的功能是:求出该学生的平均分并放在记录的ave成员中。

请自己定义正确的形参。

例如,若学生的成绩是65.5, 75, 88, 90, 90.5, 66, 64.5, 89.5,则他的平均分应当是78.625o
注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc ()的花括号中填入所编写的若干语句。

试题程序:
#include<stdio. h>
#define M 8
typedef struct (char num[10]; double s[M]; double ave; }
STREC;
void proc(STREC*p) {
}
void main()
STREC stu={ "GA005”, 65.5, 75, 88, 90, 90.5, 66, 64.5, 89.5}; int i;
proc(&stu);
printf ( "The%s ' s student data : \n" z stu.num) ; //输出学号
for (i = 0 ; i<M; i + +)
printf("%4.If\n", stu.s [i]);
//输出各科成绩
printf("\nave=%7.3f\n", stu.ave);
〃输出平均分
}
答案:
一、程序填空题
l^ *p==t bb [n+ + ]=i n
[解析]要查找字符串中的指定元素,就要将字符串中每一个元素与指定字符相比较,因此,第一空填、、*p==t〃;数组bb中存放与指定字符相同的元素的下标,每找到一个数组bb增加一个元素,因此, 第二空填、'bb[n+ + ]=i〃;变量n为数组bb的下标,表示字符串中与指定字符相同的元素个数,返回给主函数,因此,第三空填、'n〃。

二、程序改错题
2、(1)错误:str=p;
正确:p=str;
(2)错误:i++;
IE 确:i + + ; p++ ;
(3)错误:a[i]=0;
正确:a [i] = 1 \0 1;
[解析]由函数proc () nf知,变量p是指向字符串的指针,其初始化应为字符串首地址,因此,''str=p;,z应改为''p=st匕;〃;将p指向的字符串中的每一个字符插在m个*之后,并存放在字符串数组a中,因此,''i + +;zz应改为、'i + +; p++;〃;操作完成后要为字符串数组添加结束符,因此''a [i] =0;〃应改为''a [i] = 1 \0 1
三、程序设计题
3void proc(STREC*D)
{
int i;
p->ave = 0 . 0 ; 〃其平均数初始值为0
for (i = 0 ; i<M; i + +)
p->ave=p->ave+p->s [i] ;//学生的平均分放在记录的ave成员中
p- >ave=p- >ave/M ;
}
[解析]耍求该学生的平均成绩,首先要求出其各科成绩之和,然后求出其平均成绩并放在成员变量ave 中。

相关文档
最新文档