国家二级C语言机试(程序填空题)模拟试卷12(题后含答案及解析)

您所在的位置:网站首页 供应室考试试题及答案填空题 国家二级C语言机试(程序填空题)模拟试卷12(题后含答案及解析)

国家二级C语言机试(程序填空题)模拟试卷12(题后含答案及解析)

2023-06-24 00:06| 来源: 网络整理| 查看: 265

 

国家二级

C

语言机试

(程序填空题)

模拟试卷

12

 

(

题后含答案及解析

题型有:

1. 

 

 

 

 

1

 

给定程序中,函数

fun

的功能是:把形参

S

所指字符串中下标为奇数的

字符右移到下一个奇数位置,

最右边被移出字符串的字符绕回放到第一个奇数位

置,下标为偶数的字符不动

(

注:字符串的长度大于等于

2)

。例如,形参

S

所指

的字符串为:

abedefgh

,执行结果为:

ahcbedgf

 

 

 

 

请在程序的下划线处填入

正确的内容并把下划线删除,

使程序得出正确的结果。

 

 

 

 

注意:

源程序存放在

考生文件夹下的

BLANK1

C

中。

 

 

 

 

不得增行或删行,也不得更改程序的结

!#include 

 

;stdio

h;void 

fun(char 

*s){ 

 

int 

i

n

k

 

char 

c

 

 

n=0

 

 

for(i=0

 

 

s[i]!=

0

 

 

i++) 

 

n++

;/

**********found**********

 

 

if(n

2=--O)k=n-___1___

 

 

else 

k=n-2

**********found**********

 

 

c=___2___

 

 

for(i=k-2

i;=1

i=i-2)s[i+2]=s[i]

**********found**********

 

 

s[1]=___3___

}main( 

 

 

){ 

 

char 

s[80]=

abcdefgh

 

 

printf(

nThe 

 

original 

 

stringis

s

n

s)

 

 

 

 

fun(s)

 

 

 

 

printf(

nThe result is

s

n

s)

 

正确答案:

(1)1 

 

 

 

(2)s[k] 

 

 

 

(3)c 

解析:

函数

fun

的功能是移动下标为奇数位置的字符。

 

 

 

 

第一空:

for(i=0

s[i]!=

0

i++) 

 

n++

n

记录了数组

s

的长度,

if(n

2==0)

”如果长度

n

偶数,那么最右边被移出的字符的下标是在

n-1

,如果

n

是奇数,那么最右边被

移出的字符的下标是

n-2

,因此第一空处应为“

1

 

 

 

 

第二空:题目要求最右

边被移出字符串的字符绕回放到第一个奇数位置,因此最右边被移出的字符是

s[k]

s[k]

被替换之前必须先把

s[k]

保存在其他变量中,

故第二空处应为

s[k]

s[k]

保存在

c

中。

 

 

 

 

第三空:此处是把最右边被移出字符串的字符绕回放到

第一个奇数位置,最右边被移出字符保存在

c

,第一奇数位置是

s[1]

,故第三处

应为“

c

 

 

 

 

2

 

给定程序中,函数

fun

的功能是:找出形参

s

所指字符串中出现频率最

高的字母(不区分大小写)

,并统计出其出现的次数。

 

 

 

 

例如,形参

s

所指的

字符串为:

abcAbsmaxless

,程序执行后的输出结果为:

 

 

 

 

letter

a

3times 

 

 

 

letter

s

3times 

 

 

 

请在程序的下画线处填入正确的内容并把下画线删除,使程

序得出正确的结果。

 

 

 

 

注意:部分源程序在文件

BLANK1

C

中。

 

 

 

 

不得

增行或删行,也不得更改程序的结构!

 

 

 

 

试题程序:

#include 

 

 

stdio

#include 

 

 

string

#include 

 

 

ctype

void fun (char*s) { int k[26] = 

{0},n,i,max 

=0

 

 

char 

ch

 

 

 

while 

s) 

 

 

 

if 

isalpha 

s)) 

{/*********found*********/ 

ch 

tolower 

(

1

 

 

 

 

 

=ch 

 

a

/*********found*********/k[n]+=

2

 

 

 

 

 

 

 

 

++ 

/*********found*********/ 

 

 

if(max 

 

k[n]) max= 

3

 

 

 

 

printf (

\nAfter 

count :\n

 

 

 

for (i=0

 

 

 

26

i ++) 

 

 

 

if (k[i] ==max)printf (

\nletter \

c\

dtimes\n

 , i + 

a

,k[i] ) 

 

}main ( 

 

 

){ char s[81]

 

 

 

 

printf (

\nEnter a 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3