2021年四川省广安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年四川省广安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年四川省广安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年四川省广安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年四川省广安市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021年四川省广安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、2.填空题(10题)1.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。

2.算法的复杂度主要包括【】复杂度和空间复杂度。

3.对软件是否能达到用户所期望的要求的测试称为【】。

4.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

5.栈的3种基本运算是:入栈、退栈和______。

6.二叉树的遍历可以分为三种:前序遍历、()遍历和后序遍历。

7.以下程序的功能是输入任意整数给n后,输出n行从大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FCHI

JKL

MN

O

请填空完成该程序。

#include<stdio.h>

main()

inti.j,n;charch='A';

scanf("%d",&n);

if(n<11)

for(i=1;i<=n;i++)

for(j=1;j<=n-i+1;j++)

{printf("%2c",ch);

【】;

}

【】;

}

elseprintf("nistoolarge!\n");

prinff("\n");

}

8.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

9.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

10.以下程序运行后的输出结果是______。

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);

}

二、单选题(10题)11.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.xYB.x<=YC.x‖y+zy-zD.!((x12.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

13.

14.下面不正确的字符赋值或赋初值的方式为()。

A.chars[10]=”hello!”

B.chars[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘!’}

C.chars[10];s=”hello”

D.char[]=”hello!”

15.若有函数voidfun(doublea[]。int*n){…}以下叙述中正确的是()。A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

B.形参a和n都是指针变量

C.形参a是一个数组名,n是指针变量

D.调用fun函数时将把double型参数组元素一一对应地传送给形参a数组

16.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法A.A.对象B.数据结构C.数据流D.目标

17.

18.若执行下列的程序时,从键盘上输入1和2,则输出结果是()。

#include<stdio.h>

main()

{inta,b,s;

scanf("%d%d",&a,&B);

S=a;

if(a<B)s=b;

s=s*s;

printtf("%d\n",s);

}

A.1B.4C.2D.9

19.堆排序是一种()排序。

A.插入B.选择C.交换D.归并

20.有以下语句:intb;charc[10];,则正确的输入语句是______。

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

三、程序设计题(10题)21.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传给m的值为70,则程序输出:

7111421222833354244495556636670

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{}

voidmain

{

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

for(k=0;k<n;k++)

if((k+1)%20==0)//每行输出20个数

{printf("%4d",arr[k]);

printf("\n");

}

else

printf("%4d",arr[k]);

printf("\n");

}22.请编写函数proc,其功能是:计算并输出下列多项式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函数从键盘给n输入20后,则输出为S=0.680803。

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

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

试题程序:

#includet:stdio.h>

doubleproc(intn)

{

}

voidmain

{

intn;

doubleslim;

printf("\nInputn:");

scanf("%d",&n);

sum=proc(n)。

printf("\ns=%f\n",sum);

}23.请编写函数proc(),其功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。

xn+1=COS(xn)

迭代步骤如下:

(1)取x1初始值为0.0;

(2)x0=x1,把?X1的值赋给x0;

(3)x1=cos(xO),求出一个新的x1;

(4)若x0-x1的绝对值小于0.000001,则执行步骤

(5),否则执行步骤(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出结果root=0.739085。

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

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

试题程序:

24.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。编写函数fun(),其功能是删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“ABCDEFG”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){ chars[81]; printf(“Enterastring:\n”); gets(s); fun(s); printf(“Thestringafterdeleted:\n”); puts(s);}

25.三个整数a、b、c,由键盘输入,输出其中最大的一个数。

26.学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数:

注意:部分源程序在文件PROGl.C中。

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

27.使用VC++2010打开触文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是移动字符串中的内容,移动的规则是把第1~m个字符,移动到字符串的最后,把第m+1到最后的字符移动到于符串的前面。例如,字符串中原有的内容为“ABCDEFGHIJK”,m的值为3,移动后,字符串中的内容应该是“DEFGHUKABC”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

28.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将a、b两个两位正整数合并成一个新的整数放在c中。合并的方式是将a中的十位数和个位数依次放在变量c的百位和个位上,b中的十位数和个位数依次放在变量c的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

29.输出1—100之间不能被12整除的数。

30.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,定义了NxN的二维数组,并在主函数中赋值。请编写函数fun(),其功能是求出数组周边元素的平均值并将其作为函数值返回给主函数中的s。例如,若a数组中的值为0127919745238314568259141则返回主程序后s的值应为3.375。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}四、2.程序修改题(10题)31.给定程序MODII.C中fun函数的功能是:根据整型形参m,计算如下公式的值。

例如,若主函数中输入5,则应输出-0.283333。

请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。

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

32.下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其插在申的最后。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

voidfun(charstr,charch)

{while(*str&&*str!=ch)str++;

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

if(*str==ch)

{str[0]=ch;

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

str[1]='0';

}

}

main()

{chars[81],c;

clrscr();

printf("\nPleaseenterastrzng:");

gets(s);

printf("\nPleaseenterthecharacterto

search:");

c=getchar();

fun(s,c);

printf("\nTheresultis%s\n",s);

}

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

y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m×m)

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

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

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

intj=1;

inti;

for(i=2;i<=m;i++)

{

j=-1*j;

/****************found*******+******/

y+=1/(i*i);

}

return(y);

}

