2022年江西省赣州市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2022年江西省赣州市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2022年江西省赣州市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2022年江西省赣州市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2022年江西省赣州市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2022年江西省赣州市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、2.填空题(10题)1.若有下列定义和语句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果为______。

2.在宏定义#defineP13.14159中,用宏名PI代替一个______。

3.下面程序的运行结果是【】。

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

4.注释一般分为序言性注释和______注释。

5.下面程序的输出结果是()。

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

printf("%d\n",A);

}

6.执行以下程序的输出结果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

7.有以下程序:

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)puts(ps);

}

执行后的输出结果是【】。

8.下列程序的运行结果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

9.关系操作的特点是______操作。

10.以下程序的输出结果是【】。

#include<stdio.h>

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

printf("%d\n",1);

}

二、单选题(10题)11.算法能正确地实现预定功能的特性称为算法的()。

A.正确性B.易读性C.健壮性D.高效率

12.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()

A.二叉搜索树,比较函数开销:1次运算/每字符

B.哈希表,hash算法开销:10次运算/每字符

C.链表,比较函数开销:1次运算/每字符

D.TRIE树,寻找子节点开销:1次运算/每字符

13.某完全二叉树有256个节点,则该二叉树的深度为()。

A.7B.8C.9D.10

14.设x是一个int型的,y的值为10,则表达式x&&y的值为()。

A.1B.0C.与x值相同D.与x值相反

15.执行下述程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

16.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表

17.在单链表中,增加头结点的目的是______。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

18.若执行下面的程序时,从键盘上输入5和2,则输出结果是______。main(){inta,b,k;scanf("%d,%d",&a,&b);k=a;if(a<b)k=a%b;elsek=b%a;printf("%d\n",k);}

A.5B.3C.2D.0

19.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;

A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;

20.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。

A.直接插入排序B.直接选择排序C.快速排序D.二路归并排序

三、程序设计题(10题)21.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

22.假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g****。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h=:{>#include<conio.h>woidproc(char*str){}voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

23.编写函数fun(),其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。例如,分别输入下面两个字符串:“FirstString——”“SecondString”程序输出:“FirstString——SecondString”注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

24.25.编写函数fun(),其功能是计算:

s作为函数值返回。

在C语言中可调用log(n)函数求1n(n)。log函数的引

用说明为:doublelog(doublex)。

例如,若m的值为20,则fun()函数值为6.506583。

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

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

试题程序:

26.编写函数fun(),其功能是:求出1~1000中能被7或11整除,但不能同时被7和ll整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

27.请编写函数proc(),它的功能是:求出1~1000中能被5或13整除,但不能同时被5和13整除的所有整数,并将它们放在arr所指的数组中,通过n返回这些数。注意:部分源程序给H{如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

28.请编写一个函数,用来删除字符串中的所有空格。例如,输入abcdefgh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

29.请编写一个函数proc(),它的功能是:求出一个4×N整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:

30.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将M行N列的二维数组中的数据,按列的顺序依次存放到一维数组中,将一维数组中数据的个数存放在形参n所指的存储单元中。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf(“Thematrix:\n”);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%3d”,w[i][j]);printf(“\n”);}fun(w,a,&n,3,4);printf(“TheAarray:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}

四、2.程序修改题(10题)31.下列给定程序中,函数fun()的功能是计算并输出high以内的素数之和。high由主函数传给fun()函数。

例如:若high的值为100,则函数的返回值为1060。

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

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

[试题源程序]

#include<conio.h>

#include<stdio.h>

#include<math.h>

intfun(inthigh)

{

intsum=0,n=0,j,yes;

while(high>=2)

{

yes=1;

for(j=2;j<=high/2;j++)

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

ifhigh%j==0

{

yes=0;

break;

}

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

if(yes==0)

{

sum+=high;

n++;

}

high--;

}

returnsum;

}

main()

{

clrscr();

printf("%d\n",fun(100));

}

32.给定程序MODll.C中函数fun的功能是;从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为:7654321时,t中的数为:642。

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

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

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

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

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

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

