学习日志 姓名: 尤嘉慧 日期: 2017.07.10
今日学习任务 |
C语言中的数组与函数 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。) |
今日任务已完成。讲解并改善了上节课布置的作业,熟悉了如何求最小公约数的步骤(1、获取两个数字2、求出最小的数3、循环 从最小的开始4、找到公约数,跳出循环)。还用冒泡排序法编写了程序,最后还用函数的封装对其进行完善和改进。 |
今日开发中遇到的问题汇总 |
a+1 表示的是加一行,而不是数组内加一 *与 [ ]一个意思,就好比a[1]==*(a+1) &a[0] 是数组首元素的地址 |
今日未解决问题 |
无 |
今日开发收获 |
【函数调用】 从main开始执行,但从开头开始编译; 一个函数一段内存,函数名就是地址; (1)通过函数名找到函数的入口地址 (2)给形参分配空间,int x,y 4字节 (3)传值 实参传给形参 值传递 地址传递 地址传递:当涉及修改内存里面的值 值传递:当需要读出值得时候 (4)执行函数体 (5)return 返回 (6)释放空间(栈空间) 【变量的存储类型】 1、局部变量默认为auto型 2、register型变量个数受限,且不能为long,double,float型 【函数】 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' );
}
}