您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计-第三次作业的部分答案及分析
三、写出下列每个程序运行后的输出结果1.#includestdio.hvoidSB(charch){switch(ch){case'A':case'a'://相当于if(ch==’A’||ch==’a’)printf(WW);break;case'B':case'b':printf(GG);break;case'C':case'c':printf(PP);break;default:printf(BB);break;}}voidmain(){chara1='b',a2='C',a3='f';SB(a1);SB(a2);SB(a3);SB('A');//4次调用SB,实际参数分别为b、C、f和Aprintf(\n);}GGPPBBWW2.#includestdio.h#includestdlib.hdoubleSD(inta,intb,charop){doublex;switch(op){case'+':x=a+b;break;case'-':x=a-b;break;case'*':x=a*b;break;case'/':if(b)x=(double)a/b;elseexit(1);break;default:{printf(运算符错!\n);exit(1);}}returnx;}voidmain(){intx=20,y=8;printf(%3.2lf,SD(x,y,'-'));//以浮点形式输出x和y的差printf(%3.2lf,SD(x,y,'*'));//以浮点形式输出x和y的积printf(%3.2lf\n,SD(x+y,y,'/'));//以浮点形式输出x+y和y的商}//小数点后保留2位。12.00160.003.503.#includestdio.hvoidWF(intx,inty){x=x+y;y=x+y;printf(subs:x,y=%d,%d\n,x,y);}voidmain(){intx=18,y=23;printf(main:x,y=%d,%d\n,x,y);WF(x,y);//注意:调用WF后,x,y不会改变原有的值x=2*x;printf(main:x,y=%d,%d\n,x,y);}main:x,y=18,23subs:x,y=41,64main:x,y=36,234.#includestdio.h#includestring.hvoidfun(charss[]);voidmain(){chars[15]=567891234;fun(s);printf(%s\n,s);}voidfun(charss[]){inti,n=strlen(ss);//n记录了字符串的长度9for(i=0;in/2;i++){charc=ss[i];ss[i]=ss[n-1-i];//串中字符两两交换。第一个与最后一个交换,ss[n-1-i]=c;//第二个与倒数第二个交换,…}}4321987655.#includestdio.hvoidInsertSort(inta[],intn)//该函数的功能是对a中元素进行插入排序{inti,j,x;for(i=1;in;i++){//进行n-1次循环x=a[i];for(j=i-1;j=0;j--)//为x顺序向前寻找合适的插入位置if(xa[j])a[j+1]=a[j];elsebreak;a[j+1]=x;}}voidmain(){inti;inta[6]={20,15,32,47,36,28};InsertSort(a,6);for(i=0;i6;i++)printf(%d,a[i]);printf(\n);}473632282015a的变化6.#includestdio.hvoidmain(){inta[8]={3,5,7,9,11,13,15,17};inti,*p=a;for(i=0;i8;i++){201532473628201532473628322015473628473220153628473632201528473632282015printf(%5d,*p++);if((i+1)%4==0)printf(\n);}}357911131517//将数组a中的元素逐一输出,每行输出4个元素。7.#includestdio.hintLA(int*a,intn){inti,s=0;for(i=0;in;i++)s+=a[i];returns;}voidmain(){inta[]={5,10,15,20,25,30};intb=LA(a,4);//将a数组中前4个元素求和intc=LA(a+2,3);//将a数组中第3个元素起的3个元素求和printf(%d%d\n,b,c);}50608.#includestdio.hintLB(int*a,intn){inti,s=1;for(i=0;in;i++)s*=*a++;//将a指向的一组数(n个)连乘returns;}voidmain(){inta[]={1,2,3,4,2,4,5,2};intb=LB(a,4)+LB(&a[3],4);//LB(a,4)=24LB(&a[3],4)=160(4*2*4*5)printf(b=%d\n,b);}b=184四、写出下列每个函数的功能1.intWB(inta[],intn,intx){for(inti=0;in;i++)if(a[i]==x)return1;return0e;}从数组a中顺序查找值为x的元素,若查找成功则返回1,否则返回0。2.intWC(inta[],intn,intk){intc=0;for(inti=0;in;i++)if(a[i]=k)c++;returnc;}统计出数组a中大于等于值为k的元素个数并返回。3.#includestdio.h#includestdlib.h#includetime.hconstintN=10;intff(intx,inty){intz;printf(%d+%d=,x,y);scanf(%d,&z);if(x+y==z)return1;elsereturn0;}voidmain(){inti,a,b,c=0;srand(time(0));//初始化随机数序列for(i=0;iN;i++){a=rand()%20+1;//rand()函数产生0-32767之间的一个随机数b=rand()%20+1;c+=ff(a,b);}printf(得分:%d\n,c*10);}让计算机产生出10道操作数为20以内随机整数的加法题供用户计算,每道题10分,计算完成后打印出得分。4.intfun6(intm,intn,intb=2){if(mb&&nb)returnm*n;elseif(m%b==0&&n%b==0)returnb*fun6(m/b,n/b,b);elsereturnfun6(m,n,++b);}一个递归函数过程,求出两个自然数m和n的最小公倍数。5.#includestdio.h#includestdlib.hvoidLI(intn){int*a=malloc(n*sizeof(int));inti;for(i=0;in;i++)scanf(%d,a+i);for(i=n-1;i=0;i--)printf(%d,*(a+i));printf(\n);free(a);}把从键盘上输入的n个整数按与输入的相反次序显示出来。6.intLK(doublea[],intn){doubles=0;inti,m=0;for(i=0;in;i++)s+=a[i];s/=n;for(i=0;in;i++)if(a[i]=s)m++;returnm;}求出并返回数组a的n个元素中大于等于平均值的元素个数。
本文标题:C语言程序设计-第三次作业的部分答案及分析
链接地址:https://www.777doc.com/doc-2908168 .html