第六次作业
一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h>
int main()
{
int a,b,c,d,e,i;
for(i=1000;i<10000;i++)
{
a=i%10;
b=i/10%10;
c=i/100%10;
d=i/1000;
if(a==b||a==c||a==d||b==c||b==d||c==d)
{
continue;
}
else
{
e=a*1000+b*100+c*10+d;
if(i==e*4)
printf("%d",i);
}
}
return 0;
}
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { int a,b,sum=0; printf("输入一个多位数字"); scanf("%d",&a); while(a>0) { b=a%10; a=a/10; sum=sum+b; } printf("%d ",sum); switch(sum) { case 12:printf("December\n");break; case 11:printf("November\n");break; case 10:printf("October\n");break; case 9:printf("Septmber\n");break; case 8:printf("August\n");break; case 7:printf("July\n");break; case 6:printf("June\n");break; case 5:printf("May\n");break; case 4:printf("April\n");break; case 3:printf("March\n");break; case 2:printf("February\n");break; case 1:printf("January\n");break; default:printf("***\n"); } return 0; }
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:2
输出样例:234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
#include<stdio.h> int main() { int a,b,c,d,e,f; printf("请输入一个不大于6的数字\n"); scanf("%d",&a); for(f=0,b=100;b<1000;b++) { c=b/100; d=b/10%10; e=b%10; if(c>=a&&c<=a+3&&d>=a&&d<=a+3&&e>=a&&e<=a+3&&c!=d&&d!=e&&c!=e) { printf("%d ",b); f=f+1; if(f%6==0) printf("\n"); } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
#include<stdio.h> #include<stdlib.h> int main() { int year,year2,month,day,sum1=0,sum2=0,sum=0,i,a; printf("输入年份-月份\n"); scanf("%d-%d",&year,&month); year2=year; for(year=year-1;year>=1900;year--) { if(year%4==0&&year%100!=0||year%400==0) sum1=sum1+366; else sum1=sum1+365; } for(i=1;i<month;i++) { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) sum2=sum2+31; else if(i==4||i==6||i==9||i==11) sum2=sum2+30; else { if(year2%4==0&&year2%100!=0||year2%400==0) sum2=sum2+29; else sum2=sum2+28; } } sum=sum1+sum2; system("cls"); printf("星期一 星期二 星期三 星期四 星期五 星期六 星期日\n"); a=sum%7; for(i=1;i<=a;i++) { printf("\t"); } if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) day=31; else if(month==4||month==6||month==9||month==11) day=30; else { if(year2%4==0&&year2%100!=0||year2%400==0) day=29; else day=28; } for(i=1;i<=day;i++) { printf(" %2d ",i); if((a+i)%7==0) printf("\n"); } return 0; }
知识点总结:
1.for循环通常用于计数控制:用专门的循环变量来计算循环次数,循环变量的值在每次执行完循环体各语句后递增,达到预定的循环次数时则终止循环,继续执行循环结构后的语句。
2.增量运算符单独使用时,前缀形式和后缀形式的结果是一样的。增量运算符作为表达式的一部分时,前缀形式和后缀形式的执行过程是不一样的。
3.for语句中的表达式可以部分省略或者全部省略,但;不能省略。
实验总结:
1.循环体中应有使循环趋向于结束的语句。
2.无限循环中,通过在循环体中加break语句对循环进行控制。
3.循环的嵌套:1)三种循环可互相嵌套,层数不限。2)外层循环可包含两个以上内循环,但不能相互交叉。3)嵌套循环的执行流程:外层循环执行一次,内层循环要完成所有循环。
4.循环结构常见错误:1)循环语句中循环体复合语句时忘记加括号。2)循环开始前,未将计数器变量和变量和乘积变量初始化。