2017-7-10 暑期实训日志

学习日志                     姓名: 范 译       日期: 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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值