#include <stdio.h> void Ws5() { int aa; printf("输入题目序号1-6: 1.书上第3章课后题中的5道编程题。 2.利用双重循环打印三角形: "); scanf("%d",&aa); switch(aa) { case 1: printf("1.书上第3章课后题中的5道编程题。 #include<stdio.h> int main() { int a,b,c,n; printf("输入整数:"); scanf("%d %d %d",&a,&b,&c); if(a>b) { n=b; b=a; a=n; } if(a>c) { n=c; c=a; a=n; } if(b>c) { n=c; c=b; b=n; } printf("这三个数从小到大分别是:%d %d %d",a,b,c); return 0; } "); break; case 2: printf("2.#include<stdio.h> int main() { int a,b; printf("该条公路限速:"); scanf("%d",&a); printf("该机动车车速:"); scanf("%d",&b); if(b-a>0.1*a && b-a<=0.5*a) printf("予该机动车处200元罚款"); else if(b-a>0.5*a) printf("予机动车吊销驾驶证处罚"); else printf("不予该机动车处罚"); return 0; } "); break; case 3: printf("#include<stdio.h> int main() { int a,b,c; printf("行驶里程(公里):"); scanf("%d",&a); printf("等待时间(分钟):"); scanf("%d",&b); if(a>3 && a<=13) c=(a-3)*2+10; else if(a>13) c=30+(a-13)*3; else c=10; c=c+b/5*2; printf("应支付车费(元):%d",c); return 0; } "); break; case 4: printf("#include<stdio.h> int main() { int n; printf("共统计多少学生的成绩:"); scanf("%d",&n); int i,a; int b=0,c=0,d=0,e=0,f=0; for(i=1;i<=n;i++) { printf("输入百分制成绩:"); scanf("%d",&a); if(a>=90) { printf("该同学五分制成绩为:A "); b++; } else if(a<90 && a>=80) { printf("该同学五分制成绩为:B "); c++; } else if(a<80 && a>=70) { printf("该同学五分制成绩为:C "); d++; } else if(a<70 && a>=60) { printf("该同学五分制成绩为:D "); e++; } else { printf("该同学五分制成绩为:E "); f++; } } printf("%d个学生的成绩中中共有: %d个A级, %d个B级, %d个C级, %d个D级, %d个E级 ",n,b,c,d,e,f); return 0; } "); break; case 5: printf("#include<stdio.h>/n/t#include<math.h>int main() {/n/tdouble x1,y1,x2,y2,x3,y3,a,b,c,s,h,w,z,area; printf("请输入平面上任意三个点的坐标:"); scanf("(%lf,%lf) (%lf,%lf) (%lf,%lf)",&x1,&y1,&x2,&y2,&x3,&y3); if(x1>=x2) w=x1-x2; else w=x2-x1; if(y1>=y2) h=y1-y2; else h=y2-y1; a=sqrt(pow(w,2)+pow(h,2)); if(x1>=x3) w=x1-x3; else w=x3-x1; if(y1>=y3) h=y1-y3; else h=y3-y1; b=sqrt(pow(w,2)+pow(h,2)); if(x3>=x2) w=x3-x2; else w=x2-x3; if(y3>=y2) h=y3-y2; else h=y2-y3; c=sqrt(pow(w,2)+pow(h,2)); if(a+b>c && a+c>b && b+c>a) { z=a+b+c; printf("该三角形周长为:%.2f ",z); s=z/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("该三角形面积为:%.2f ",area); } else printf("Impossible"); return 0; } "); break; case 6: printf("#include<stdio.h> int main() { int i,j,k; for(j=1;j<=10;j++) { for(k=1;k<j;k++) printf(" "); for(i=1;i<=11-j;i++) printf("*"); printf(" "); } return 0; } "); break; default: printf("无作业 "); break; } } void Ws4() { int aa; printf("1.猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。 2.从键盘上输入2个正整数,输出这两个数的最大公约数和最小公倍数。 "); scanf("%d",&aa); switch(aa) { case 1: printf("#include<stdio.h> #include<stdlib.h> #include<time.h>int main() { srand(time(NULL)); while(true) { int min = 0; int max = 100; int a = 0 ; int count = 0;//次数 int target = rand()%max + 1;//产生随机数 while(true) { int guess = 0; printf("请输入%d-%d之间的数 ",min,max); scanf("%d",&guess); count++; if(guess < a) { printf("负数无效,Game Over "); exit(0); } if(guess < min||guess > max) { printf("你粗心了,请看清楚,输入的数为%d - %d ",min,max); continue; } else { if(target==guess) { printf("YOU WIN! ",count); printf("共猜了%d次。 ",count); break; } else if(target > guess) { min = guess; printf("数字大于%d ",guess); printf("Too small "); } else { max = guess; printf("数字小于%d ",guess); printf("Too big "); } } } printf("共猜了%d次。 ",count) ; if(count==1) printf ("Bingo!"); if(count<=3) printf("Lucky you!!"); if(count>3) printf("Good guess!!!"); } return 0; } "); case 2: printf("#include<stdio.h> int main() { int a,b,m,i,o=1; printf("请输入:"); scanf("%d %d",&a,&b); m=a; if(a<b) { a=b; b=m; } for(i=2;i<=b;i++) { if(a%i==0&&b%i==0) o=i; } printf("最大公约数:%d ",o); m=(a*b)/o; printf("最小公倍数:%d ",m); return 0; } "); default: printf("无作业 "); break; } } void Ws3() { int aa; printf("#include<stdio.h> int main()//十行三角形 { printf("* "); printf("** "); printf("*** "); printf("**** "); printf("***** "); printf("****** "); print("*******\n"); printf("******** "); printf("********* "); printf("********** "); return 0 ; } "); scanf("%d",&aa); switch(aa) { case 1: printf("#include<stdio.h> int main()//十行三角形 { printf("*\n"); printf("**\n"); printf("***\n"); printf("****\n"); printf("*****\n"); printf("******\n"); printf("*******\n"); printf("********\n"); printf("*********\n"); printf("**********\n"); return 0 ; } "); break; case 2: printf("..."); break; default: printf("无作业 "); break; } } void Ws2() { int aa; printf("请输入题目序号1-9: 1.C语言基本数据类型及其占用的内存空间大小分别是: 2.算数运算符有:+-*/% ++ -- 3.关系运算符有:> < == >= <= != <> 4.逻辑运算符的优先顺序是:! && || 5.赋值运算符有:= += -= *= /= %= 下面代码的输出结果是什么?请解释原因。 6. char c=132; printf(“%d”,c); 7. int a=-7; printf(“%d”,a>>1); 8. int a=7; int b=8; printf(“%d”,a&b); 9. int a=7; int b=8; printf(“%d”,a^b);"); scanf("%d",&aa); switch(aa) { case 1: printf("1.C语言基本数据类型及其占用的内存空间大小分别是:int:4字节,short[int]:2字节,long[int]:4字节,unsigned[int]:4字节,unsigned short[int]:2字节,unsigned long[int]:4字节,char:1字节,float:4字节,double:8字节。"); break; case 2: printf("2.算数运算符有:+,?,*,/,%,++,??。"); break; case 3: printf("3.关系运算符有:>,<,==,>=,<=,!=,<>。"); break; case 4: printf("4.逻辑运算符的有限顺序是:!,&&,||。"); break; case 5: printf("5.赋值运算符有:=,+=,-=,*=,/=,%=。"); break; case 6: printf("6.char c=132;printf("%d",c);解:char的范围为-127~128,132超出范围,132变为二进制是10000100,因为在计算机中0为正1为负所以该数为负数,而负数需要取反加一,所以该数为-01111011+1=-01111100,输出结果为-124。"); break; case 7: printf("7.int a=7;printf("%d",a?1); 解:7:00000000 00000000 00000000 00000111 -7:11111111 11111111 11111111 11111001(取反加一) a>>1:111111111 11111111 11111111 1111100(右移一位) -00000000 00000000 00000000 00000100(取反进一) 所以向右移1位为-4."); break; case 8: printf("8.int a=7;int a=8;printf("%d",a&b); 解:a=7:00000000 00000000 00000000 00000111 b=8:00000000 00000000 00000000 00001000 因为没有相同为1的项 所以输出值为0."); break; case 9: printf("9.int a=7;int b=8;printf("%d",a^b); 解:a=7:00000000 00000000 00000000 00000111 b=8:00000000 00000000 00000000 00001000 00000000 00000000 00000000 00001111 所以输出值为15. "); break; default: printf("无作业 "); break; } } void Ws1() { int aa; printf("请输入题目序号(1-3): 实验1-1:求最大值 要求由键盘输入两个整数a和b,程序输出其中较大的数。 实验1-2:求m到n之和 要求程序计算并输出m~n(m< n)之间所有整数的和,其中m和n由用户从键盘上输入。 实验1-3:求平均数 从键盘上依次读入5个整数,计算并输出他们的平均数。 "); scanf("%d",&aa); switch(aa) { case 1: printf("1-1:求最大值要求由键盘输入两个整数a和b,程序输出其中较大的数 #include<stdio.h> int main () { int a; int b; scanf("%d %d",&a,&b); if(a>b) printf("%d",a); else printf("%d",b); return 0; } "); case 2: printf("1-2 求m到n的和 #include<stdio.h> int main()//求m-n的和 { int m; int n; scanf("%d,%d",&m,&n); int i=m; int sum=0; for(i=m;i<=n;i++) sum=sum+i; printf("%d",sum); return 0; } "); case 3: printf("1-3 求平均数 #include<stdio.h> int main()//求平均数 { int sum=0; int a; int b; int c; int d; int e; scanf("%d %d %d %d %d",&a,&b,&c,&d,&e); sum=a+b+c+d+e; printf("%d",sum/5); return 0 ; } "); default: printf("无作业 "); break; } } int main() { int score,a; printf("请选择作业次数(1-5): "); scanf("%d",&score); switch(score) { case 5: Ws5(); break; case 4: Ws4(); break; case 3: Ws3(); break; case 2: Ws2(); break; case 1: Ws1(); break; default: printf("无作业 "); break; } return 0; }