main()

{

intn=5;

clrscr();

printf("\nTheresultis%lf\n",fun(n));

}

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

t=1-1/2+1/3-1/4+…+(-1)(m+1)/m

例如,若输入5,则应输出0.783333。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

intfun(intm)

{

doublet=1.0,j=1.0;

inti;

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

for(i=l;i<m;i++)

{j=-1*j;t+=j/i;}

returnt;

}

main()

{

intm;

clrscr();

printf("\nPleaseenter1integernumber:");

scanf("%d",&m);

printf("/nTheresultis%If\n",fun(m));

}

35.下列给定程序中,函数fun()的功能是:求出以下分数序列的前n项之和。

2/1,3/2,5/3,8/5,13/8,21/13,……

和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.391667。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

fun(intn)

{inta=2,b=l,c,k;

doubles=0.0;

for(k=l;k<=n;k++)

{s=s+l.0*a/b;

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

c=a;a+=b;b+=c;

}

return(s);

}

main()

{intn=5;

clrscr();

printf("\nThevalueoffunctionis:

%1f\n",fun(n));

}

36.下列给定程序中,函数fun()的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。

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

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

试题程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

#defineN80

intfun(char*s,char*t)

{intn;

char*p,*r;

n=0;

while(*s)

{p=s;

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

r=p;

while(*r)

if{*r==*p){r++;p++;}

elsebreak;

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

if(*r==0)

n++;

s++;

}

returnn;

}

main()

{chara[N],b[N];intm;

clrscr();

printf("\nPleaseenterstringa:");

gets(a);

printf("\nPleaseentersubstringb:");

gets(b);

m=fun{a,b);

printf("\nTheresultis:m=%d\n",m);

}

37.给定程序MODll.C中函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。

例如,若输入:edcba,则应输出:abcde。

请改正程序中的错误,使它能统计出正确的结果。

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

38.给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。

改正其中的错误,使它能得出正确的结果。

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

试题程序:

#include<stdio.h>

#include<conio.h>

ihtm[10];

voidfun(void)

{

intj;

printf("Insubfuncaftercalling\n");

for(j=0;j<l0;j++)

{

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

printf("%3d",m[j]*l0);

}

}

main()

{inti;

printf("Inmainbeforecalling\n");

for(i=0;i<10;i++)

{

m[i]=i;

printf("%3d",m[i]);

}

fun();

printf("\nInmainaftercalling\n");

for(i=0;i<10;i++)

printf("%3d",m[i]);

getch();

}

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

y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m×m)

例如,若m=2000,则应输出0.000160。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

fun(intm)

{doubley=0,d;

inti;

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

for(i=100,i<=m,i+=100)

{d=(double)i*(double)i;

y+=l.0/d;

}

return(y);

}

main()

