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

程序设计题(2)

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

是’\\0’,判断语句用来判断当前字符是否为指定字符。最后返回指定字符的个数。

10.编写函数fun,其功能是:计算n门课程的平均分,结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。 #include floatfun(float*a,intn) { inti;

floatav=0.0; for(i=0;i

分析:本题考查:如何通过指针来实现计算平均分。

本题较简单,只需用一个循环语句就可完成数组元素的求和,再将和除以课程数即可。需要注意的是本题对指针的操作,当指针变量指向一个数组时,用该指针变量引用数组元素,引用方式与数组的引用方式相同。如本题中a指向了score,所以通过a引用score中的元素时可以用下标法,也可以用指针运算法,a[i]和*(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为0。例如,若有intcc[10],*p=cc+5;,即p指向了cc的第5个元素,则p[0]的作用与cc[5]相同;p[3]的作用是取出从当前地址(即p所指地址)开始往后的第3个元素,它与cc[8]相同;p[-2]的作用是取出从当前地址开始往前的第2个元素,它与cc[3]相同,但不提倡使用\负\的下标。 注意:计算平均分方法。 掌握以下语句:

for(i=0;i

}

voidmain() {

floatscore[30]={90.5,72,80,61.5,55} aver=fun(score,5);

printf(“\\nAveragescoreis:%5.2f\\n”,aver); }

11.学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,编写函数fun,其功能是:把分数最高的学生的数据放在b所指的数组中。注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。 #include #defineN16 typedefstruct {charnum[10]; ints; }STREC;

intfun(STREC*a,STREC*b) {

inti,j=0,max=a[0].s; for(i=0;i

if(max

6

for(i=0;i

if(max==a[i].s)b[j++]=a[i]; returnj; }

voidmain()

{STRECs[N]={{\},{\64},{\2\,{\2}};

STRECh[N]; inti,n; n=fun(s,h); printf(\for(i=0;i

该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值。第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中。

对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。如果是对结构体数组进行类似操作呢?掌握以下语句: for(i=0;i12.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:除了字符串前导的*号外,将串中其他*号全部删除。编写函数函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFG。 #include #include #include voidfun(char*a) {

inti=0;

char*p=a;//单独处理字符串为’*’的情况 while(*p&&*p=='*') {

a[i]=*p;i++;p++; }

//循环判断当前指向的字符是否’*’如果不是保存 while(*p) {

if(*p!='*')

//保存非*得字符串,并将指针移到下一个位置 {a[i]=*p;i++;} p++; }

a[i]='\\0'; }

main() {

chars[81];

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

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

分析:本题考查:指针型变量定义;while循环语句;if语句条件表达式;字符串结束标识'\\0'。

函数fun的功能:除了字符串前导的*号之外,将串中其他*号全部删除。解答本题,(1)定义一个临时指针p,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符'\\0'。

要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。

13.编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中“a”到“z”26个小写字母各自出现的次数,并依次放在pp所指的数组中。

7

例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是: 33322110000000000000000000 #include #include

voidfun(char*tt,intpp[]) { inti;

for(i=0;i<26;i++)//初始化pp数组个元素为0 pp[i]=0;//遍历字符串,统计字母出现的个数 for(;*tt!='\\0';tt++)//如果字符为小写字母

if(*tt>='a'&&*tt<='z')//使统计字母个数的数组pp中的对应元素加1 pp[*tt-'a']++; }

需注意条件表达式的逻辑运算;字符串结束标识'\\0'。

要求统计在tt所指字符串中'a'~'z'26个小写母各自出现的次数,并依次放在pp所指数组中。首先使用for循环语句初始化pp数组中分别用来统计26个字母的个数,再使用循环判断语句对tt所指字符串中的字符进行逐一比较操作,同时存入相对应的pp数组中.

main()

{

charaa[1000]; intbb[26],k;

printf(\ scanf(\ fun(aa,bb);

for(k=0;k<26;k++) printf(\ printf(\}

分析:本题考查:for循环语句,注意循环变量取值范围以及循环体语句作用;数组元素初始化和赋值操作;if语句条件表达式,

14.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串尾部的*全部删除,前面和中间的*号不动。

例如,字符串中的内容为:\,删除后,字符串中的内容应当是:\。在编写函数时,不得使用C语言提供的字符串函数。 #include #include voidfun(char*a) {

while(*a!='\\0') a++;

a--;//指针a指向字符串的尾部 while(*a=='*')

a--;//指针a指向最后一个字母

*(a+1)='\\0';//在字符串最后加上结束标识符*

}

voidmain() {chars[81];

printf(\gets(s); fun(s);

printf(\puts(s); }

分析:本题考查:删除字符串尾部*号;删除的主要思想是把不删除的字符保留起来。

对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号’\\0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号'\\0'。

15.编写函数fun,其功能是:比较字符串的长度,不得使用C语言提供的求字符串长度的函数,函数返回较长的字符串。若两个字符长度相同,则返回第一个字符串。

8

例如,输入beijingshanghai(为回车键),函数将返回shanghai。 #include

char*fun(char*s,char*t) { inti,j;

for(i=0;s[i]!='\\0';i++); for(j=0;t[j]!='\\0';j++); if(i<=j) returnt; else returns;

}

voidmain() {

chara[20],b[20];

printf(“Input1thstring:”); gets(a);

printf(“Input2thstring:”); gets(b);

printf(“%s”,fun(a,b)); }

分析:本题考查:字符串长度比较运算,使用循环语句实现,应注意其循环条件。

本题中,第1个for循环的作用是求出s串的字符个数i,第2个for循环的作用是求出t串的字符个数j,因为任何循环都要控制一条语句,所以在每一个for循环语句后面加上一个分号以结束循环。

16.学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,编写函数fun,其功能是:函数返回该学号的学生的数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp,strcmp(a,b)中,当a和b字符串相等时返回值为0)。

#include #include #include #defineN16 typedefstruct {

charnum[10]; ints; }STREC;

STRECfun(STREC*a,STREC*b) { inti;

STRECstr={\//若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1 for(i=0;i

if(strcmp(a[i].num,b)==0)//找到指定学号的学生数据

str=a[i];

returnstr;//返回学生记录 }

voidmain()

{STRECs[N]={{\

},{\64},{\2\,{\2}}; STRECh;

charm[10]; intI;

printf(“Theoriginaldata:\\n”); for(i=0;i

if(i%4==0)

printf(\每行输出4个学生记录 printf(“%s=”,s[i].num,s[i].s); }

printf(\gets(m); h=fun(s,m);

printf(\

printf(\printf(\}

分析:本题考查:结构体类型;字符串比较函数strcmp()的应用。

9

本程序一开始先使结构体变量str中的学号为空串,成绩为-1。循环体的功能是搜索所有学生的学号,并判断是否有学号与b所指字符串相同(即找到),若找到则给str重新赋值(str=a[i]),若没找到则str成员的值还是原有值(即未找到时学号返回空串,成绩返回-1)。

17.函数fun的功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。

例如,若s所指字符串中的内容为\其中字符A的ASCII码值为奇数,因此应当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是\。 #include #include #include #include voidfun(char*s,chart[]) {

inti,j=0;

for(i=0;s[i]!='\\0';i++) if(i%2==0&&s[i]%2==0) t[j++]=s[i];

t[j]='\\0'; }

chars[100],t[100]; system(“CLS”);

printf(\scanf(\fun(s,t);

printf(\}

分析:本题考查:循环判断结构;字符串的操作;逻辑运算符的使用。

本题要求删除除了下标为偶数同时ASCII码值也为偶数的字符,即保留下标为偶数同时ASCII码值也为偶数的字符。循环语句用于遍历字符串,条件语句用于判断当前字符是否符合要求。注意判断条件是下标为偶数,同时ASCII码值也为偶数,所以应使用逻辑与\运算符。

18.编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(X)-x=0的一个实根。Xn+1=cos(Xn) 迭代步骤如下: (1)取x1初值为0.0;

(2)x0=x1,将x1的值赋给x0; (3)x1=cos(x0),求出一个新的x1;

(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出结果Root=0.739086。 #include #include

#include doublefun()

10

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

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