artais 2023-03-28 14:19 采纳率: 61.1%
浏览 141
已结题

c语言与Python的代码转换

请将这段C语言代码按照相同的算法转换为Python代码,能够得到,并给出注释


 #include<time.h> 
#include<stdlib.h> 
#include<stdio.h>
   
   int Py(const void *a,const void *b)
   {
       return *(int *)a-*(int *)b;
   }
  
 void SJS(int p[])//主办方产生随机数
 {
     int i,j,k,c=0; 
     srand((int)time(0));
      k=1+(int)(22.0*rand()/(RAND_MAX+1.0)); 
     for(i=0;i<=5;) 
      {
        k=1+(int)(22.0*rand()/(RAND_MAX+1.0)); 
          for(j=0;j<i;j++)
          {
             if(k==p[j])
                  break;
          }
         if(j>=i)
          {
             p[i]=k;
              i++;
          }
     }     
  }
  
 void Select(int f[])//抽奖 5个数
  {
      printf("请从1~22之间任意选取5个不同的整数作为投注号码:\n");
      int i=0,j,k=0;
      for(i=0;i<5;i++)
         scanf("%d",&f[i]);
     qsort(f,5,sizeof(f[0]),Py);
     while(!k)
      {
          for(i=0;i<5;i++)
             if(f[i]<1||f[i]>22)
             { 
                k=0; 
                 break;
             }
             if(i>=5)  k=1;
             if(k)
             {
                for(j=1;j<5;j++)
                     if(f[j]==f[j-1])
                     {
                         k=0;
                         break;
                     }
                     if(j==5) k=1;
             }
             
           if(k==0)
             {
                  printf("输入错误!请从1~22之间任意选取5个不同的整数作为投注号码:\n");
                  for(i=0;i<5;i++)
                      scanf("%d",&f[i]);
                 qsort(f,5,sizeof(f[0]),Py);
             }
     }
  }
  
 int check(int p[],int f[])
 {
     int i,j,count=0,k=0;//k标记是否抽到与 p[5] 相等的数
     
     for(i=0;i<5;i++)//对比
     {
          for(j=0;j<5;j++)
              if(f[i]==p[j])
              {count++;break;}
      }
    for(i=0;i<5;i++)
         if(f[i]==p[5])
          {k=1;break;}
          
         if(count==5)//头等奖
             return 1;
         else if(count==4 && k)//二等奖
              return 2;
          else if(count==4 && !k)//三等奖
              return 3;
         else if(count==3)//四等奖
              return 4;
         else if(count==2)//五等奖
             return 5;
          else
             return 0;
 }
  void win(int k)
  {
      if(k==1)
         printf("恭喜你!!!中了头等大奖!\n");
     else if(k==2)         
     printf("恭喜你!!!中了二等大奖!\n");
    else if(k==3)
         printf("恭喜你!!!中了三等大奖!\n");
     else if(k==4)
         printf("恭喜你!!!中了四等大奖!\n");
     else if(k==5)
         printf("恭喜你!!!中了五等大奖!\n");
     else
        printf("本次未中奖,谢谢参与!祝你下次好运!\n");
 }
 void print()
 {
     printf("------------操作------------\n");
    printf("|抽奖,            请选择1 |\n");
    printf("|大奖设置,        请选择2 |\n");
     printf("|退出本期抽奖,    请选择0 |\n");
    printf("----------------------------\n");
     
 }
 
 int main() 
 { 
     int f[5],i,k,h,Case=1,y;
     int P[6];
          printf("                          ********************************\n");
    printf("                          *         大奖等你拿!!!        *\n");
     printf("                          ********************************\n");
     printf("\n\n");
     while(1)
     {
         printf("*************************************第%d期抽奖**********************************\n",Case);
         printf("选择1    开始\n");
         printf("选择0    退出\n");
         printf("选择:");
         scanf("%d",&y);

         if(y==0) break;
         else if(y==1)
         {
             SJS(P);//主办方的随机数
             Case++;
             while(1)
             {
                 print();
                 printf("请选择:");
               scanf("%d",&h);
                 if(h==0)
                 {
                     printf("本期抽奖结束!!!\n");
                     printf("大奖号为:");
                     for(i=0;i<5;i++)
                         printf("%d  ",P[i]);
                    printf("特别号为:");
                     printf("%d\n",P[5]);
                   break;
                 }
                 else if(h==1)
                 {
                     
                     Select(f);//抽奖
                    k=check(P,f);
                    win(k);
               }
                 else if(h==2)
                 {
                     printf("---------兑--------奖----------方-----------式----------\n");
                     printf("|头等奖:5个号码与5个暗码完全相同                        |\n");
                    printf("|二等奖:4个号码与4个暗码完全相同,另一个号码与特别号相同|\n");
                     printf("|三等奖:4个号码与4个暗码完全相同,另一个号码与特别号不同|\n");
                     printf("|四等奖:3个号码与3个暗码完全相同                        |\n");
                     printf("|五等奖:2个号码与2个暗码完全相同                        |\n");
                     printf("|大奖号码将在本期结束公布                               |\n");
                     printf("---------------------------------------------------------\n");
                }
             }
         }
     }
     printf("结束,谢谢参与!!!\n");
     return 0;    
} 

img

img

  • 写回答

5条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 4月5日
      • 创建了问题 3月28日

      悬赏问题

      • ¥15 苹果手机删除了qq软件,qq文件怎么恢复
      • ¥20 用mips 人力编程排序问题(能在mars按要求运行)
      • ¥15 Verilog小型神经网络(单层反馈神经网络)
      • ¥15 设计一个数字钟,实现时分秒的显示
      • ¥15 Clion使用头文件链接两个cpp
      • ¥15 51单片机无法触发外部中断问题
      • ¥15 基于半监督,无监督的调制识别
      • ¥15 cst求 阵列 rcs 时候 频域 时域求解器 应该怎样设置 才让两者 计算结果 相似 请附图
      • ¥15 关于#51单片机#的问题:大家帮我看一下为什么我的计时器数字一直不稳定
      • ¥15 Qt 在应用程序里总是有[PREVIEW] recv window msg, name:(Qt5QWindowIcon) hwd:(287097a)等信息不断输出,怎么解决