今日学习任务 |
C语言中的数组与函数 |
今日任务完成情况 |
今日任务已完成。讲解并改善了上节课布置的作业,熟悉了如何求最小公约数的步骤(1、获取两个数字2、求出最小的数3、循环 从最小的开始4、找到公约数,跳出循环)。还用冒泡排序法编写了程序,最后还用函数的封装对其进行完善和改进。 |
今日开发中遇到的问题汇总 |
extern的声明是声明在需要使用变量的文件中还是在定义变量的文件中? |
今日开发收获 |
1、数组大小不能动态定义,即int k, a[k]; 2、未初始化全局变量都是0,未初始化局部变量是随机值。 3、*和[]意思相同,a[1]相当于*(a+1)。 4、定义函数在调用函数下面,要进行函数声明(否则会编译报错)。 5、数组地址的各种表示方法。 6、printf("%p\n",&a+1);//%p是表示输出地址。 7、当涉及修改内存里的值是,需要使用址传递。 8、被调用函数有返回类型,主函数就必须有变量接函数中的值。 |
今日未解决问题 |
无 |
自我评价 |
基本能够完成一部分任务,但比较自己写的代码和老师写的在思路及规范性方面还是感觉不够成熟。 |
其他 | 无 |
字符数组中在指定位置插入字符
#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' );
}
}