34.给定程序MODl1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为2736598时,t中的数为:2358。

#include<conio.h>

#include<stdio.h>

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

voidfun(longs,longt)

{longs1=10;

*t=S%10;

while(s>0)

{s=s/l00;

*t=S%10*s1+*t;

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

s1=s1*100;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:”);

scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

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

A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))

例如,若p=10,则应输出0.617977。

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

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

试题程序:

#include<conio.h>

#include<stdio.h>

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

ihtfun(ihtn)

{floatA=l;inti;

/**************foudn********************/

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

A=1.0/(i+A);

returnA;

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

$canf("%d",&n);

printf("A%d=%lf\n",n,fun(n));

}

36.给定程序MODll.C中函数fun的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。

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

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

37.给定程序MODll.C中函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。

例如,若输入2|若输入4

则输出:|则输出:

12|1234

24|2468

|36912

|481216

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

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

38.给定程序MODII.C中函数fun的功能是:将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为:87653142时,t中的数为:8642。

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

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

39.给定程序中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为:7654321时,t中的数为:642。

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

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

[试题源程序]

#include<stdio.h>

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

voidfun(longs,longt)

{

longs1=10;

s/=10;

*t=s%10;

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

while(s<0)

{

s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

mein()

{

longs,t;

printf("\nPleaseenters:");

scanf("%1d",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

40.下列给定程序中,函数fun()的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。

π/4≈1-1/3+1/5-1/7+…

例如,程序运行后,输入0.0001,则程序输出3.1414。

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

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

试题程序:

#include<math.h>

#include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=1;pi=0;n=1;s=1;

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

while(t>=num)

{

pi=pi+t;

n=n+2;

s=-s;

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

t=s%n;

}

pi=pi*4;

returnpi;

}

main()

{floatn1,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f",&n1);

n2=fun(n1);

printf("%6.4f\n",n2);

}

五、程序改错题(2题)41.下列给定程序中函数fun的功能是。用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1、1、2、3、5、8、l3、21、……

例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。

42.下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,则应输出0.000162。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、操作题(2题)43.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的记录已存入a结构体数组中。请编写函数fun(),该函数的功能是找出成绩最高的学生记录,通过形参将其返回主函数(规定只有一个最髙分)。已给出函数的首部,请完成该函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#defineN10typedefstructss/*定义结构体*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printf(“****Theoriginaldata****”);for(i=0;i<N;i++)printf(“No=%sMark=%d\n”,a[i].num,a[i].s);fun(a,&m);printf(“****THERESULT****\n”);printf(“Thetop:%s,%d\n”,m.num,m.s);}

44.请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母)按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函数返回这个字符串的长度。例如;输入“cixbr2.3”,如果为bcirx,字符串长度为5。

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

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

#include<stdio.h>

#defineN20

intfun(char*str)

{

inti=0,j=0,k=-0,m=0;

chart;

char*p=str;

while(*p)

{

if((*p>='A'&&*p<='Z')||(*p>='a'

&&*p<='z'))

【】

p++;

}

*(str+i)='\0';

【】;

while(*(p+j))

{

k=j;

【】;

while(*(p+k))

{

if(*(p+k)<*(str+m)

{

t=*(str+m);

*(str+m)=*(p+k);

*(p+k)=t;

}

k++;

}

j++;

}

returni;}

main()

{

charstr[81];

ihtn;

clrscr();

printf("Inputtheoriginalstring");

gets(str);

printf("***TheOriginalstring***In");

puts(str);

printf("***Thenwestring***\n");

n=fun(str);

puts(str);

printf("***Thelengthofnewstringis:

%d***\n",n);

}

参考答案

1.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。

2.本题考查字符替换格式:#define标识符字符串。

3.1-21,-2解析:题中外层while循环的循环条件是y--!=-1,即y>=0;内层do…while循环的循环条件是y--即y-->0,y>=1。注意:break和continue语句在循体中的作用。

4.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释一般嵌在源程序体之中,主要描述其后的语句或程序做什么,

5.3232解析:while(表达式)的功能是:首先计算表达式的值.若为真,则执行循环体语句,执行完毕,再计算表达式的值.若仍为真,则重复执行循环体语句,直到表达式的值为假,结束while语句的执行,继续执行while语句后面的语句;i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

6.5555解析:本题考查的重点是对宏定义的理解。#define指令定义一个标识符和一个串,编译程序在对C源程序处理时.发现该标识符都用该串替换,因此,在语句k=N*N*5将替换成k=M+M*M+M*5后,M被替换成5,从而k=5+5*5+5*5=55。

7.zyzXyzzyzXyz解析:本题考查字符型指针变量的应用。程序中字符指针变量ps指向字符串'xyz',while循环语句的作用使ps指向字符串结尾,for循环的执行过程如下。

第一次循环:ps指向字符串'z',输出z。

第二次循环:ps指向字符串'yz',输出yz。

第三次循环:ps指向字符串'xyz',输出xyz。

8.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

9.集合集合

10.77解析:程序中经过宏替换后,表达式t=MAX(a+b,c+d)*10变为t=(a+b)>(c+d)?(a+b):(c+d)*10。因为(a+b)>(c+d)为真,所以t=(a+b),输出结果为7。

11.A

12.D

13.C

14.C

15.D本题j=要是考查带参数的宏的定义,过程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

16.D

17.A\nA。【解析】头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

\n

18.C解析:本题考查简单的if...else语句。先执行条件if(a<b),显然不成立,则执行else语句。

19.C解析:本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y、z。

20.C

21.

【解析】要得到成绩高于等于平均分的学生数据,首先要得到所有学生的平均分,然后把每个学生的成绩与平均分相比较。把符合条件的学生数据放在数组b中,学生个数通过形参中的指针变量返回,平均分数由函数值返回。

22.\n\tvoidproc(char*str)\n\n\n\t{\n\n\n\tchar*p=str:\n\n\n\twhile(*p==*)p++;//通过P的移动来达\n\n\n\t到使P指向第一个不是*号的字符\n\n\n\tfor(;*p!=\0

;p++,str++)//把从第一个\n\n\n\t不是*号的字符放到a中‘\n\n\n\t*str=*P:\n\n\n\t*str=\0

;//最后用\0作为字符串结束标志\n\n\n\t}\n\n\n\t【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。\n

23.

【解析】本题考查字符串连接函数的实现。本题通过两个for循环完成功能。第一个循环的作用是计算出字符串的长度,如果p1是ˊ\0ˊ(即此字符是字串尾),退出循环,i中保存的数值即是字串长度。第二个循环的作用是循环遍历字串p2的字符,利用语句“p1[i++]=p2[j];”将p2中的字符逐个插到字串p1后。

24.

25.

【解析】题目要求写出程序实现数学表达式的功能,需要用for循环计算累加的结果,调用sqrt函数实现求平方根。循环变量的范围是1~m,每次循环都进行一次累加求和。需要特别注意的是,log函数的形式参数为double型变量,用于循环的计数变量为整数,所以必须强制转换。最后返回所求出的平方根。

26.

【解析】根据题意,所写函数要用for循环实现对整数1~1000的遍历;通过if语句找出能被7或11整除,但不能同时被7和11整除的所有整数,因为同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除,可得出表达式“(i%7==0||i%11==O)&&i%77!=0”;再按题目要求,将找出来的整数放在a所指的数组中,通过n返回这些数的个数即可。

27.

【解析】题目中要求出1~1000中能被5或13整除,但不能同时被5和13整除的所有整数,首先应判断1~1000的每一个整数是否符合要求,将符合要求的每一个整数放入数组arr中。最后将整数的个数作为形参返回给主函数。

28.

【解析】根据题目中要求删除字符串中所有的空格,需要检查字符串中的每一个字符。将不是空格的字符放入原来的字符串中,形成新的字符串。在新的字符串的末尾加上结束符。

29.

【解析】要求出二维数组中最大元素的值,需要比较二维数组中每一个元素的值。首先,定义变量max用来存放最大元素的值,将其初始化为二维数组中第一个元素的值。然后将其与后面的每一个元素进行比较,将二维数组中最大元素的值放到变量max当中,并将其返回给主函数。

30.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*将二维数组中的数据按列的顺序依次存入一维数组中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通过指针返回元素个数*/}}题目要求实现将二维数组元素存入一维数组。使用for循环语句来控制二维数组元素的下标,同时使用指针变量配合操作。可以用两个循环来处理问题,由于是按列的顺序取出,因此第1个循环用于控制列下标,第2个循环用于控制行下标。

31.(1)错误:ifhigh%j==0正确:if(high%j==0)(2)错误:if(yes==0)正确:if(yes)(1)错误:ifhigh%j==0\r\n正确:if(high%j==0)\r\n(2)错误:if(yes==0)\r\n正确:if(yes)解析:fun函数的功能是:用while循环查找high以内的素数;用for循环判断一个数是否为素数;用变量n记录找到的素数的个数:用return返回素数之和sum。

错误1:这个错误比较明显,if语句的两侧要加括号。

错误2:yes为1时,说明被判断的数是素数,要累加到sum。

32.(1)voidfun(10ngslong*t)(2)while(s>0)(1)voidfun(10ngs,long*t)(2)while(s>0)解析:该题中函数功能是取出长整型变量s中偶数位上的数,组成新数。从已给定源程序的main主函数开始入手,“fun(s,&t);”语句调用函数fun来实现题目要求。

33.(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])解析:本题中函数的功能是读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。本题思路是利用字符串长度作为循环的控制条件,然后在循环过程中将字符按.ASCII码排序。

34.voidfun(longslongt)改为voidfun(longslong*t)s1=s1*100;改为s1=s1*10;voidfun(longs,longt)改为voidfun(longs,long*t)\r\ns1=s1*100;改为s1=s1*10;解析:从fun函数可以看出,变量t应该是指针变量。因此,在形参表列中,t之前应该加“*”;从s中取出奇数位构建新数是逐位进行,而不是跳位的。因此,s1应该乘以10。

35.(1)错误:intfun(intn)正确:floatfun(intn)(2)错误:for(i=2;i<n;i++)正确:for(i=2;i<=n;i++)(1)错误:intfun(intn)正确:floatfun(intn)\r\n(2)错误:for(i=2;i<n;i++)正确:for(i=2;i<=n;i++)解析:该题中fun()函数的作用是计算数列前n项的和,而数列的组成方式是:第n项的分母是功口第n-1项的值,分子为1,如果循环累加按for(i=2;i<n;i++)执行的话,当我们输入n=2的时候会是什么结果?循环会怎么执行呢?循环不能执行,但数学思路绝对正确,这就矛盾了,所以循环条件应该是for(i=2;i<n;i++)。

36.(1)if((k%13==0)II(k%17==0))(2)}(1)if((k%13==0)II(k%17==0))(2)}解析:该题中函数功能是求能被13或17整除的自然数之和。从已给定源程序的main主函数开始入手,“printf("%d\\n",fun(500));”语句中的fun函数将500传给n,计算小于500的能被13或17整除的自然数之和。

37.(1)voidfun(inta[][M]intm)(2)a[j][k]=(k+1)*(j+1);(1)voidfun(inta[][M],intm)(2)a[j][k]=(k+1)*(j+1);解析:本题中函数的功能是根据形参m的值(2≤m≤9),在m行m列的二维数组中存放有规律的数据,规律就是,i和j代表二维数组的行和列,则a啪[k]=(k+1)*(j+1)。

38.(1)if(d%2==0)(2)s/=10;(1)if(d%2==0)(2)s/=10;解析:本题中函数的功能是将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。首先在函数中对长整型数的每一位来进行截取,然后对其进行判断,最后根据判断结果进行操作。

39.(1)错误:void

温馨提示

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

评论

0/150

提交评论