1
(本内容由洪文杰同学提供,在此表示感谢!) C语言上机题汇总
1.输入三角形两个边长及其夹角(角度值),求第三边边长和三角型面积。
#include
float a,b,c,v,s;
scanf(\ c=sqrt(a*a+b*b-2*a*b*cos(v/180*pi));
s=a*b*sin(v/180*pi)/2; printf(\ return 0; }
2输入一个字符,若是小写字母,则转换成大写字母输出;若是大写字母,则转换成小写字母输出。
#include
}
if(ch>='a'&&ch<='z') printf(\else if(ch>='A'&&ch<='Z') printf(\else printf(\
扩展:编写已知三角形三边求面积的函数。 #include
float a,b,c,s,area;
printf(\依次输入a,b,c(空格识别一个数):\ scanf(\ if(a+b>c&&a-b {p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c)); printf(\三角形面积是:%f\\n\} else printf(\这不是三角形\\n\} 3输入一个大写字母,输出字母表中它前面的字母和后面的字母。如果输入的字母为A或Z,则分别输出提示信息“没有前面的字母”或“没有后面的字母”。 #include printf(\请输入一个大写字母:\\n\ scanf(\ if(ch > 'A' && ch < 'Z') printf(\ch-1, ch+1); 4编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息: 能同时被3、5、7整除。 能同时被3、5、7中的两个数整除,并输出这两个数。 只能被3、5、7中的一个数整除,输出该数。 不能被3、5、7中的任何一个数整除。 范例1 #include { int m; } else if(ch == 'A') printf(\没有前面的字母\\n\ else if(ch == 'Z') printf(\没有后面的字母\\n\ else if(ch == 'q') flag= 0; else printf(\输入的为非法字符!\\n\ printf(\ } 2 scanf(\ if ((m/3=0)&&(m/5=0)&&(m/7=0)) printf(\能同时被3,5,7整除\ else if( (m/3=0)&&(m/5=0)&&(m/7!=0)) printf(\能被3和5整除,\ else if ((m/3=0)&&(m/7=0)&&(m/5!=0)) printf(\能被3和7整除,\ else if ((m/7=0)&&(m/5=0)&&(m/3!=0)) printf(\能被7和5整除,\ else if ((m/7=0)&&(m/5!=0)&&(m/3!=0)) 范例2 #include \main() { int x,y,z; scanf(\; if (x%3==0 &&x%5==0&&x%7==0)printf(\能同时被3个数整除\; else if( (x%3==0&&x%5==0&&x%7!=0)printf(\ else if(x%7==0&&x%5==0&&x%3!=0) printf(\else if(x%7==0&&x%5==0&&x%5!=0))printf(\else if(x%3==0&&x%5!=0&&x%7!=0)printf(\else if(x%3!=0&&x%5==0&&x%7!=0)printf(\else if(x%3!=0&&x%5!=0&&x%7==0)printf(\ else if (x%3!=0&&x%5!=0&&x%7!=0)printf(\都不能被整除\} printf(\能被7整除,\ else if ((m/7!=0)&&(m/5=0)&&(m/3!=0)) printf(\能被5整除,\ else if ((m/7!=0)&&(m/5!=0)&&(m/3=0)) printf(\能被3整除,\ else printf(\不能被3,5,7任一个整除\ return 0; } 5已知正整数A>B>C且A+B+C<100,求满足 #include \main() {int a,b,c,cout=0; for(c=1;c<100;c++) for(b=c+1;b<100;b++) if(1.0/(a*a)+1.0/(b*b)==1.0/(c*c) ) 111共有多少组,并输出满足条件的组合。 +=222ABC{ printf(\ &a,&b,&c ); cout++; } printf(\} 6求1+111111++++++247111622的值,直到最后一项的值小于10。 -5-5扩展1:求1-1/2+1/4-1/7..... 的值,直到最后一项的值小于10。 #define PRECISION 0.00001 int main() { float lastValue = 0.0f, totalValue=0.0f; int symbol=1, i = 1,j = 1; do{ lastValue = ((float)symbol) / i; i+=j; j++; 扩展2:输入一个数X,计算并输出下式S=X+X^2/2!+X^3/3!+X^4/4!........的值,直到最后一项的绝对值小于10的-5次方(保留两位小数) #include { double x,s,a; int i; scanf(\symbol *= -1; totalValue += lastValue; } while(lastValue > PRECISION || -lastValue > PRECISION); printf(\getch(); } 3 a=x; s=a; for(i=1;;i+=2) { a*=x*x*(-1)/((i+1)*(i+2)); if(fabs(a)<1e-7) break; 7用迭代法求某数a的平方根,已知求平方根的迭代公式为:xn} s+=a; } printf(\ return 0; 1aa=(xn-1+)。取为迭代初值,2xn-12迭代的结束条件取 xn-xn-1£10-5。 x1=(x0+a/x0)/2; do {x0=x1; x1=(x0+a/x0)/2; } while(fabs(x0-x1)>1e-6); printf(\,a,x1); } } if(x%2!=1) so+=x; x++; } printf(\ printf(\} #include\#include\main() {float a,x0,x1; printf(\ if(a<0) printf(\ else {x0=a/2; #include int x=1,sj=0,so=0; while(x<=100) { if(x%2==1) sj+=x; 8分别输出100以内(不包括100)所有偶数的和与所有奇数的和。 9利用嵌套循环输出以下图形(行与行之间无空行,列与列之间无空列): # ## ### #### #include for(j=1;j<=5-I;j++) printf(“”); 10使用循环找到并输出100以内的所有素数。 int i, j, n=100, m=1, temp=1; for(i=2;i temp = 1; for(j=2;j=1;k--) printf(“#”); printf(“\\n”); } Return 0; } 4 if(i%j==0){ temp = 0; break; } } if(temp==1){ printf(\ } if(m>=5){ printf(\ m = 1; } m++; } 11利用循环找出并输出所有的“水仙花数”。“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。如153=13。 +53+33,所以153是“水仙花数” C语言的\水仙花数\代码 main(){ int i,j,k; for(i=1;i<10;i++) for(j=0;j<10;j++) for(k=0;k<10;k++) C语言的\水仙花数\代码 main(){ int ge,shi,bai,number; for(number=100;number<1000;number++){ bai=number/100; shi=(number0)/10; ge=number; 范例三main(){ int i,x,y,z; for(i=100;i<=999;i++){ x=i;/*个位*/ y=(i/10);/*十位*/ 12输出斐波那契数列的前40项。斐波那契数列是个整数数列,其定义为: z=(i/100);/*百位*/ if (x*x*x + y*y*y + z*z*z == i) printf(\} } e) printf(\ getch(); if(number==bai*bai*bai+shi*shi*shi+ge*ge*gif( (i*100+j*10+k)==((i*i*i)+(j*j*j)+(k*k*k))) printf(\getch(); } ì1fn=í?fn-1+fn-2范例一: #include if(n == 1 || n == 2) return 1; else return fun(n-1) + fun(n-2); } void main() 范例二: main() { long fib[40] = {1,1}; } n=1,n=2n>2{ int i; for(i = 1; i <= 40; i++){ printf(\ } int i; for(i=2;i<40;i++) { 5 fib[i] = fib[i-1]+fib[i-2]; } for(i=0;i<40;i++) { } printf(\ } return 0; 13输出100以内所有的“同构数”。所谓“同构数”一个正整数,它出现在其平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。 #include Int I,j,n,temp,a[10]; Scanf(“%d”,&n); Printf(“ the original numbers:\\n”); For(i=0;i 15利用循环打印下列九九乘法表: 1*1= 1 2*1= 2 2*2= 4 3*1= 3 3*2= 6 3*3= 9 4*1= 4 4*2= 8 4*3=12 4*4=16 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 #include int i; int j; for(i=1;i<=9;i++) { 16利用循环打印以下杨辉三角(要求打印7行): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 printf(\ } return 0; } for(j=1;j<=i;j++) } } If(a[j-1]>a[j]) { Temp=a[j-1]>a[j];a[j-1]=a[j];a[j]=temp } Printf(“\\n the sorted number is :\\n” ); For(i=0;j Printf(“%d”,a[i]); Return 0; for(i=1;i<=100;i++) if(i*i==i) printf(\ 14指定一个正整数n,并输入n个整数,用冒泡法将它们由小到大顺序排列并输出。