第六次作业
Posted <柚子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六次作业相关的知识,希望对你有一定的参考价值。
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int i,a,b,c,d,sum; i=1000; for(i=1000;i<10000;i++) { a=i%10; b=i%100/10; c=i/100%10; d=i/1000; sum=a*1000+b*100+c*10+d; if(i==4*sum&&a!=b&&b!=c&&c!=d&&d!=a) { printf("%d\\n",i); } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { int a,sum=0; printf("请输入一个多位数\\n"); scanf("%d",&a); while(a<=0) { printf("输入错误。\\n"); scanf("%d",a); } while(a>0) { sum=sum+a%10; a=a/10; } printf("%d\\n",sum); switch(sum) { case 1:printf("January\\n");break; case 2:printf("February\\n");break; case 3:printf("March\\n");break; case 4:printf("April\\n");break; case 5:printf("May\\n");break; case 6:printf("June\\n");break; case 7:printf("July\\n");break; case 8:printf("August\\n");break; case 9:printf("September\\n");break; case 10:printf("October\\n");break; case 11:printf("November\\n");break; case 12:printf("December\\n");break; default:printf("***\\n");break; } return 0; }
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
#include<stdio.h> int main() { int i=0,x,b,c,d,e; printf("输入一个不超过6的正整数A。\\n"); scanf("%d",&x); if(x<=0||x>=6) { printf("输入错误,请重新输入。\\n"); } else { for(b=x;b<x+4;b++) { for(c=x;c<x+4;c++) { for(d=x;d<x+4;d++) { if((b!=c&&b!=d)&&d!=c) { e=b*100+c*10+d; i++; if(i%6!=0) { printf("%d ",e); } else { printf("%d\\n",e); } } } } } } return 0; }
4看商品猜价格
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a,b,i; char x; srand(time(NULL)); a=rand()%100+1; do { printf("请输入价格\\n"); scanf("%d",&b); for(i=1;i<10;i++) {if(b>100||b<0) { printf("错误,请重新输入\\n"); scanf("%d",&b); } else {if(a==b) { printf("价格相等,商品是你的,价格就是%d元,你用了%d次。\\n",a,i); break; } else if(a>b) { printf("错误,你猜的太小了\\n"); scanf("%d",&b); } else { printf("价格错误了,你猜的太大了\\n"); scanf("%d",&b); } } } if(i==10&&a!=b) { printf("10次机会用完了,价格是%d元。\\n",a); } printf("继续吗?Y or N\\n"); scanf(" %c",&x); } while(x==\'Y\'||x==\'y\'); printf("一共猜了%d次!\\n",i); return 0; }
附加题
有16根火柴,可以拼出多少个形如“A+B=C”的等式,A、B、C是用火柴棍拼出的整数,且为一位数,输出该等式形式。
注意: 1. 加号与等号各自需要两根火柴棍 2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. 16根火柴棍必须全部用上
用火柴棍拼数字0-9的拼法如图所示:
#include<stdio.h> int main() { int a,b,c,A,B,C; for(a=0;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) { switch(a) { case 0:A=6;break; case 1:A=2;break; case 2:A=5;break; case 3:A=5;break; case 4:A=4;break; case 5:A=5;break; case 6:A=6;break; case 7:A=3;break; case 8:A=7;break; case 9:A=6;break; } switch(b) { case 0:B=6;break; case 1:B=2;break; case 2:B=5;break; case 3:B=5;break; case 4:B=4;break; case 5:B=5;break; case 6:B=6;break; case 7:B=3;break; case 8:B=7;break; case 9:B=6;break; } switch(c) { case 0:C=6;break; case 1:C=2;break; case 2:C=5;break; case 3:C=5;break; case 4:C=4;break; case 5:C=5;break; case 6:C=6;break; case 7:C=3;break; case 8:C=7;break; case 9:C=6;break; } if(c==a+b&&A+B+C==12&&a!=b) { printf("%d+%d=%d\\n",a,b,c); } } return 0; }
二、知识点总结(主要用到的语句)
1.switch case语句
switch(表达式)
{
case常量表达式1
语句 1
。。。。
case常量表达式n
语句 n
default
语句n+1
}
case后的各常量表达式值不能相同
switch后面表达式类型一般为整型或字符型 整型:int short long unsigned 字符型 char
2for语句
for(表达式1;表达式2;表达式3)
(1)计算表达式1的值
(2)判断表达式2的值 如果它是真,执行循环体中的代码
(3)执行完一次代码后求解3
(4)重复(2)(3)直到2的表达式为假
三、实验总结(实验中遇到的问题及解决方法)
思路不清晰 捋一下思路
1.第三题中的三个for 可以求出4个数字中选出的不同的三个数并让他们组合起来
2附加题中 ABC是火柴棍数 用switch case语句求出ABC出现的值 然后abc是数字 必须满足a+b=c
c==a+b&&A+B+C==12&&a!=b) 由此可以可出
3猜价格用的是do while语句 镶嵌的if 语句 分三种情况 1是猜大了 2是猜小了 3是一样 然后判断次数
以上是关于第六次作业的主要内容,如果未能解决你的问题,请参考以下文章