




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的参数。输出已交换后的两个值。,#defineEXCHANGE(A,B,X)X=A;A=B;B=Xmain()inta,b,x;printf(“inputaandb:”);scanf(“%d,%d”,2、编写程序,输入两个整数,求它们相除的余数。用带参的宏来实现。,#defineR(A,B)A%B,main()inta,b;printf(“inputaandb:”);scanf(“%d,%d”,3、分别用函数和带参的宏,从3个数中找出最大值。,intmax(inta,intb,intc)intx;x=(ab)?a:b;x=(xc)?x:c;return(x);,main()intx,y,z,m;printf(“inputx,y,z”);scanf(“%d,%d,%d”,#defineMAX(A,B,C,M)(M=AB?A:B)C?M:C,4、求和:S1-(1/2)+(1/3)-(1/4)+(1/n),其中n=10。,方法1:,voidmain()inti,n=10;floats=0;for(i=1;i=n;i+)s=s+(i%2=1)?(1.0/i):(-1)*(1.0/i);printf(“s=%fn”,s);,方法2:求s1-(1/2)+(1/3)-(1/4)+(1/n)其中n=10,voidmain()inti,n=10,f=-1;floats=0;for(i=1;i=n;i+)f=-f;s+=f*(1.0/i);printf(“s=%fn”,s);,5、编写程序,求sum1-3+5-7+-99+101,方法1:,voidmain()inti;floatsum=0;for(i=1;i=101;i+=4)sum+=i;for(i=3;i=99;i+=4)sum-=i;printf(“sum=%fn”,sum);,方法2:求sum1-3+5-7+-99+101,voidmain()inti,f=-1;floatsum=0;for(i=1;i=101;i+=2)f=-f;sum+=f*i;printf(“sum=%fn”,sum);,6、打印如下数字三角形:,112112321123432112345678987654321,voidmain()inti,j;for(i=1;i0;j-)printf(“%d”,j);printf(“n”);,7、编写程序,输出左下三角的九九口诀表。,1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81,输出左下三角的九九口诀表的程序如下:,voidmain()inti,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(“%4d*%d=%2d”,i,j,i*j);printf(“n”);,8、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超过50公斤,超过部分每公斤加收0.10元。编一程序实现自动计费功能。,doublemoney(doublew)if(w=50)return0.15*w;elsereturn0.75+0.1*(w-50);,voidmain()intw;doublef;doprintf(“请输入行李重量:”);scanf(“%d”,9、编写函数,将两个递增有序的表,合并成一个递增有序的表。,#defineN50#defineSeqListstructseqlistSeqListintdataN;intlength;,合并函数如下:,SeqList*mergelist(a,b)SeqLista,b;SeqListc;inti=0,j=0,k=0;while(ia.length),10、冒泡排序(BubbleSorting)李丽娟教材p156题7.37,两两比较相邻元素,若反序则交换,直到无反序的记录为止。,(1)冒泡排序的基本思想,在冒泡排序的过程中,各元素不断接近自己的位置。如果一趟比较下来没有进行过交换,就说明记录序列已经有序,不需继续排序下去。因此设置一个标志变量exchange,在每趟排序开始前,首先假设该趟不会有数据交换,置exchange为0;以后一旦发生数据交换,就对exchange置1。若一趟排序结束,exchange仍然为0,则说明该趟排序过程中已无反序记录。因此,没有必要再进行下一趟排序。,例如,n=6,数组R的6个关键字分别为:14,20,25,17,3,9冒泡排序算法的执行过程如下图所示。,四,三,二,一,9,17,25,20,14,3,i,j,(2)冒泡排序算法,voidBubblesort(intR,intn)/*对数组R0.n-1按递增序进行冒泡排序*/inti,j,temp,exchange;for(i=0;ii;j-)if(Rjn)。(2)对an按递增序进行排序。(3)输出插入前的有序序列。(4)读入要插入的数x。(5)设置游标i从表尾开始搜索插入位置,若ai大于x则将ai移到ai+1位置。(6)一旦出现ai小于x,则将x插入到i+1位置。(7)输出插入后的有序序列。,(3)完整的程序如下,#include“stdio.h”#defineN10main()inti,j,x,n,aN;/*数字a的最大容量为N*/printf(“请输入数组的实际元素个数n:n”);scanf(“%d”,/*排序*/output(a,n);/*输出插入前的序列*/,scanf(“%d”,/*插入元素x*/,output(a,n);/*输出插入后的序列*/,直接选择排序函数如下:,voidselectsort(intb,intn)inti,j,k,temp;for(i=0;i=n-2;i+)k=i;/*假设i位置上就是最小的*/for(j=i+1;j=n-1;j+)if(bj=0)putchar(aj+0);/*将aj位置上的数字转换为对应的字符*/j=j-1;,#includevoidconvert(intn)intk;if(k=n/10)!=0)convert(k);/*截取n的最低位上的数字保存到栈中,并使n缩小10倍*/putchar(n%10+0);/*逐次弹出栈顶数字,并将其转换为对应的字符输出*/,递归函数:,voidmain()intnum;printf(“inputaintegernumber:”);scanf(“%d”,主函数:,14、用递归的方法求1+2+3+n。李丽娟教材p126题6.43:,假设输入5n,3.执行过程:,main()y=add(5);,add(4)s=4+add(3);returns;,add(3)s=3+add(2);returns;,n=4,n=3,add=6,add(2)s=2+add(1);returns;,add(1)s=1;returns;,n=1,add=1,n=2,add=3,add=10,add(5)s=5+add(4);returns;,add=15,n=5,intadd(intn),ints;,if(n=1),elses=n+add(n1);,return(s);,s=1;,main(),intn,y;,scanf(%d,y=add(n);,printf(“%d的累加和=%d,n,y);,15、编写递归函数reverse,将字符串s颠倒过来输出。,voidreverse(chars,inti)/*第一次调用时,i为0*/if(si+1!=0)reverse(s,i+1);putchar(si);,16、任意输入一个整数,将其各位数字反序输出(例如,输入1234,输出4321)。,intreverse(intn)intnum;for(num=0;n0;n/=10)num=num*10+n%10;returnnum;,17、将一个长度不超过4的数字字符串转换成一个整数。例如,字符串为“3248”,则转换成整数3248。,intatoi(char*nst)inti,num=0;for(i=0;sti!=0;i+)num=num*10+nsti-0;returnnum;,18、编写程序,将任意一个字符串从第一个字符开始间隔地输出该串。例如,字符串为:abcdef,输出:ace。,#defineN20,voidmain()inti;charstrN;printf(“pleaseenterastring:”);scanf(“%s”,str);output(str);,voidoutput(charstr)inti;printf(“n”);for(i=0;sti!=0;i+)if(i%2=0)putchar(stri);,19、输入一串字符以结束,如果它是大写字母,则转换为小写字母输出,如果是小写字母,则转换为大写字母输出,如果不是字母,则照直输出。,while(ch=getchar()!=#)if(ch=A,20、编写程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值,并输出复制结果,在被调函数中完成复制。,#defineMAX80voidcopystr(char*str1,char*str2,intn)inti=0;while(str2m!=0)str1i+=str2m+;str1i=0;,voidmain()intm;charst1MAX,st2MAX;printf(“pleaseenterastring:”);scanf(“%s”,st2);printf(“pleaseenteranumber:”);scanf(“%d”,21、编写函数,求一个字符串的长度。(不能调用strlen函数),intstrlenth(char*st)inti=0;while(sti!=0)i+;returni;,22、编写程序,将两个字符串连接起来。(要求不用strcat函数),#defineMAX100char*stcat(char*str1,char*str2)charstrMAX;inti=0,j=0,k=0;while(str1i!=0)strk+=stri+);while(str2j!=0)strk+=strj+);strk=0;returnstr;,23、编写程序,输入一行字符,分别统计出其中英文字母、空格(含n、t)、数字和其它字符的个数。,voidmain()intc,i,nchar=0,ndigit=0,nwhite=0,nother=0;while(c=getchar()!=EOF)if(c=a,24、编写程序,统计从键盘输入的字符个数和行数。,voidmain()intc,nc=0,nl=0;while(c=getchar()!=EOF)if(c=n)+nl;+nc;printf(“lines:%d.nchars:%d.n”,nl,nc);,25、编写一个译码函数,把一个英语句子译成数字代码。译码规则是:以数字1代替字母a,数字2代替字母b,数字26代替字母z;以数字27代替字母A,数字28代替字母B,数字52代替字母Z;以空格符代替星号*。英文句子以.结束。,voidtran(char*st)inti;for(i=0;sti!=.;i+)if(sti=a,*26、用结构体存放下表中的数据,然后输出每人的姓名和实发工资数(基本工资+浮动工资支出)。,【分析及解答】显然,该结构体应有四个成员:姓名、基本工资、浮动工资和支出,实发数为后三个成员之和差运算。在输出时,要注意输出格式的控制,特别是对实发工资应定义其小数位数。本题也可定义指向结构体的指针,请同学们自已完成。程序如下:,#includestructworkercharname10;floatbase,flow,out;a3=zhao,240,400,75,qian,360,120,50,sun,560,0,80;,main()inti;for(i=0;i3;i+)printf(name:%s”,);printf(salary:%10.2f,ai.base+ai.flow-ai.out);,*27、编一个程序,输入10个员工的序号、姓名、基本工资、职务工资;求出其中“基本工资职务工资”最少的员工姓名并输出。,【分析及解答】本题要定义有四个成员的结构体数组,并在该结构体数组中求最小值。程序中,用变量flag存放最少工资员工的序号,其初值为0。同样可使用结构体指针来完成。程序如下:,#includestructworkerintno;charname10;floatbase,rank;a10;,main()inti,flag=0;for(i=0;i10;i+)scanf(%s,);scanf(%d,intn;if(fp=fopen(f1.t,w)=NULL)printf(Cannotopenfile!n);exit(1);for(n=0;n200;n+)fputc(getchar(),fp);fclose(fp);,程序如下:,32、从上一题中建立的名为f1.t的磁盘文件中读取120个字符,并显示在屏幕上。,【分析及解答】程序先打开文件f1.t,然后读一字符显示一个字符。程序主函数中定义了一个局部变量intn,用于计数,从文件中读取字符用库函数intfgetc(FILE*fp),显示字符用库函数intputchar(intch)。,#includestdio.hmain()FILE*fp;intn;if(fp=fopen(f1.t”,r)=NULL)printf(Cannotopenfile!n);exit(1);for(n=0;n120
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耳部肿瘤课堂
- 好奇产品培训体系构建
- 瞄准新质生产力
- 听了郝红英老师孩子心里发展敏感期与家庭教育的心得体会模版
- 奥康客户关系管理体系构建
- 办公室行政管理
- 技术岗位工作总结模版
- 大学生职业规划大赛《视觉传达设计专业》生涯发展展示
- 大学生职业规划大赛《人力资源管理专业》生涯发展展示
- 细胞治疗产品开发与应用
- 学习|新收入准则(财政部会计司培训)
- 2024年安徽省高考物理+化学+生物试卷(真题+答案)
- GB/T 23132-2024电动剃须刀
- DL∕T 2553-2022 电力接地系统土壤电阻率、接地阻抗和地表电位测量技术导则
- 污水泵站运行维护合同范本
- 2023-2024学年上海市嘉定区七年级(下)期末数学试卷(含答案)
- 网课智慧树知道《网络思想政治教育(湖南师范大学)》章节测试答案
- DL-T997-2020燃煤电厂石灰石-石膏湿法脱硫废水水质控制指标
- 耳穴压豆治疗失眠
- 陕西省八年级初中信息技术学业水平考试(操作题)
- 图神经网络在医学成像中的前沿应用
评论
0/150
提交评论