今日学习任务
一维数组、二维数组、冒泡排序法排序、函数类型、宏函数、预处理
今日任务完成情况
for (i=0; i < sizeof(a) / sizeof(a[0]); i++); //固定的求数组的长度
*和[]是一个意思,a[1]====*(a+1)(取值)
1、 通过函数名找到函数的入口地址(函数名就是地址)
2、 给形参分配空间
3、 传值(实参传给形参)(形参传给实参)
4、 执行函数体
5、 返回
6、 释放空间(栈空间)
swap(&a,&b); //地址传递(当涉及修改内存里面的值时)
//static修饰局部变量:改变变量的声明周期,直到程序运行结束才被释放
原因:存放的地方不一样,如果不加static修饰,(普通局部变量)存放在栈(内存的一种)上面;加上static修饰(静态变量),存放在数据段
#define SQR(x) x*x //预处理 只做简单的替换
PRI; //无参宏函数
PRINT; //有参宏函数
今日开发中出现的问题汇总
对老师讲的内容似懂非懂
今日未解决问题
函数编写不熟悉,得多练习
今日开发收获
学习了很多C语言知识
自我评价
知识掌握不透彻,需更多的学习
其他
作业:
1 .字符数组中在指定位置插入字符
#include<stdio.h>
#include<string.h>
int Insert(char a[],char num,int a_i);
void main()
{int a_i=1;
char a[50],num;
printf("please input a zifushuzu: ");
gets(a);
printf("please input a zifu: ");
num=getchar();
getchar();
printf("请输入插入的位置: ");
scanf("%d",&a_i);
if(Insert(a,num,a_i))
printf("没有插入!\n");
else
printf("插入后的字符串为: %s\n",a);
}
int Insert(char a[],char num,int a_i)
{
int i;
if(strlen(a)-1<a_i)
{
printf("输入位置超出长度!");
return -1;
}
else
{
for(i=strlen(a);i>=a_i-1;i--)
{
a[i+1]=a[i];
}
a[a_i-1]=num;
return 0;
}
}
2.设计一个洗牌发牌的程序
#include <stdio.h>
int main()
{
int n,i;
int flag[52]= {0};
srand((unsigned int)time(NULL));
for(i = 0; i < 52; i++)
{
n = rand()%52;
while(flag[n] == 1)
{
n = rand()%52;
}
flag[n] = 1;
if(n >= 0 && n < 13)
{
printf("红心%d ", n + 1);
}
else if(n >= 13 && n < 26)
{
printf("黑桃%d ", n - 12);
}
else if(n >= 26 && n < 39)
{
printf("梅花%d ",n - 25);
}
else
{
printf("方片%d ",n - 38);
}
if((i +1) % 13 == 0)
printf("\n");
}
return 0;
}