{intn=2000;

clrscr();

printf("\nTheresultis%lf\n",fun(n));

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

例如:输入352,则输出应该是38;若输入328,则输出应该是77。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

longfun(longnum)

{

/*+**+*+*+*found************/

longk=1;

do

{

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

num/=10;

/*********+found*+**+*+******/

}while(num)

return(k);

}

main()

{

longn;

clrscr();

printf("\Pleaseenteranumber:");

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

五、程序改错题(2题)41.给定程序MODll.C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第l门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第l门课程的平均分是:76.125000请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:

42.下列给定程序中,函数proc()的功能是:输出M行M列整数方阵,然后求两条对角线上的各元素之和并将其返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、操作题(2题)43.以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义)

intfun(inta[N][M])

{inti,j,row=0,col=0;

for(i=0;i<N;i++)

for(j=0;j<M;j++)

if(a[i][j]>a[row][col])(row=i;col=j;)

return(_____);

}

44.下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(m)例如,n中的值为l0,则应输出0.817962。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

参考答案

1.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。

2.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

3.有效性测试有效性测试

4.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

5.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。

6.中序中序解析:二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根

7.ch++或ch=ch+1或++chprintf("\n")或prinff("\015")ch++或ch=ch+1或++ch,\r\nprintf('\\n')或prinff('\\015')解析:程序中使用了两层for循环,外循环的作用是控制行数,内循环的作用是控制每行的列数,在内循环中首先输出当前字符(从\'A\'开始),[6]中应填ch++,使ch中的字符变为要输出的下一个字符。每输出一行就需换一次行,所以[7]处应填pfintf('\\n')。

8.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)

9.11解析:运算符的优先级次序由高到底是!,算术运算符,&&,||。先运算!(x=y),由于x=3非零,则表达式!(x=y)的值为0。再运算x+z,x+z=3+4=7,非零则运算y-z,y-z=3-4=-1,非零则表达式x+z&&y-z的值为1。0||1=0,则表达式!(x=y)||x+z&&y-z的值是1。

10.32233,2,2,3解析:主函数中首先定义了整型变量x和y,并分别给它们赋初值为2和3,接着调用fun()函数,fun()函数把实参x和y的值传给形式参数x和y,实参和形参不再有联系.在fun()函数中通过运算使x和y的值交换过来,所以fun()函数中的输出结果是“3,2”。fun()函数调用返回输出x和y依旧是原来的x和y,为“2,3”原因是变量作为形参传值的,对形参的修改并不影响对应的实参。所以最后输出为3,2,2,3。

11.D本题考查逻辑运算符的使用。当“”的两个运算对象都是逻辑l时,表达式返回值才是1;“‖”的两个运算对象至少有一个是逻辑1时,表达式返回值也是l,x<y为1,!z为0,10为1,0‖为1,因此,!l为0。

12.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。

13.D

14.C

15.B\n本题考查函数中数组和指针的传值,数组a[]在参数传递时,是传递的数组a的首地址,所以形参a和n都是指针变量。。

\n

16.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

17.B

18.B解析:本题考查if语句。scanf函数通过键盘读入a、b的值,a=1,b=2。第一个if语句,先判断条件,发现a<b条件成立,则s=b=2,s=s*s=4。

19.B解析:堆排序是一种选择排序。选择排序有直接选择排序和堆排序两种。

20.B解析:b是整型数,在输人语句中要加取地址符,而c是数组名,本身就是数组的首地址,因此不用加取地址符。21.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=1;i<=m;i++)//进行m次循环

\nif(i%7==0||i%11==0)//能被7或11整除的所有整数

\na[j++]=i;//符合条件的数放在数组a中

\n*n=j;//返回这些数的个数

\n}

\n【解析】本题需要先判断1~m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。\n22.\n\tdoubleproc(intn)

\n{

\ninti;

\ndoubles=0.0;//s为其和的变量

\nfor(i=1;i<=n;i+十)

\nS=s+(1.0/(2*i-1)-1.O/(2*i));//计算s

\n=(1-1/z)+(1/3-1/4)+…+(1/(2n-1)-1/

\n2n)

\nreturns;//最后把所得到的和返回到主函数中

\n}

\n【解析】由题目中所给表达式可知,多项式的值为n项表达式的和。可以利用n次循环求出n项表达式的值,求和放在变量s中。最后将多项式的值返回到主函数当中。\n

23.

【解析】本题比较简单,因为题目中已经给出了算法,只要把题目中的说法转换成C语言表达式基本上就出来了,本题最好用do-while循环来做,但要注意循环终止的条件。

24.voidfun(char*a){ inti,j=0; for(i=0;a[i]!=‘\0’;i++) if(a[i]!=‘\*’) a[j++]=a[i];/*若不是要删除的字符‘*’则保留*/ a[j]=‘\0’;/*最后加上字符串结束标志‘\0’*/}该题考核的是删除字符串中所有*,需用循环语句遍历字符串,用判断语句判断字符是否为*,由此可以决定该程序应使用循环判断结构。用循环操作从字符串开始向后逐个进行比较,若不是要删除的字符(用if(a[i]!=‘*’)来控制)则保留。变量i和j用来表示原字符串的下标和删除*后新字符串的下标。注意,下标变量j要从0开始,最后还要加上字符串结束标志‘\\0’。25.\n\tmain

