160809313 第六次作业
#include<stdio.h> void zy1() { int a; printf("请输入题目序号(1-3):\n实验1-1:求最大值\n要求由键盘输入两个整数a和b,程序输出其中较大的数。\n实验1-2:求m到n之和\n要求程序计算并输出m~n(m< n)之间所有整数的和,其中m和n由用户从键盘上输入。\n实验1-3:求平均数\n从键盘上依次读入5个整数,计算并输出他们的平均数。\n\n请选择小题"); scanf("%d",&a); switch(a) { case 1: printf("1-1:求最大值要求由键盘输入两个整数a和b,程序输出其中较大的数\n#include<stdio.h>\n\tint main ()\n\t{\n\tint a;\n\tint b;\n\tscanf(\"%d %d\",&a,&b);\n\tif(a>b)\n\tprintf(\"%d\",a);\n\telse\n\tprintf(\"%d\",b);\n\treturn 0;\n\t}\n\t"); case 2: printf("1-2 求m到n的和\n#include<stdio.h>\nint main()//求m-n的和\n{\nint m;\nint n;\nscanf(\"%d,%d\",&m,&n);\nint i=m;\nint sum=0;\nfor(i=m;i<=n;i++)\nsum=sum+i;\nprintf(\"%d\",sum);\nreturn 0;\n}\n"); case 3: printf("1-3 求平均数\n\t#include<stdio.h>\n\tint main()//求平均数\n\t{\n\tint sum=0;\n\tint a;\n\tint b;\n\tint c;\n\tint d;\n\tint e;\n\tscanf(\"%d %d %d %d %d\",&a,&b,&c,&d,&e);\n\tsum=a+b+c+d+e;\n\tprintf(\"%d\",sum/5);\n\treturn 0 ;\n\t}\n\t"); break; } } void zy2() { int a; printf("请输入题目序号1-9:\n\t1.C语言基本数据类型及其占用的内存空间大小分别是:\n\t2.算数运算符有:+-*/% ++ --\n\t3.关系运算符有:> < == >= <= != <>\n\t4.逻辑运算符的优先顺序是:! && ||\n\t5.赋值运算符有:= += -= *= /= %=\n\t下面代码的输出结果是什么?请解释原因。\n\t6.\n\tchar c=132;\n\t printf(“%d”,c);\n\t7.\n\tint a=-7;\n\t printf(“%d”,a>>1);\n\t8.\n\tint a=7;\n\tint b=8;\n\tprintf(“%d”,a&b);\n\t9.\n\tint a=7;\n\tint b=8;\n\tprintf(“%d”,a^b);\n\n请选择小题"); scanf("%d",&a); switch(a) { 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);\n解:7:00000000 00000000 00000000 00000111\n-7:11111111 11111111 11111111 11111001(取反加一)\na>>1:111111111 11111111 11111111 1111100(右移一位)\n-00000000 00000000 00000000 00000100(取反进一)\n所以向右移1位为-4."); break; case 8: printf("8.int a=7;int a=8;printf(\"%d\",a&b);\n解:a=7:00000000 00000000 00000000 00000111\nb=8:00000000 00000000 00000000 00001000\n因为没有相同为1的项\n所以输出值为0."); break; case 9: printf("9.int a=7;int b=8;printf(\"%d\",a^b);\n解:a=7:00000000 00000000 00000000 00000111\nb=8:00000000 00000000 00000000 00001000\n00000000 00000000 00000000 00001111\n所以输出值为15.\n"); break; } } void zy3() { int a; printf("#include<stdio.h>\n\tint main()//十行三角形\n\t{\n\t\tprintf(\"*\n\");\n\t\tprintf(\"**\n\");\n\t\tprintf(\"***\n\");\n\t\tprintf(\"****\n\");\n\t\tprintf(\"*****\n\");\n\t\tprintf(\"******\n\");\n\t\tprint(\"*******\\n\");\n\t\tprintf(\"********\n\");\n\t\tprintf(\"*********\n\");\n\t\tprintf(\"**********\n\");\n\t\treturn 0 ;\n\t}\n\t\n\n请选择小题"); scanf("%d",&a); switch(a) { case 1: printf("#include<stdio.h>\n\tint main()//十行三角形\n\t{\n\t\tprintf(\"*\\n\");\n\t\tprintf(\"**\\n\");\n\t\tprintf(\"***\\n\");\n\t\tprintf(\"****\\n\");\n\t\tprintf(\"*****\\n\");\n\t\tprintf(\"******\\n\");\n\t\tprintf(\"*******\\n\");\n\t\tprintf(\"********\\n\");\n\t\tprintf(\"*********\\n\");\n\t\tprintf(\"**********\\n\");\n\t\treturn 0 ;\n\t}\n\t"); break; case 2: printf("由于太多此处省略"); break; } } void zy4() { int a; printf("1.猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。\n\n2.从键盘上输入2个正整数,输出这两个数的最大公约数和最小公倍数。\n\t\n\n请选择小题"); scanf("%d",&a); switch(a) { case 1: printf("#include<stdio.h>\n\t#include<stdlib.h>\n\t#include<time.h>int main()\n\t{\n\tsrand(time(NULL));\n\twhile(true)\n\t{\n\tint min = 0;\nint max = 100;\n\tint a = 0 ;\n\tint count = 0;//次数\n\tint target = rand()%max + 1;//产生随机数\n\twhile(true)\n\t{\n\tint guess = 0;\n\tprintf(\"请输入%d-%d之间的数\n\",min,max);\n\tscanf(\"%d\",&guess); \n\tcount++;\n\t if(guess < a)\n\t {\n\tprintf(\"负数无效,Game Over\n\");\n\texit(0);\n\t}\n\tif(guess < min||guess > max)\n\t{\n\tprintf(\"你粗心了,请看清楚,输入的数为%d - %d\n\",min,max);\n\tcontinue;\n\t}\n\telse\n\t{\n\tif(target==guess)\n\t{\n\tprintf(\"YOU WIN!\n\",count);\n\t printf(\"共猜了%d次。\n\",count); \n\t break;\n\t}\n\telse if(target > guess)\n\t{\n\t min = guess;\n\tprintf(\"数字大于%d\n\",guess);\n\tprintf(\"Too small\n\");\n\t}\n\telse\n\t{\n\tmax = guess;\n\tprintf(\"数字小于%d\n\",guess);\n\tprintf(\"Too big\n\");\n\t}\n\t}\n\t}\n\tprintf(\"共猜了%d次。\n\",count)\n\t; if(count==1)\n\tprintf (\"Bingo!\");\n\tif(count<=3)\n\tprintf(\"Lucky you!!\");\n\tif(count>3)\n\tprintf(\"Good guess!!!\");\n\t}\n\treturn 0;\n\t}\n\t"); case 2: printf("#include<stdio.h>\n\tint main()\n\t{\n\tint a,b,m,i,o=1;\n\tprintf(\"请输入:\");\n\tscanf(\"%d %d\",&a,&b);\n\tm=a;\n\tif(a<b)\n\t{\n\ta=b;\n\tb=m;\n\t}\n\tfor(i=2;i<=b;i++)\n\t{\n\tif(a%i==0&&b%i==0)\n\to=i;\n\t}\n\tprintf(\"最大公约数:%d\n\",o);\n\tm=(a*b)/o;\n\tprintf(\"最小公倍数:%d\n\",m);\n\treturn 0;\n\t}\n\t"); break; } } void zy5() { int a; printf("输入题目序号1-6:\n\t1.书上第3章课后题中的5道编程题。\n\t2.利用双重循环打印三角形:\n\t\n\n请选择小题"); scanf("%d",&a); switch(a) { case 1: printf("1.书上第3章课后题中的5道编程题。\n#include<stdio.h>\n\tint main()\n\t{\n\tint a,b,c,n;\n\tprintf(\"输入整数:\");\n\tscanf(\"%d %d %d\",&a,&b,&c);\n\tif(a>b)\n\t{\n\tn=b;\n\tb=a;\n\ta=n;\n\t}\n\tif(a>c)\n\t{\n\tn=c;\n\tc=a;\n\ta=n;\n\t}\n\tif(b>c)\n\t{\n\tn=c;\n\tc=b;\n\tb=n;\n\t}\n\tprintf(\"这三个数从小到大分别是:%d %d %d\",a,b,c);\n\treturn 0;\n\t}\n\t "); break; case 2: printf("2.#include<stdio.h>\n\tint main()\n\t{\n\tint a,b;\n\tprintf(\"该条公路限速:\");\n\tscanf(\"%d\",&a);\n\tprintf(\"该机动车车速:\");\n\tscanf(\"%d\",&b);\n\tif(b-a>0.1*a && b-a<=0.5*a)\n\tprintf(\"予该机动车处200元罚款\");\n\telse if(b-a>0.5*a)\n\tprintf(\"予机动车吊销驾驶证处罚\");\n\telse\n\tprintf(\"不予该机动车处罚\"); \n\t return 0;\n\t}\n\t"); break; case 3: printf("#include<stdio.h>\n\tint main()\n\t{\n\tint a,b,c;\n\tprintf(\"行驶里程(公里):\");\n\tscanf(\"%d\",&a);\n\tprintf(\"等待时间(分钟):\");\n\tscanf(\"%d\",&b);\n\tif(a>3 && a<=13)\n\tc=(a-3)*2+10;\n\telse if(a>13)\n\tc=30+(a-13)*3;\n\telse\n\tc=10;\n\tc=c+b/5*2;\n\tprintf(\"应支付车费(元):%d\",c); \n\t return 0;\n\t}\n\t"); break; case 4: printf("#include<stdio.h>\n\tint main()\n\t{\n\tint n;\n\tprintf(\"共统计多少学生的成绩:\");\n\tscanf(\"%d\",&n);\n\tint i,a;\n\tint b=0,c=0,d=0,e=0,f=0;\n\tfor(i=1;i<=n;i++)\n\t{\n\tprintf(\"输入百分制成绩:\");\n\tscanf(\"%d\",&a);\n\tif(a>=90)\n\t{\n\tprintf(\"该同学五分制成绩为:A\n\");\n\tb++;\n\t}\n\telse if(a<90 && a>=80)\n\t{\n\tprintf(\"该同学五分制成绩为:B\n\");\n\tc++;\n\t}\n\telse if(a<80 && a>=70)\n\t{\n\tprintf(\"该同学五分制成绩为:C\n\");\n\td++;\n\t}\n\telse if(a<70 && a>=60)\n\t{\n\tprintf(\"该同学五分制成绩为:D\n\");\n\te++;\n\t}\n\telse\n\t{\n\tprintf(\"该同学五分制成绩为:E\n\");\n\tf++;\n\t}\n\t}\n\tprintf(\"%d个学生的成绩中中共有:\n%d个A级,\n%d个B级,\n%d个C级,\n%d个D级,\n%d个E级\n\",n,b,c,d,e,f); \n\t return 0;\n\t}\n\t"); break; case 5: printf("#include<stdio.h>/n/t#include<math.h>int main()\n\t{/n/tdouble x1,y1,x2,y2,x3,y3,a,b,c,s,h,w,z,area;\n\tprintf(\"请输入平面上任意三个点的坐标:\");\n\tscanf(\"(%lf,%lf) (%lf,%lf) (%lf,%lf)\",&x1,&y1,&x2,&y2,&x3,&y3);\n\tif(x1>=x2)\n\tw=x1-x2;\n\telse\n\tw=x2-x1;\n\tif(y1>=y2)\n\th=y1-y2;\n\telse\n\th=y2-y1;\n\ta=sqrt(pow(w,2)+pow(h,2));\n\tif(x1>=x3)\n\tw=x1-x3;\n\telse\n\tw=x3-x1;\n\tif(y1>=y3)\n\th=y1-y3;\n\telse\n\th=y3-y1;\n\tb=sqrt(pow(w,2)+pow(h,2));\n\tif(x3>=x2)\n\tw=x3-x2;\n\telse\n\tw=x2-x3;\n\tif(y3>=y2)\n\th=y3-y2;\n\telse\n\th=y2-y3;\n\tc=sqrt(pow(w,2)+pow(h,2));\n\tif(a+b>c && a+c>b && b+c>a)\n\t{\n\tz=a+b+c;\n\tprintf(\"该三角形周长为:%.2f\n\",z);\n\ts=z/2;\n\tarea=sqrt(s*(s-a)*(s-b)*(s-c));\n\tprintf(\"该三角形面积为:%.2f\n\",area);\n\t}\n\telse\n\tprintf(\"Impossible\");\n\treturn 0;\n\t}\n\t"); break; case 6: printf("#include<stdio.h>\n\tint main()\n\t{\n\tint i,j,k;\n\tfor(j=1;j<=10;j++)\n\t{\n\tfor(k=1;k<j;k++)\n\tprintf(\" \");\n\tfor(i=1;i<=11-j;i++) \n\t printf(\"*\");\n\tprintf(\"\n\"); \n\t } \n\treturn 0;\n\t}\n\t"); break; } } int main() { int choice; printf( "作业及答案查询系统\n"); printf( "1.第一次作业\n"); printf( "2.第二次作业\n"); printf( "3.第三次作业\n"); printf( "4.第四次作业\n"); printf( "5.第五次作业\n"); printf( "请选择:"); scanf("%d",&choice); switch(choice) { case 1: zy1(); break; case 2: zy2(); break; case 3: zy3(); break; case 4: zy4(); break; case 5: zy5(); break; } }