您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言老师所给习题解答
1(本内容由洪文杰同学提供,在此表示感谢!)C语言上机题汇总1.输入三角形两个边长及其夹角(角度值),求第三边边长和三角型面积。#includestdio.h#includemath.hfloatpi=3.141592;intmain(){floata,b,c,v,s;scanf(%f%f%f,&a,&b,&v);c=sqrt(a*a+b*b-2*a*b*cos(v/180*pi));s=a*b*sin(v/180*pi)/2;printf(c=%0.2f,s=%0.2f\n,c,s);return0;}扩展:编写已知三角形三边求面积的函数。#includestdio.h#includemath.hintmain(){floata,b,c,s,area;printf(依次输入a,b,c(空格识别一个数):);scanf(%f%f%f,,&a,&b,&c);if(a+bc&&a-bc){p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(三角形面积是:%f\n,s);}elseprintf(这不是三角形\n);}2输入一个字符,若是小写字母,则转换成大写字母输出;若是大写字母,则转换成小写字母输出。#includestdio.hmain(){charch;printf(input:);scanf(%c,&ch);if(ch='a'&&ch='z')printf(%c,ch-32);elseif(ch='A'&&ch='Z')printf(%c,ch+32);elseprintf(inputerror!);}3输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。#includestdio.hvoidmain(){charch,c;boolflag=1;while(flag){printf(请输入一个大写字母:\n);scanf(%c%c,&ch,&c);if(ch'A'&&ch'Z')printf(%c,%c\n,ch-1,ch+1);elseif(ch=='A')printf(%c\n没有前面的字母\n,ch+1);elseif(ch=='Z')printf(%c\n没有后面的字母\n,ch-1);elseif(ch=='q')flag=0;elseprintf(----输入的为非法字符!\n);printf(\n);}}4编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:能同时被3、5、7整除。能同时被3、5、7中的两个数整除,并输出这两个数。只能被3、5、7中的一个数整除,输出该数。不能被3、5、7中的任何一个数整除。范例1#includestdio.hintmain(){intm;2scanf(%d,&m);if((m/3=0)&&(m/5=0)&&(m/7=0))printf(能同时被3,5,7整除);elseif((m/3=0)&&(m/5=0)&&(m/7!=0))printf(能被3和5整除,);elseif((m/3=0)&&(m/7=0)&&(m/5!=0))printf(能被3和7整除,);elseif((m/7=0)&&(m/5=0)&&(m/3!=0))printf(能被7和5整除,);elseif((m/7=0)&&(m/5!=0)&&(m/3!=0))printf(能被7整除,);elseif((m/7!=0)&&(m/5=0)&&(m/3!=0))printf(能被5整除,);elseif((m/7!=0)&&(m/5!=0)&&(m/3=0))printf(能被3整除,);elseprintf(不能被3,5,7任一个整除);return0;}范例2#includestdio.hmain(){intx,y,z;scanf(d%,x);if(x%3==0&&x%5==0&&x%7==0)printf(能同时被3个数整除);elseif((x%3==0&&x%5==0&&x%7!=0)printf(3,5);elseif(x%7==0&&x%5==0&&x%3!=0)printf(5,7);elseif(x%7==0&&x%5==0&&x%5!=0))printf(3,7);elseif(x%3==0&&x%5!=0&&x%7!=0)printf(3);elseif(x%3!=0&&x%5==0&&x%7!=0)printf(5)elseif(x%3!=0&&x%5!=0&&x%7==0)printf(7);elseif(x%3!=0&&x%5!=0&&x%7!=0)printf(都不能被整除)}5已知正整数ABC且A+B+C100,求满足1A2+1B2=1C2共有多少组,并输出满足条件的组合。#includestdio.hmain(){inta,b,c,cout=0;for(c=1;c100;c++)for(b=c+1;b100;b++)if(1.0/(a*a)+1.0/(b*b)==1.0/(c*c)){printf(A=%dB=%dC=%d\n,&a,&b,&c);cout++;}printf(%d\n,cout);}6求1+12+14+17+111+116+122+的值,直到最后一项的值小于10-5。扩展1:求1-1/2+1/4-1/7.....的值,直到最后一项的值小于10-5。#definePRECISION0.00001intmain(){floatlastValue=0.0f,totalValue=0.0f;intsymbol=1,i=1,j=1;do{lastValue=((float)symbol)/i;i+=j;j++;symbol*=-1;totalValue+=lastValue;}while(lastValuePRECISION||-lastValuePRECISION);printf(sis:%f,totalValue);getch();}扩展2:输入一个数X,计算并输出下式S=X+X^2/2!+X^3/3!+X^4/4!........的值,直到最后一项的绝对值小于10的-5次方(保留两位小数)#includestdio.h#includemath.h//fabs()intmain(){doublex,s,a;inti;scanf(%lf,&x);3a=x;s=a;for(i=1;;i+=2){a*=x*x*(-1)/((i+1)*(i+2));if(fabs(a)1e-7)break;s+=a;}printf(%.8f\n,s);return0;}7用迭代法求某数a的平方根,已知求平方根的迭代公式为:xn=12(xn-1+axn-1)。取a2为迭代初值,迭代的结束条件取xn-xn-1£10-5。#includestdio.h#includemath.hmain(){floata,x0,x1;printf(\nInputa:);scanf(%f,&a);if(a0)printf(Error!\n);else{x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)1e-6);printf(sqrt(%f)=%f\n,a,x1);}}8分别输出100以内(不包括100)所有偶数的和与所有奇数的和。#includestdio.hmain(){intx=1,sj=0,so=0;while(x=100){if(x%2==1)sj+=x;if(x%2!=1)so+=x;x++;}printf(sj=%d\n,sj);printf(so=%d,so);}9利用嵌套循环输出以下图形(行与行之间无空行,列与列之间无空列):###########includestdio.hintmain(){inti,j,k;for(j=1;j=5-I;j++)printf(“”);for(k=I;k=1;k--)printf(“#”);printf(“\n”);}Return0;}10使用循环找到并输出100以内的所有素数。inti,j,n=100,m=1,temp=1;for(i=2;in;i++){temp=1;for(j=2;ji/2;j++){4if(i%j==0){temp=0;break;}}if(temp==1){printf(%d,i);if(m=5){printf(\n);m=1;}m++;}}11利用循环找出并输出所有的“水仙花数”。“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。如153=13+53+33,所以153是“水仙花数”。C语言的水仙花数代码main(){inti,j,k;for(i=1;i10;i++)for(j=0;j10;j++)for(k=0;k10;k++)if((i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k)))printf(%d%d%d,i,j,k);getch();}C语言的水仙花数代码main(){intge,shi,bai,number;for(number=100;number1000;number++){bai=number/100;shi=(number%100)/10;ge=number%10;if(number==bai*bai*bai+shi*shi*shi+ge*ge*ge)printf(\nnumber=%d\n,number);}getch();}范例三main(){inti,x,y,z;for(i=100;i=999;i++){x=i%10;/*个位*/y=(i/10)%10;/*十位*/z=(i/100)%10;/*百位*/if(x*x*x+y*y*y+z*z*z==i)printf(%d\n,i);}}12输出斐波那契数列的前40项。斐波那契数列是个整数数列,其定义为:fn=1n=1,n=2fn-1+fn-2n2ìíî范例一:#includestdio.hintfun(intn){if(n==1||n==2)return1;elsereturnfun(n-1)+fun(n-2);}voidmain(){inti;for(i=1;i=40;i++){printf(%d\n,fun(i));}}范例二:main(){longfib[40]={1,1};inti;for(i=2;i40;i++){5fib[i]=fib[i-1]+fib[i-2];}for(i=0;i40;i++){printf(F%d==%d\n,i,fib[i]);}return0;}13输出100以内所有的“同构数”。所谓“同构数”一个正整数,它出现在其平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。#includestdio.hmain(){inti;for(i=1;i=100;i++)if(i*i%10==i)printf(%d,i);}14指定一个正整数n,并输入n个整数,用冒泡法将它们由小到大顺序排列并输出。#includestdio.hintmain{IntI,j,n,temp,a[10];Scanf(“%d”,&n);Printf(“theoriginalnumbers:\n”);For(i=0;in;i++)Scanf(“%d”,&a[i]);For(i=0;in-1;i++)For(j=0;jn-1;j++)If(a[j-1]a[j]){Temp=a[j-1]a[j];a[j-1]=a[j];a[j]=temp}Printf(“\nthesortednumberis:\n”);For(i=0;jn;i++)Printf(“%d”,a[i]);Return0;}15利用循环打印下列九九乘法表:1*1=1
本文标题:C语言老师所给习题解答
链接地址:https://www.777doc.com/doc-3651496 .html