\n{inta,b,c;

\nprintf(“请输入三个整数:”);

\nscanf(“%d,%d,%d”,&a,&b,&c);

\nif(aif(belseprintf(“max=%d\\n”,b);

\nelseif(aelseprintf(“max=%d\\n”,a);}

\n26.

【考点分析】

本题考查:查找结构体数组中的最小数据,需要通过for循环语句和if条件语句来完成。

【解题思路】

本题中第一个循环语句的作用是遍历数组求出最低分数,第二个循环语句的作用是将数组中的元素与最低分比较,查找是否存在与最低分相等的成绩。

27.Voidfun(char*w,intm)chart;for(i=1;i<=m;i++)/*进行m次的循环左移*/{t=w[o];for(j=1;w[j]!='\0';j++)/*从第2个字符开始以后的每个字符都依次前移一个字符*/w[j-l]=w[j];9w[j-l]=t;/*将第1个字符放到最后一个字符中*/10}}本题应采用“循环左移”的算法。外层循环用于控制移动的字符的个数,即需进行多少次循环。内层循环的作用是将第2个字符以后的每个字符依次前移一个位置,最后将第1个字符放到最后一个字符中。28.voidfun(inta,intb,long*c){/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位数,b/10获取b的十位数*/ *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}本题主要考核如何取出变量a和b的个位数和十位数,取出后如何将其表示成c中相应的位数。由于变量a和b都是只有两位的整数,因此分别对它们除以10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。将得到的数对应乘以1000、100、10、1,即可得到c的千位数、百位数、十位数、个位数。注意使用变量c时要进行指针运算。

29.\n#include'stdio.h'

\nmain

\n{inti;

\nfor(i=1;i<=100;i++)

\n{if(i==0)

\ncontinue;

\nprintf('%d',i);

\n}

\n30.1doublefun(intw[][n])2{3inti,j,k=0;4doublesum=0.0;5for(i=0;i<n;i++)6for(j=0;j</n;i++)<n;i++)<n;j++)7if(i==0||i==N-1||j==0||j==N-l)/*只要下标中有一个为0或N-1,则它一定是周边元素*/</n;j++)</n;i++)<n;i++)<n;j++)8{sum=sum+w[i][j];/*将周边元素求和*/</n;j++)</n;i++)<n;i++)<n;j++)9k++;</n;j++)</n;i++)<n;i++)<n;j++)10}</n;j++)</n;i++)<n;i++)<n;j++)11returnsum/k;/*求周边元素的平均值*/</n;j++)</n;i++)<n;i++)<n;j++)12}</n;j++)</n;i++)<n;i++)<n;j++)本题要求计算二维数组周边元素的平均值,for循环语句控制循环过程,if条件语句根据数组元素的下标判断该元素是否为二维数组的周边元素。本题采用逐一判断的方式,周边元素的规律为下标中有一个是0或N-1,所以只要下标中有一个是0或N-1,那么它一定是周边元素。计算周边元素个数的方式是当给sum累加一个值时,k也加1。</n;j++)</n;i++)

31.(1)t=t-1.0/i;或t-=1.0/i;或t一=(double)1/i;(2)returnt;(1)t=t-1.0/i;或t-=1.0/i;或t一=(double)1/i;(2)returnt;解析:本题中函数的功能是计算公式的值。首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的值。其中,每一项的值为1/n。

32.(1)错误;voidfun(charstrcharch)正确:voidfun(char*strcharch)(2)错误:if(*str==ch)正确:if(*str=='\0')(3)错误;str[1]='0';正确:str[1]='\0';(1)错误;voidfun(charstr,charch)正确:voidfun(char*str,charch)\r\n(2)错误:if(*str==ch)正确:if(*str=='\\0')\r\n(3)错误;str[1]='0';正确:str[1]='\\0';解析:该题的重点就是在while的循环嵌套语句中,由题干信息“若相同,则什么也不做”很容易就能看出if(*str==ch)后面的执行语句是错误的。另外,void指针具有一般性,它们可以指向任何类型的数据。但目前绝大多数C编译所提供的这类函数都返回char指针,再由题目中的定义得出voidfun(charstr,charch)的错误信息;str[1]='0';是一个简单的语法错误。

33.(1)错误:intj=1正确:doublej=1.0;(2)错误:y+=1/(i*i);正确:y+=j/(i*i);(1)错误:intj=1正确:doublej=1.0;\r\n(2)错误:y+=1/(i*i);正确:y+=j/(i*i);解析:错误1:为了做后面的除法运算,j要定义为实型数,否则除得的结果将为整数。错误2:题中公式是加减相间的运算,通过来实现。

34.(1)错误:intfun(intm)正确:doublefun(intm)(2)错误:for(i=1;i<m;i++)正确:for(i=2;i<=m;i++(1)错误:intfun(intm)正确:doublefun(intm)\r\n(2)错误:for(i=1;i<m;i++)正确:for(i=2;i<=m;i++解析:错误1:函数的返回值为实型数,所以应定义为double类型。错误2:根据题目的公式,参加运算的数应从2到m,包括m。

35.(1)错误:fun(intn)正确:doublefun(intn)(2)错误:c=a;a+=b;;b+=c;正确:c=a;a+=b;b=c;(1)错误:fun(intn)正确:doublefun(intn)\r\n(2)错误:c=a;a+=b;;b+=c;正确:c=a;a+=b;b=c;解析:该题题干是著名的斐波拉契分数序列,所以循环条件应该是c=a;a+=b;b=c。

36.(1)错误:r=p;正确;r=t;(2)错误:if(*r=0)正确:if(*r=='\0')(1)错误:r=p;正确;r=t;\r\n(2)错误:if(*r=0)正确:if(*r=='\\0')解析:从字符串s中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论