魔力手环

来源:互联网 发布:英国可以用淘宝吗 编辑:程序博客网 时间:2024/06/10 06:23
小易拥有一个拥有魔力的手环上面有n个数字(构成一个环),当这个魔力手环每次使用魔力的时候就会发生一种奇特的变化:每个数字会变成自己跟后面一个数字的和(最后一个数字的后面一个数字是第一个),一旦某个位置的数字大于等于100就马上对100取模(比如某个位置变为103,就会自动变为3).现在给出这个魔力手环的构成,请你计算出使用k次魔力之后魔力手环的状态。

用简单的循环实现如下:

#define  _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h> #include <time.h> int main(){int i=0;int k=0;int n=0;int j=0;int m=0;int p=0;int q=0;int num=0;int size=0;int arr1[10]={1,2,3,4,5,6,7,8,9,10};int arr2[1000]={0};int arr3[100]={0}; size=sizeof(arr1)/sizeof(arr1[0]);srand((unsigned int)time(NULL));printf("打印原始数据:");  for(p=0;p<size;p++)  {    printf("%3d",arr1[p]);  } printf("\n");k=rand()%10;printf("k表示开始的位置:%d\n",k);    n=rand()%2;     printf("n表示开始的方向(0:正向,1:反向):%d\n",n); switch (n){case 0:{  while (k<size-1) {arr2[q]=arr1[k]; q++; ++k; }  if (k==size-1) {     int j=0; while (k--) {arr2[q]=arr1[j];     q++; j++;  } }  for(i=0;i<size;i++)  {  printf("%5d",arr2[i]);  }printf("\n输入一个数 num: ");scanf("%d",&num);for(j=0;j<num;j++ ){  i=0;while (i<size-1){arr2[i]+=arr2[i+1];if (arr2[i]>100){arr2[i]%=100;}i++;}if (i==size-1){arr2[i]+=arr2[0];if (arr2[i]>100){arr2[i]%=100;}}printf("第%d次魔力之后的结果:",j+1); for(q=0;q<size;q++){printf("%5d",arr2[q]);} printf("\n"); } } case 1:{int j=0;j=k;  while (k--) { arr3[i]=arr1[k]; i++;  } if (k==-1){   while (j<size) { arr3[i]=arr1[j]; i++; j++;  } }for(i=0;i<size;i++){printf("%5d",arr3[i]);}printf("\n输入一个数 num: ");scanf("%d",&num);for(j=0;j<num;j++ ){  i=0;while (i<size-1){arr3[i]+=arr3[i+1];if (arr3[i]>100){arr3[i]%=100;}++i;}if (i==size-1){arr3[i]+=arr3[0];if (arr3[i]>100){arr3[i]%=100;}}printf("第%d次魔力之后的结果:",j+1); for(m=0;m<size;m++){printf("%5d",arr3[m]);}printf("\n"); } } }   return 0;} 

2 3
原创粉丝点击