学习日志 姓名: 王瑶 日期: 2017.07.10
今日学习任务 |
c语言基础知识学习,包括:一维数组、二维数组、字符数组、函数、预处理等内容 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
|
本日任务按计划完成: 1、一维数组、二维数组、字符数组的内存分配,定义、初始化及遍历。 2、数组与指针的关系以及地址的表示方法。 3、自定义函数的声明、定义与调用。 4、函数中值传递与址传递问题。 5、关键字auto、register、static、extern作为局部变量或全局变量时的用法。 6、预处理。 7、以上学习均结合编程,学习编写数组遍历程序、函数调用、值传递与址传递程序约10个。 |
今日开发中遇到的问题汇总 |
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>
#define SIZE 100
void GetChararray(char a[])
{
printf("pleass input the chararray:\n");
scanf("%s",a);
}
int Sert_addr()
{
int addr;
printf("pleass input the insert address:\n");
scanf("%d",&addr);
return addr;
}
char Sert_char()
{
char c;
printf("pleass input the insert char:\n");
getchar();
scanf("%c",&c);
return c;
}
void Sert_to(char a[],int addr, char c)
{
int i;
for(i=SIZE;i>=addr-1;i--)
{
a[i+1]=a[i];
}
a[addr-1]=c;
}
void print(char a[])
{
printf("the last chararray:\n");
printf("%s",a);
}
int main()
{
char a[SIZE];
int addr;
char c;
GetChararray(a);
addr=Sert_addr();
c=Sert_char();
Sert_to(a,addr,c);
print(a);
while(1);
return 0;
}
设计一个洗牌发牌程序
程序:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int jiemian()
{
int num;
printf("**************************************\n");
printf(" 按1发牌 \n");
printf("**************************************\n");
printf("pleass input your option:\n");
scanf("%d",&num);
return num;
}
void main()
{
int aim,i,num;
int porker[52]={0};
num=jiemian();
if(num==1)
{
srand((unsigned)time(NULL));
aim=rand()%52;
for(i=1;i<52;i++)
{
aim=rand()%52;
while(porker[aim]==1)
{
aim=rand()%52;
}
porker[aim]=1;
printf("第%2d张牌:",i);
switch(aim/13)
{
case 0:printf("梅花");break;
case 1:printf("方块");break;
case 2:printf("红桃");break;
case 3:printf("黑桃");break;
default:break;
}
switch(aim%13+1)
{
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
printf("%2d\n",aim%13+1);break;
case 1:
printf("A\n");break;
case 11:
printf("J\n");break;
case 12:
printf("Q\n");break;
case 13:
printf("K\n");break;
default:break;
}
}
}
else printf("error!");
}