7.10

    学习日志                     姓名:   尤嘉慧          日期: 2017.07.10  

 

今日学习任务

C语言中的数组与函数

 

今日任务完成情况

(详细说明本日任务是否按计划完成,开发的代码量。)

今日任务已完成。讲解并改善了上节课布置的作业,熟悉了如何求最小公约数的步骤(1、获取两个数字2、求出最小的数3、循环 从最小的开始4、找到公约数,跳出循环)。还用冒泡排序法编写了程序,最后还用函数的封装对其进行完善和改进。

今日开发中遇到的问题汇总

a+1 表示的是加一行,而不是数组内加一

*[ ]一个意思,就好比a[1]==*(a+1)

&a[0] 是数组首元素的地址

今日未解决问题

今日开发收获

【函数调用】

main开始执行,但从开头开始编译;

一个函数一段内存,函数名就是地址;

  (1)通过函数名找到函数的入口地址

  (2)给形参分配空间,int xy  4字节

  (3)传值  实参传给形参  值传递  地址传递

             地址传递:当涉及修改内存里面的值

             值传递:当需要读出值得时候

  (4)执行函数体

  (5return 返回

  (6)释放空间(栈空间)

【变量的存储类型】

1、局部变量默认为auto

2register型变量个数受限,且不能为longdoublefloat

【函数】  

 C程序中只包含一个主函数main() ,也可以包含一个主函数和若干个其他函数(库函数和自定义函数)

   

     函数类型 函数名(形式产生类型说明表)

   {

      声明部分

      执行部分

       }

   形参个数和实参保持一致,类型保持一致,名字可以不一致

static】  修饰全局变量:改变变量的作用域,只能在当前文件中使用

          修饰函数:改变函数的作用域,只能在当前文件中使用

          修饰局部变量:改变变量的声明周期,直到程序运行结束才被释放 [原因:存放的地方不一样,如果不加static修饰就是普通局部修饰,如果加上static修饰(静态变量),存放在数据段]

          

自我评价

(是否规范完成指定任务,需要改进的地方,与他人合作等。)

自我完成程序的能力还是有所欠缺,只能跟着老师或者询问同学才能完成编程,自我能力不够,希望会有所进步。

            其他

无            

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

#include <stdio.h>

#include <string.h>

int Insert(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 (Insert(a,num,a_i))

printf("没有插入!\n");

else

printf("插入后的字符串为:%s\n",a);

system("pause");

}

/*函数功能:在字符串的某个位置插入一个字符*/

int Insert(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;

}

}

设计一个洗牌发牌的程序

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

//card structure definition//

struct card

{

        const char *face;

        const char *suit;

};//end structure card

typedef struct card Card;//new type name for struct card

//prototypes

void fillDeck( Card * const wDeck, const char * wFace[], const char * wSuit[] );

void shuffle( Card * const wDeck );

void deal( const Card * const wDeck );

int main( void )

{

        Card deck[ 52 ];//define array of Cards

        

        //initialize array of pointers

        const char *face[] = {"A", "2", "3", "4", "5",

                "6", "7", "8", "9", "10", "J", "Q", "K" };

        //initialize array of pointers

        const char *suit[] = { "红桃", "方块", "黑桃", "梅花" };

        srand( time( NULL ) );        //randomize

        fillDeck( deck, face, suit );//load the deck with Cards

        shuffle( deck );//put Cards in random order

        deal( deck );//deal all 52 Cards

        return 0;

}//end main

//place strings into Card structures

void fillDeck( Card * const wDeck, const char * wFace[], const char * wSuit[] )

{

        int i;

        for ( i = 0; i<=51; i++ )

        {

                wDeck[ i ].face = wFace[ i % 13 ];

                wDeck[ i ].suit = wSuit[ i / 13 ];

        }

}//end function fillDeck

//shuffle cards

void shuffle( Card * const wDeck )

{

        int i;

        int j;//variable to hold random value between 0 - 51

        Card temp;//define temporary structure for swapping Cards

        for ( i = 0; i <=51; i++ )

        {

                j = rand() % 52;

                temp = wDeck[ i ];

                wDeck[ i ] = wDeck[ j ];

                wDeck[ j ] = temp;

        }

}//end function shuffle

//deal cards

void deal( const Card * const wDeck )

{

        int i;

        for ( i = 0; i <= 51; i++ )

        {

                printf( "%5s %-8s%c", wDeck[ i ].face, wDeck[ i ].suit, ( i + 1 ) % 2 ? '\t' : '\n' );

        }

}

猜你喜欢

转载自blog.csdn.net/weixin_42645474/article/details/80991244