模拟题5套Word文档下载推荐.docx

上传人:b****7 文档编号:22354422 上传时间:2023-02-03 格式:DOCX 页数:24 大小:25.30KB
下载 相关 举报
模拟题5套Word文档下载推荐.docx_第1页
第1页 / 共24页
模拟题5套Word文档下载推荐.docx_第2页
第2页 / 共24页
模拟题5套Word文档下载推荐.docx_第3页
第3页 / 共24页
模拟题5套Word文档下载推荐.docx_第4页
第4页 / 共24页
模拟题5套Word文档下载推荐.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

模拟题5套Word文档下载推荐.docx

《模拟题5套Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《模拟题5套Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。

模拟题5套Word文档下载推荐.docx

例如:

a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。

请改正程序中的错误,使它能得到正确结果。

注意:

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

voidfun(char*p,char*q,char*c)

{intk=0;

while(*p||*q)

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

{if(*p<

=*q)

c[k]=*q;

elsec[k]=*p;

if(*p)p++;

if(*q)q++;

k++

{chara[10]="

fshADfg"

b[10]="

sdAEdi"

c[80]={'

\0'

};

fun(a,b,c);

Thestringa:

"

puts(a);

Thestringb:

puts(b);

Theresult:

puts(c);

3.编程题

请编写函数fun,其功能是:

将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。

例如,当a=16,b=35,调用该函数后,c=5361。

部分源程序给出如下。

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

#include<

voidfun(inta,intb,long*c)

 

{

inta,b;

longc;

clrscr();

Inputa,b;

scanf("

%d%d"

&

a,&

b);

fun(a,b,&

c);

Theresultis:

%ld\n"

c);

1.填空题

【1】*【2】'

Z'

【3】tt

【解析】填空1:

由return语句可以看出,该函数的返回值类型是指向字符串的指针,所以应该使用符号"

*"

填空2:

从ASCII码表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII码值大32,根据ASCII码值判断该字母是不是大写字母,判断的标准是ASCII码值是否介于A和Z之间。

填空3:

根据题目的意思这里应该调用函数fun对字符串tt进行转换,所以应该使用tt作为函数的参数。

(1)错误:

=*q)

正确:

{if(*p>

(2)错误:

k++

k++;

【解析】错误1:

依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为"

>

="

错误2:

C语言规定,每个语句要用分号结束。

3.编程题

*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;

【解析】语句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;

是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。

注意"

/"

和"

%"

的用法。

下列给定程序中,函数fun()的功能是:

按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。

若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

#defineSIZE20

fun(double*s,double*w)

{intk,i;

doublesum;

for(k=2,i=0;

i<

SIZE;

{s[i]=k;

k+=2;

sum=0.0;

for(k=0,i=0;

{sum+=s[i];

if((i+1)

【1】5==0)

{w[k]=sum/5;

sum=0;

【2】k;

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a,b);

Theoriginaldata:

\n"

if(i%5==0)printf("

%4.0f"

a[i]);

\n\nTheresult:

k;

i++)printf("

%6.2f"

【3】);

\n\n"

(2)函数fun()的功能是:

求出一个2×

M整型二维数组中最大元素的值,并将此值返回调用函数。

#defineM4

fun(int【1】)

inti,j,max=【2】;

2;

for(j=0;

j<

M;

j++)

if(max【3】a[i][j])

max=a[i][j];

returnmax;

FILE*wf;

intarr[2][M]={5,8,3,45,76,-4,12,82};

max=%d\n"

fun(arr));

wf=fopen("

out.dat"

"

w"

fprintf(wf,"

%d"

fclose(wf);

下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。

y=1-1/(2×

2)+1/(3×

3)-1/(4×

4)+…+(-1)(m+1)/(m×

m)

m中的值为5,则应输出0.838611。

doublefun(intm)

{doubley=1.0;

intj=1;

for(i=2;

i<

=m;

i++)

j=-1*j;

y+=1/(i*i);

return(y);

intn=5;

\nTheresultis%lf\n"

fun(n));

请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。

二维数组中的数已在主函数中给出。

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};

intp[N],i,j,k;

Theriginaldatais:

N;

%6d"

t[i][j]);

fun(t,p);

\nTheresultis:

for(k=0;

k<

k++)

%4d"

p[k]);

【1】%【2】return【3】b[i]

根据题目的意思,这里是执行按顺序对每5个元素求一个平均值的操作,所以应该使用取余符号"

,如果是5的倍数,则该式子的值为零。

根据C语言的规定,除了使用关键字void的任何一个子函数都应该有返回值,所以应该使用关键字return把变量k的值返回主函数。

由题目的意思可知这里是把存在数组b中的内容依次循环输出,所以后面的变量名应该使用b[i]。

intj=1;

正确:

doublej=1.0;

y+=1/(i*i);

y+=j/(i*i);

为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整数。

题中公式是加减相间的运算,通过j来实现。

inti,j,max;

max=tt[0][j];

/*假设各列中的第一个元素最大*/

if(tt[i][j]>

max)/*如果各列中的其他元素比最大值还大,

则将这个更大的元素看做当前该

将s所指字符串中的字母转换为按字母序列的后续字母(但Z转化为A,z转化为a),其他字符不变。

ctype.h>

voidfun(char*s)

{while(【1】)

{if(*s>

*s<

||*s>

a'

z'

{if(*s=='

)*s='

;

elseif(*s=='

else*s+=【2】;

【3】;

{chars[80];

\nEnterastringwithlength<

80:

gets(s);

\nThestring:

puts(s);

fun(s);

\n\nTheCords:

下列给定程序中,函数fun的功能是按以下递归公式求函数值。

当给n输入5时,函数值为240;

当给n输入3时,函数值为60。

fun(intn);

intc;

if(n=1)

c=15;

else

c=fun(n-1)*2;

return(c);

intn;

Entern:

n);

%d\n\n"

fun(n));

intfun(char*s,intnum)

chars[10];

输入7个字符的字符串:

gets(s);

fun(s,7);

\n%s"

s);

【1】*s【2】1【3】s++

从C语言的学习中我们知道,while语句的结束条件是括号中的式子结果为0,而一个字符串的结尾标志为'

,即满足循环的结束条件,所以一般情况下C语言中使用字符串的结尾作为结束循环的标志;

s为指向一个数组的指针,*s为取出s指向的内容。

根据题目的意思,若该字母不是'

或'

,则该字母的ASCII码值加1。

根据题目的意思,要对字符串所有字母进行遍历,使用指针进行这一过程应该使用循环,即每次都对该指针进行加一操作。

fun(intn)

if(n=1)

if(n==1)

该行是函数的首部,不是一条语句,因此不能以分号结束。

if后面应该紧跟一个条件判断表达式,若写成"

if(n=1)"

,则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。

{chart;

inti,j;

for(i=1;

num-2;

i++)/*下标值从1开始,用循环依次取得字符串中的字符*/

for(j=i+1;

num-1;

j++)/*将字符与其后的每个字符比较*/

if(s[i]>

s[j])/*如果后面字符的ASCII码值小于该字符的ASCII码值*/

{t=s[i];

/*则交换这两个字符*/

s[i]=s[j];

s[j]=t;

【解析】本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素s[i]和s[j]进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,则交换这两个数组元素的值。

下列给定程序中函数fun()的功能是:

将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

当s中的数为87653142时,t中的数为7531。

voidfun(longs,long*t)

{intd;

longs1=1;

*t=0;

while(s>

0)

{d=s【1】10;

if(d%2!

=0)

{*t=d*s1+*t;

s1*=【2】;

s/=【3】;

}

{longs,t;

\nPleaseenters:

%ld"

s);

fun(s,&

t);

Theresultis:

t);

下列给定程序中函数fun()的功能是计算1/n!

的值。

给n输入5,则输出0.008333。

intfun(intn)

{doubleresult=1.0;

if(n==0)

return1.0;

while(n>

1&

n<

170)

result*=n++;

result=1/result;

returnresult;

InputN:

\n1/%d!

=%lf\n"

n,fun(n));

3.编程题

编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

n为1000时,函数值应为s=96.979379。

math.h>

doublefun(intn)

clrscr();

printf("

s=%f\n"

fun(1000));

【1】%【2】10【3】10

根据题目的意思,此处是由低到高逐位地提取变量d的每一位,然后再进行判断,所以可以推断出这里应该使用取余符号"

根据题目的意思,这里是把提取出来满足条件的数字依次从低到高填入一个新的变量t中,所以进行的操作应该是每一个数字都循环乘以10,再加上原来的部分,例如:

依次得到数字321,最后应该输出123。

由算法可以看出,这里应该是进行完毕一次提取,所以应该舍弃最低位--个位,即把变量s除以10。

result*=n++;

result*=n--;

函数的返回值为实型数据,所以函数的返回类型应为double。

根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增。

{doubles=0.0;

inti;

for(i=0;

n;

i++)/*从0~n中找到既能被5整除同时又能被11整除的数,并将这些数求和*/

if(i%5==0&

i%11==0)

s=s+i;

s=sqrt(s);

/*对s求平方根*/

returns;

【解析】本题的解题思路是逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被5整除同时又能被11整除,注意:

这两个条件要求同时成立,因此用到了"

运算符。

满足条件,该数就被累加到s中去,求出所有符合条件的数后,用sqrt()函数(包含于头文件<

中)对s求平方根。

下列给定的程序中,fun()函数的功能是:

将p所指字符串中每个单词的最后一个字母改成大写(这里的"

单词"

是指有空格隔开的字符串)。

例如,若输入:

Iamastudenttotaketheexamination

则应输出:

IaMAstudenTtOtakEthEexaminatioN

voidfun(char*p)

intk=0;

for(;

*p;

p++)

if(k)

if(*p=='

'

【1】;

【2】=toupper(*(p-1));

k=1;

{charchrstr[64];

intd;

\nPleaseenteranEnglishsentencewithin63letters:

gets(chrstr);

d=strlen(chrstr);

chrstr[d]='

chrstr[d+1]=0;

\nBoforechanging:

\n%s"

chrstr);

\nAfterchanging:

下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。

输入352,则输出应该是38;

若输入328,则输出应该是77。

longfun(longnum)

longk=1;

do

k+=(num%10)*(num%10);

num/=10;

}while(num)

return(k);

longn;

\Pleaseenteranumber:

n)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1