实验2 C语言控制语句应用编程
TASK 1
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 int main() { int grade, number; int i; srand(time(0)); for(i=0; i<N; ++i) { grade = rand()%4 + 2018; number = rand()%999 + 1; printf("%d8330%04d\n", grade, number); } return 0; }
问题一:利用rand()随机生成学号中的年级
问题二:利用rand()随机生成学号的四位尾数
问题三:抽人
TASK 2
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int luck,i,j=0; srand(time(0)); luck=rand()%30+1; printf("猜猜2022年4月哪一天会是你的lucky day\n"); printf("\n"); printf("开始喽,你有三次机会,猜吧(1~30):"); do { scanf("%d",&i); printf("\n"); if(i>luck) { printf("你猜的日期晚了,你的lucky day已经过啦\n"); printf("\n"); printf("再猜(1~30):"); j++; } else if(i<luck) { printf("你猜的日期早了,你的lucky day还没到呢\n"); printf("\n"); printf("再猜(1~30):"); j++; } else { printf("哇,猜中了:-)\n"); printf("\n"); break; } }while(j<2); if(i!=luck) { scanf("%d",&i); printf("\n"); if(i>luck) { printf("你猜的日期晚了,你的lucky day已经过啦\n"); printf("\n"); } else if(i<luck) { printf("你猜的日期早了,你的lucky day还没到呢\n"); printf("\n"); } else { printf("哇,猜中了:-)\n"); printf("\n"); } } if(i!=luck) { printf("次数用完啦。偷偷告诉你:4月你的lucky day是%d号",luck); printf("\n"); } return 0; }
TASK 3
#include<stdio.h> int main() { char i; while((i=getchar())!=EOF) { switch(i) { case 'r':printf("stop!\n");break; case 'g':printf("go go go\n");break; case 'y':printf("wait a minute\n");break; default:printf("something must be wrong...\n"); } i=getchar(); } return 0; }
TASK 4
#include<stdio.h> int main() { int n,a; double k,s,i,j; while(scanf("%d %d",&n,&a)!=EOF) { while(n>0&&a>0) { i=1;j=0;s=0; while(i<=n) { j=j*10+a; k=i/j; s=s+k; i++; } printf("n=%d,a=%d,s=%lf\n",n,a,s); s=0; break; } } return 0; }
TASK 5
#include<stdio.h> int main() { int col,lin=1,val; while(lin<=9) { col=1; printf("\n"); while(col<=lin) { val=col*lin; printf("%d×%d=%2d ",col,lin,val); col++; } lin++; } return 0; }
TASK 6_1
#include<stdio.h> int main() { int n,i=1; printf("input n:"); scanf("%d",&n); while(i<=n) { printf(" o \n"); printf("<H>\n"); printf("I I\n"); printf("\n"); i++; } return 0; }
TASK 6_2
#include<stdio.h> int main() { int n,i=1,j=1,k=1; printf("input n:"); scanf("%d",&n); while(i<=n) { printf(" o "); i++; } printf("\n"); while(j<=n) { printf("<H> "); j++; } printf("\n"); while(k<=n) { printf("I I "); k++; } printf("\n"); return 0; }
TASK 6_3
#include<stdio.h> int main() { int n,i=0,j,a,b,c,k=1,s; printf("input n:"); scanf("%d",&n); j=2*n-1;a=j;b=j;c=j; while(a>0) {printf(" o ");a--;} printf("\n"); while(b>0) {printf("<H> ");b--;} printf("\n"); while(c>0) {printf("I I ");c--;} printf("\n"); n--; while(n>0) { j=2*n-1;i=0; a=j;b=j;c=j; while(i>=0&&i<k) {printf(" ");i++;} while(a>0) {printf(" o ");a--;} printf("\n"); i=0; while(i>=0&&i<k) {printf(" ");i++;} while(b>0) {printf("<H> ");b--;} printf("\n"); i=0; while(i>=0&&i<k) {printf(" ");i++;} while(c>0) {printf("I I ");c--;} printf("\n"); i=0; i++;n--;k++; } return 0; }
实验总结
1.本次实验我巩固了if()、while()以及switch()的用法和注意点,对于迭代的思想有了更多的体悟,对于小人阵列也更通透了!
2.在红绿灯的实验中,我发现了怎么样处理数据后的回车的方法:在后再加入一次输入命令。
最大的感受是:小人真的好难QwQ(bushi)
码代码要对数据类型多上心
还有还有,自己解决难题的感觉真的超!级!好!
3.喜欢学c语言。