学习日志第二天

                                                        学习日志            

                                                                           姓名:陈长稳        日期: 7.10

今日学习任务              

学习一维数组,二维数组,函数,变量的存储类型及预处理的相关知识                                                      

今日任务完成情况        

1.学习了一维数组,二维数组,函数,变量的存储类型及预处理的相关知识

2.编写了各个知识点的典型案例

3.完成课堂上练习

今日开发中出现的问题汇总   

1.  调用函数时值传递与地址传递的区别无法分清

2.  在另外一个界面定义的变量,无法被当前界面的函数体调用                                               

 今日开发收获                                                            

  1. 数组地址空间:

 int a[5];//未初始化的局部变量是随机值

 int a[5]= {1,2,3,4,5};//全部变量初始化

 int a[5]= {1, 2};//部分元素初始化

 int a[]= {1, 2, 3};//数组长度是3

 2.冒泡排序法

    for(i=0 ; i< SIZE-1; i++)

    {  

        for(j=0 ; j< SIZE-i-1 ; j++)

        {  

            if(a[j] > a[j+1])

            {

                tmp=a[j];

                a[j] = a[j+1];

                a[j+1]=tmp;

            }      

        }    

    }

  3. 二维数组定义时长度不能同时省略;

  4.

    printf("%d\n",&a[0][0]);//数组元素首地址,代表一个元素

    printf("%d\n",a[0]);//数组首行元素地址,代表一个元素

    printf("%d\n",a);//数组首行地址,代表一行

    printf("%d\n",&a);//数组的地址,代表一个数

   5.函数

         1.只包含一个main()函数

         2.函数调用在函数定义之前,要进行声明        

#include <stdio.h>

void print(); 

int get_number()//有一个整形的返回值没有形参

{

    return 2;

}

int add(int x,int y) //形参个数和实参保持一致 类型也要保持一致 

{

    int result;

    result= x + y;

    return result;

}

int main()

{

    int num,a = 1,b = 2;

    print(); //自定义函数

    num=get_number();//定义一个变量,接返回值

    printf("num= %d\n",num);

    num=add(a,b);//a和b 实参

    printf("num= %d\n",num);  

    while(1);

    return 0;

void print() //没有返回值没有形参

{

    printf("helloworld!\n");

}

       3.函数调用过程

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

            给形参分配空间

            传值(实参传给形参)

            执行函数体

            返回

            释放空间(栈空间)

6.变量数据类型

       1.局部变量默认为auto型。

       2.register型变量个数受限制,且不能为long、double、float型,不能取地址

       3.extern int num; //声明一个外部变量

                                 //不需要分配空间

7.static修饰局部变量:改变变量的申明周期,一直到程序结束才被释放
  原因:存放的地方不一样,不加static修饰(普通局部变量)存放在栈(内存的一种)上面;加上static修饰(静态变量),存   放在数据段

今日未解决问题

    

自我评价               

1.对一维数组,二维数组,函数,变量的存储类型及预处理的相关知识有了更加深入的了解

2.对c语言的基础知识有了更深的了解            

作业:

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

#include <stdio.h>
int cr(char a[],char num,int a_i);
void main()
{
int a_i;
char a[50],num;
        printf("请输入一个字符串:");
gets(a);
printf("请输入您想插入的一个字符:");
num=getchar();
getchar();
printf("请输入您想插入的位置:");
fflush(stdin);
scanf("%d",&a_i);
if (cr(a,num,a_i))
printf("没有插入!\n");
else
printf("插入后的字符串为:%s\n",a);
system("pause");
}
int cr(char a[],char num,int a_i)
{
int i;
if(a_i >= strlen(a))
{
printf("您输入的位置超出字符串长度了!"); 
return -1;
}
else
{
for(i=strlen(a); i >= a_i; i--)
{
a[i+1]=a[i];
}
a[i]=num;
return 0;
}
}

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

#include <stdio.h>
int main()
{
    int n,i;
    int flag[52]= {0};
    srand((unsigned int)time(NULL));
    for(i = 0; i < 52; i++)
    {
        n = rand()%52;
        while(flag[n] == 1)
        {
            n = rand()%52;
        }
        flag[n] = 1;
        if(n >= 0 && n < 13)
        {
            printf("红心%d ", n + 1);
        } 
        else if(n >= 13 && n < 26)
        {
            printf("黑桃%d ", n - 12);
        }
        else if(n >= 26 && n < 39)
        {
            printf("梅花%d ",n - 25);
        }
        else
        {
            printf("方片%d ",n - 38);
        }
        if((i +1) % 13 == 0)
        printf("\n");

    }

    return 0;

}

猜你喜欢

转载自blog.csdn.net/baqidemingzi/article/details/80989488