实训的第二天

学习日志                                                                           姓名:郭旭亮        日期:2018-7-10

今日学习任务

一维数组

二维数组

C语言中的函数

今日任务完成情况

今天主要复习了数组,函数以及变量的内容:

在数组中,未初始化的全局变量都为0

未初始化的局部变量都为随机值

一维数组与二维数组的初始化

利用循环体和数组实现冒泡排序法,并且可以利用函数来实现对主函数的简化

a[1]==*(a+1)

C语言中的函数:会涉及到各种参数的使用  其中包括形参和实参

形参个数和实参个数保持一致

1.通过函数名找到函数入口地址,,函数名就是地址

2.给形参分配空间3.传值(实参传给实参)

4.执行函数体  5.返回

6.释放空间(释放栈空间,由操作系统自动完成)
今日开发中的问题

冒泡排序法需要熟练的掌握,

数组的各种表达以及几种情况:

Printf(“%p”,&a[0][0])//数组首元素地址,代表一个元素  

Printf(“%p”,a[0])//数组首行元素地址,代表一个元素

Printf(“%p”,a)//数组首行地址,代表一行

Printf(“%p”,&a)//数组的地址,代表一个数组

a[1]==*(a+1)

Printf(“%p”,&a[])//数组首元素的地址

Printf(“%p”,a)//数组名,同时也是数组的首元素的地址

Printf(“%P”,&a)//数组的地址

Printf(“%P”,a+1) //步长不一样,代表一个元素

Printf(“%P”,&a+1)//代表一个数组  4*10字节

C语言函数的使用,形参和实参的区别有些分不清

几种重要的关键词!

今日未解决问题

对冒泡排序法的函数转化并不熟练,还需要多加练习,同时函数这部分还存在着不小的问题

今日开发收获

今天着重的强调了数组以及函数部分,所以我也更加的深入了解了这两部分的内容

一维数组和二维数组的不同以及其地址表达等多个问题

自我评价随着对C语言的多加练习,对常用的代码以及表达有了不少的了解



今日习题:

1.字符数组中在指定位置插入字符串

#include<stdio.h>
#include<string.h>
void input(char a[])
{
 printf("输入字符串:");
    scanf("%s",a);
}
int count(char a[])
{
 return strlen(a);
}
void ins(char x[],char y[],int s,int n)
{
 char ch[10]; 
 int i,j;
    printf("输入插入字符:");
 scanf("%s",ch);
    if(s>=n)
 {
   for(i=0;i<n;i++)
   {
     y[i]=x[i];
   }
         y[i]=ch[0];
   for(j=i,i++;i<=s;i++,j++)
   { 
            y[i]=x[j];
   }
   for(i=0;i<s+1;i++)
   {
    x[i]=y[i];
   }
 }
    if(s<n)
 { 
  printf("input error\n");
  while(1);
 }
}
int main()
{
    char a[1000]={0},b[2000]={0},ch;
 int str,num;
 input(a);
 str=count(a);
    printf("输入在第几个字符插入字符:");
 scanf("%d",&num);
 ins(a,b,str,num-1);
 printf("插入后:\n");
 printf("%s\n",a);
 while(1);
 return 0;
}


2.设计一个洗牌发牌的程序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void initial(int* p)//初始化一副牌
{
    int i;
    for (i = 0; i<52; i++)
       p[i] = (i / 13 + 3) * 100 + i % 13 + 1;
}
void xipai(int *p)//洗牌
{
    int i, x, y;
    int t;
    srand((int)time(0));
    for (i = 0; i<200; i++)
   {
        x = rand() % 52;
         //52中一个数
        y = rand() % 52;
        //52中一个数
       if (x != y)
       {
           t = p[x];
           p[x] = p[y];
           p[y] = t;
        }
    }
}
void fapai(int* p, int* p1, int* p2, int* p3, int* p4)//发牌
{
    int i;
    for (i = 0; i<13; i++)
    {
        p1[i] = p[4 * i];
        p2[i] = p[4 * i + 1];
        p3[i] = p[4 * i + 2];
        p4[i] = p[4 * i + 3];
    }
}
void paixu(int* p)//排序
{
    int i, j;
    int t;
    for (i = 0; i<13; i++)
      for (j = 0; j<13 - i; j++)
      {
          if (p[j]>p[j + 1])
          {
              t = p[j];
              p[j] = p[j + 1];
              p[j + 1] = t;
          }
      }
}
void xianshi(int *p)
{
    int i;
    int f, d;
    for (i = 0; i<13; i++)
    {
         f = p[i] / 100;//301~313,401~413,501~513,601~613
         d = p[i] % 100;//1~13
         switch (f)
         {
             case 3:
             printf("黑桃");
             break;
             case 4:
             printf("红桃");
             break;
             case 5:
             printf("梅花");
             break;
             case 6:
             printf("方块");
             break;
          }
          if (d<10 && d>1)
          {
              printf("%c ", (d + '0'));
          }
          else if (d == 1)
                 printf("A ");
          else if (d == 11)
                 printf("J ");
          else if (d == 12)
                 printf("Q ");
          else if (d == 13)
                 printf("K ");
          else if (d == 10)
                 printf("10 ");


    }
    printf("\n");
}
int main()
{
    int pai[52], player1[13], player2[13], player3[13], player4[13];
    initial(pai);
    xipai(pai);
    fapai(pai, player1, player2, player3, player4);
    paixu(player1);
    paixu(player2);
    paixu(player3);
    paixu(player4);
    xianshi(player1);
    xianshi(player2);
    xianshi(player3);
    xianshi(player4);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/myoath7/article/details/80992635