77范文网 - 专业文章范例文档资料分享平台

程序设计题

来源:网络收集 时间:2020-05-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

三、程序设计题

1.请编写函数fun,其功能是:找出2*M整型二维数组中最大元素的值,并将此值返回调用函数。 #defineM4

#include intfun(inta[][M]) {

inti,j,max=a[0][0]; /*对二维数组进行遍历*/ for(i=0;i<2;i++) for(j=0;j环语句时需注意循环变量的取值范围。

此类求最大值或最小值问题,可以采用逐个比较的方式,对数组中所有元素遍历一遍,从中找出数组最大值或最小值。首先定义变量max用来存放数组的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素之大于max,则将该值赋予max,循环结束后max的值即为数组最大值,最后将该值返回。

注意:该类题目考查较多,需要掌握逐个比较的方法。对于m*n二维数组,如果采取逐个查找方法,代码实现如下: for(i=0;i

/*将最大值保存在max中*/ max=a[i][j]; returnmax; }

Voidmain() {

intarr[2][M]={5,8,3,45,76,-4,12,82}; printf(“max=%d\\n”,fun(arr));

分析:本题考查:求数组的最大值,需运用循环语句。因为数组是二维数组,所以应使用二层加for循环嵌套。使用for循

2.请编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代。)

??????×????×??×????×??×??×????×??×…×??

=??+++++?+ ??????×????×??×????×??×??×????×??×… ????+?? 程序运行后,若输入精度0.0005,则程序应输出为3.14... #include

#include #include doublefun(doubleeps) {

doubles=1.0,s1=1.0; intn=1;

while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/

{s1=s1*n/(2*n+1);/*求多项式的每一项*/

s=s+s1;/*求和*/ n++; }

return2*s; }

doublex;

printf(“Inputeps:”); scanf(“&1f”,&x);

printf(“\\neps=,PI=\\n”,x,fun(x)); }

分析:本题考查迭代法求给定多项式的值。迭代算法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令或这些步骤时,都从变量的原值推出它新值。需要注意变量的数据类型以及赋初值操作。

首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第2项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s表示求和后的结果。需注意s1和s的初值都为1.0,因为循环变量从第二项开始累加。

3.请编写函数fun,其功能是:求出1至1000之间能被7或11整除,但不能同时被7和11整除的所有整

1

数,并将其放在a所指的数组中,通过n返回这些数的个数。 #include #include #include voidfun(int*a,int*n) {

inti,j=0;

for(i=1;i<=1000;i++)//求1到1000之内能被7或11整除但不能同时被7和11整除的所有整数,并放入数组a中

if((i%7==0||i==0)&&iw!=0) a[j++]=i;

*n=j;//传回满足条件的数的个数 }

Voidmain() {

intaa[1000],n,k; system(“CLS”); fun(aa,&n);

for(k=0;k

Printf(“\\n”);}//一行写9个数 else

printf(“]”,aa[k]); }

分析:本题考查if语句,用来判断能被7整除或者能被11整除,但是又不能同时被7和11整除的数,在这里充分理解\逻辑与\和\逻辑或\的区别;for循环语句的循环变量用来控制取值范围。

该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可,下面我们来看判断语句,题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数。能同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除的数所以可得出程序中的if()语句。注意:(i%7==0||i==0)两边必须要有小括号。

4.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当是:ABCDEFG。 #include #include 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’。

voidmain() {

chars[81]

printf(“Enterastring:\\n”); gets(s); fun(s);

printf(“Thestringafterdeleted:\\n“); puts(s) }

分析:删除字符串中所有*号需要用循环语句遍历字符串,用判断语句判断字符是否为*号,由此可以决定该程序应使用循环

5.编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。

2

例如,分别输入下面两个字符串: FirstString-- SecondString 程序输出:

FirstString--SecondString #include #include #include

