学习日志 姓名: 范 译 日期: 2017.07.10
今日学习任务 | 函数与数组 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量) | 今日任务已按计划完成。熟悉冒泡排序算法,并用函数的方法实现;编写含有函数的程序,并学习函数声明、定义,有无形参、数组传参 ; |
今日开发中遇到的问题汇总 | 函数声明放在函数调用后面,导致编译报错; 将int型数组作为参数传递给char型形参,导致编译通过,但运行结果不正确 |
今日未解决问题 | 无 |
今日开发收获 | 数组定义:大小不能动态定义 数组指针与地址:a是数组名,数组名可表示数组首元素地址 &a数组的地址 &a[0]数组首元素的地址 函数的定义、声明与调用 将数组作为参数传递给函数 static、extern的用法 |
自我评价 (是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等) | 能与同学讨论上课不太懂的内容;采用函数编程,使代码结构更加清晰 |
其他 | 无 |
作业一:在字符数组指定位置插入字符
#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_s("%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>
typedef struct {
char *color;
char *number;
}Card;
void shuffle(Card cards[][13], int n, int m)
{
srand(time(0));
Card card[52];
Card tempCard;
int i, j;
for (i = 0; i<n; i++)
{
for (j = 0; j<m; j++)
{
card[i * 13 + j] = cards[i][j];
}
}
for (i = 0; i<52; i++)
{
int temp = rand() % (52 - i) + i;
tempCard = card[i];
card[i] = card[temp];
card[temp] = tempCard;
}
for (i = 0; i<4; i++)
{
for (j = 0; j<13; j++)
{
cards[i][j] = card[i * 13 + j];
}
}
}
void main()
{
char colors[4][10] = { "红心","梅花","方块","黑桃" };
char number[][4] = { "A","2","3","4","5","6","7","8","9","10","J","Q","K" };
Card cards[4][13];//共52张牌(不考虑大小王)
int i, j;
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 12; j++)
{
cards[i][j].color = colors[i];
cards[i][j].number = number[j];
}
}
printf("洗牌前:\n");
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 12; j++)
{
printf("%s%s ", cards[i][j].color, cards[i][j].number);
}
printf("\n");
}
shuffle(cards, 4, 13);
printf("洗牌后:\n");
for (i = 0; i <= 3; i++)
{
for (j = 0; j <= 12; j++)
{
printf("%s%s ", cards[i][j].color, cards[i][j].number);
}
printf("\n");
}
while (1);
}