voidfun(charp1[],charp2[]) { inti,j;

for(i=0;p1[i]!='\\0';i++);//求出的i为p1字符串的总长度,包括结束标识符 for(j=0;p2[j]!='\\0';j++)

p1[i++]=p2[j];//将p2字符串连在p1字符串后面 p1[i]='\\0';//在字符串最后加上结束标识符 }

voidmain()

识'\\0'。

本题用两个循环完成操作,第1个循环的作用是求出第1个字符串的长度,即将i指到第1个字符串的末尾。第2个循环的作用是将第2个字符串的字符连到第1个字符串的末尾。最后在第1个字符串的结尾加上字符串结束标识’\\0’。

{

chars1[81],s2[40]; system(“CLS”);

printf(“Enters1ands2:\\n”); scanf(“%s%s”,s1,s2); printf(“s1=%s\\n”,s1); printf(“s2=%s\\n”,s2);

printf(“Invokefun(s1,s2):\\n”); fun(s1,s2);

printf(“Afterinvoking:\\n”); printf(“%s\\n”,s1); }

分析:本题考查:不使用字符串函数实现字符串连接操作。通过for循环语句来完成,不要忘了最后需要加上字符串结束标

6.某学生的记录由学号、8门课程成绩和平均分组成,学号、8门课程成绩已在主函数中给出,编写函数fun,其功能是:求出该学生的平均分,并记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。 #include #defineN8 typedefstruct {

charnum[10]; doubles[N]; doubleave; }

STREC;

voidfun(STREC*a) {

doubleave=0.0; inti;

for(i=0;i

a->ave=a->ave+a->s[i]; a->ave/=N; }

voidmain() {

STRECs={\};

inti; fun(&s);

printf(\’sstudentdata:\\n\for(i=0;i

printf(\

printf(\; }

分析:本题考查:结构体类型成员运算,指向结构体类型的指针变量作函数参数。

3

本题考查自定义形参的相关知识点,程序流程是这样的:在fun()函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a,此时,引用成员的方式可以使用指向运算符,即a->ave和a->s[i],当然也可用(*a).ave和(*a).s[i]。

7.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。编写函数fun,其功能是:求出平均分,并由函数值返回。

例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。 #include #include #defineN8 structslist {

doubles;

structslist*next; };

typedefstructslistSTREC; doublefun(STREC*h) {

doubleave=0.0;

STREC*p=h->next;//p直接指向”头结点”的下一个结点,即第一个成绩 while(p!=NULL)

{ave=ave+p->s;//求总分数 p=p->next; }

returnave/N;//返回平均值 }

STREC*creat(double*s) {

STREC*h,*p,*q; inti=0;

h=p=(STREC*)malloc(sizeof(STREC)); p->s=0; while(i

点。

题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均分。遍历链表时应定义一个指向结点的指针p,因为\头结点\中没有数值,所以程序中让p直接指向\头结点\的下一个结点,使用语句STREC*p=h->next;。

{

q=(STREC*)malloc(sizeof(STREC)); q->s=s[i];i++;p->next=q;p=q; }

p->next=0; returnh; }

outlist(STREC*h) {

STREC*p; p=h->next; printf(\do {

printf(\p=p->next;

}while(p!=NULL) printf(\}

voidmain() {

doubles[N]={85,76,69,85,91,72,64,87},ave; STREC*h;

h=creat(s);outlist(h); ave=fun(h);

printf(\}

分析:本题考查:链表的操作,对链表的主要操作有以下几种:建立链表、结构的查找与输出、插入一个结点、删除一个结

8.编写函数fun,其功能是:将所有大于一小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回。

4

例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。 #include #include #include

voidfun(intm,int*k,intxx[]) {

inti,j,n=0;

for(i=4;i

if(i%j==0)break; if(j

本题考查:如何判断非素数;循环判断结构;数组的引用。

题目要求将1~m之间的非素数存入数组中,应使用循环判断结构。循环语句用来遍历1~m之间的每个数,判断语句用来判断该数是否素数,若不是素数,则将其存入数组中。这道题目是考查一个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。

判定一个数是否为素数,即该数除了能被1和它本身外,不能被任何数整除。 代码实现为: for(j=2;j

if(i%j==0)/*如余数为0,证明i不是素数*/……

此语句需要熟记,很多判断素数的题目也可通过此法解决。

voidmain() {

intm,n,zz[100]; system(\

printf(\100:\

scanf(\fun(n,&m,zz);

printf(\d:\

for(n=0;n

9.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串123412132,输入字符为1,则输出3。 #include #include #include #defineM81

intfun(char*ss,charc) {

inti=0;

for(;*ss!='\\0';ss++) if(*ss==c) i++; returni;

}

voidmain() {chara[M],ch; system(“CLS”);

printf(\gets(a);

printf(\ch=getchar();

printf(\h)); }

分析:本题考查:for循环语句遍历字符串,并通过if条件语句,判断字符串是否结束。

从字符串中查找指定字符,需要使用循环判断结构,循环语句用来遍历字符串,循环条件为字符串没有结束,即当前字符不

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库程序设计题在线全文阅读。

程序设计题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1025193.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: