C语言
文章平均质量分 50
基础内容讲解
lovoo
不要抱怨生活,只因你还不够努力!
展开
-
C项目 实现通讯录
一、界面如图 二、初始化 1)尝试性读取文件 2)如果成功了,说明文件存在,读取文件 3)不成功,说明文件不存在 a.创建文件 b.写入联系人数量三、添加联系人 1)提示用户输入姓名与电话号码 2)接收用户输入的内容 3)保存到联系人数组 4)写入到文件中四、删除联系人 1)让用户输入要删除的编号 2)判断编号是否合法 3)让用户再次确认删除 4)开始删除数组元素原创 2016-05-13 21:28:28 · 605 阅读 · 0 评论 -
C游戏 推箱子游戏
一、地图: 二、重点难点: 1)小人在移动的时候,如何判断下一个是箱子 2)小人推箱子移动,箱子移动的下一个位置是路 3)要记录箱子的位置、小人的位置、箱子要移动的下一个位置 4)计算箱子的下一个位置 5)10*10地图,10*11存储原创 2016-05-02 15:34:50 · 1593 阅读 · 0 评论 -
C游戏 简单迷宫游戏开发
#include <stdio.h>#define row 6#define col 6void printMap(char map[row][col]) { for (int i = 0; i < row; i ++) { for (int j = 0; j < col; j ++) { printf("%c ",map[i][j]);原创 2016-04-27 21:44:08 · 1048 阅读 · 0 评论 -
C经典 有参数宏的用法
#include <stdio.h>//不能有空格#define SUM(x,y) x + y;#define SUM2(x) x + y;#define MUL(x,y) x*y + y;#define M(x,y) x = n*2; y = n/2;int main(int argc, const char * argv[]){ // 1. int result =原创 2016-05-08 15:50:17 · 513 阅读 · 0 评论 -
C经典 结构体指针两种方式
#include <stdio.h>int main(int argc, const char * argv[]){ // 定义结构体 struct Student{ int age; char *name; }stu={22,"tom"}; struct Student *p = &stu; //1. printf("%原创 2016-05-08 09:44:26 · 654 阅读 · 0 评论 -
C经典 结构体数组初始化
#include <stdio.h>int main(int argc, const char * argv[]){ //1 struct Student{ int age; char *name; }stu[3]={{22,"peter"},{33,"tom"},{23,"tiger"}}; for (int i = 0; i < 3;原创 2016-05-07 21:10:31 · 14896 阅读 · 1 评论 -
C经典 内存分配解析
一。分配方式: 二。内存分区 1)BBS段存放 未初始化的static 和全局变量 2)数据段存放 已经初始化的static 和全局变量 3)代码段存放 程序执行代码的一块内存区域,即编译后的代码,可执行文件 4)原创 2016-05-04 20:45:19 · 371 阅读 · 0 评论 -
C经典 二分查找法
#include <stdio.h>/* key = 9; 1 2 3 4 5 6 7 8 arr 3, 4, 5, 7, 9 , 11, 21, 23 low = 1 mid = (low + high)/2 = 4 high = 8; one arr[mid] = 7 < 9原创 2016-04-22 21:28:18 · 439 阅读 · 0 评论 -
C经典 选择排序
#include <stdio.h>/* 选择排序 就是每次把最小的数排到前面 */int main(int argc, const char * argv[]){ void selectSort(int arr[], int len); int arr[] = {2,3,5,1,643,21,24}; selectSort(arr, sizeof(arr)/sizeof(原创 2016-04-22 20:52:45 · 320 阅读 · 0 评论 -
C经典 打印垂直三角形
/* * * * * * * * * * * * 说明:*的个数等于行号 */#include <stdio.h>int main(int argc, const char * argv[]){ // i = 0; j = 0; // i = 1; j = 0, 1; // i = 2; j = 0, 1, 2;原创 2016-04-22 20:40:11 · 461 阅读 · 0 评论 -
C经典 结构图初始化三种方式
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, const char * argv[]){ //1 struct Student{ int age; int grade; char name[21]; }stu; s原创 2016-05-06 21:01:13 · 1026 阅读 · 0 评论 -
C经典 结构图的三种定义方式
#include <stdio.h>//全局struct Student{ int age; char name[21]; char *address;};int main(int argc, const char * argv[]){ // 1 struct Student stu; //2 struct Student2{原创 2016-05-06 20:34:07 · 588 阅读 · 0 评论 -
C经典 结构体的自身嵌套
#include <stdio.h>int main(int argc, const char * argv[]){ // struct Student{ int age; char *name; struct Student *child; }; struct Student tom ={4,"tom",NULL};原创 2016-05-08 10:13:02 · 1649 阅读 · 0 评论 -
C经典 结构体作为函数参数运用
解析:car->wheel = 2; 指的是把car的wheel指向的地址指向的值改为了2,所以就改变了car.wheel的值#include <stdio.h>struct Car{ int speed; int wheel;};void repairCar(struct Car *car){ car->wheel = 2;}int main(int argc,原创 2016-05-08 10:47:07 · 491 阅读 · 0 评论 -
C经典 使用递归求x的y次方
int main(int argc, const char * argv[]) {// 求x的y次方printf("%d\n",getSum(2, 3));return 0;} int getSum(x,y){ int sum = 0; if(y==1){ sum = x; }else if(y>1){ sum = getS原创 2016-04-21 21:05:58 · 5800 阅读 · 0 评论 -
C经典 打印二维数组五个学生三门课的每门课平均成绩及总课程的平均的成绩
#include <stdio.h>int main(int argc, const char * argv[]){ // 打印二维数组五个学生三门课的每门课成绩及总课程的平均的成绩 int score[][3] = { {67,89,90}, {80,90,80}, {59,43,78}, {99,68,98},原创 2016-04-25 21:20:48 · 9843 阅读 · 2 评论 -
C经典 Char型指针数组与字符数组的区别
1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变char *name[3] = { "abc", "def", "gbk" };for(int i = 0 ; i < strlen(name); i ++){ printf("%s\n", *(name+i)); //printf("%s\n", name[i]);}//指向改变n原创 2016-05-03 20:49:08 · 2910 阅读 · 0 评论 -
C经典 函数指针的三种使用方式
定义方式:int (*p)(int x, int y);#include <stdio.h>int sum(int x, int y){ return x + y;}int reduce(int x, int y){ return x - y;}int multiply(int x, int y){ return x * y;}float divide(in原创 2016-05-06 20:18:35 · 478 阅读 · 0 评论 -
C经典 联合体union
1.定义: union(int i, short s, char c) un; un.i = 3; printf(“i=%d”,un.i); printf(“length = %d\n”,sizeof(un);//==4,有最大的变量来决定2.相当与java里的List T类型原创 2016-05-20 06:54:29 · 422 阅读 · 0 评论 -
C经典 DEBUG控制Log
#include <stdio.h>#define DEBUG1 1 //为1时Log有效,为0时Log无效#if DEBUG1 == 1#define Log(format,...) printf(format, ## __VA_ARGS__)//__VA_ARGS__表示参数, ##表示可传两个参数#else#define Log(format,...)#endifint mai原创 2016-05-08 17:14:02 · 639 阅读 · 0 评论 -
C经典 宏与typedef的区别
#include <stdio.h>#define HONG int*typedef int T;typedef int* PT;int main(int argc, const char * argv[]){ // 1.宏 HONG a,b; //a是指针,b是普通变量 int num = 10; a = # b = 10; // 2.原创 2016-05-08 16:09:39 · 638 阅读 · 0 评论 -
C经典 typedof的使用方法
#include <stdio.h>int sum(int a, int b){ return a + b;}int reduce(int a , int b){ return a - b;}int main(int argc, const char * argv[]){ // 1。基本类型 typedef int NINT; NINT a =原创 2016-05-08 11:42:28 · 1706 阅读 · 0 评论 -
C经典 打印正三角形
/* * *** ***** ******* 说明:* i = 1 ; j = 1; i = 2 ; j = 3; i = 3; j = 5; j = 2*i-1; 空格: i = 1; j = 4;原创 2016-04-21 21:08:56 · 1297 阅读 · 0 评论 -
C 经典 冒泡排序
#include <stdio.h>int main(int argc, const char * argv[]){ // void maopao(int arr[], int len); int arr[] = {1,2,32,22,64,212,221,323,224,11}; int len = sizeof(arr)/sizeof(int); maopao(原创 2016-04-21 20:56:00 · 372 阅读 · 1 评论 -
C经典 使用指针变量找出最大值
#include <stdio.h>int getMax(int *p, int len){ int max = *p; for (int i = 0; i < len; i ++) { if (*(p+i) > max) { max = *(p+i); } } return max;}int main原创 2016-05-05 20:53:25 · 3286 阅读 · 0 评论 -
C经典 一维数组指针解析
#include <stdio.h>int main(int argc, const char * argv[]){ // int a[] = {1,2,3,4}; int *pa[] = {&a[0],&a[1],&a[2],&a[3]}; printf("*pa[0] = %d\n",*pa[0]);//==1 printf("*pa = %p\n",*p原创 2016-05-02 10:35:46 · 273 阅读 · 0 评论 -
C经典 逆序打印一维数组
/** int a[5]; 获取a[i]的地址方法 1) &a[i]; 2) a + i; 3) int *p = a; p + i; 获取a[i]的值方法 1) a[i]; 2) *(a+i); 3) *(p+i); 4) *(&a[i]); *///逆序输出数组#include <stdio.h>void reverseArray(int a[], int len){原创 2016-05-01 20:53:12 · 546 阅读 · 0 评论 -
C经典 关于一维数组指针
说明: 1)一维数组指针表示方法 int *p = a 而非 int *p = &a 也可int *p = &a[0]表示 2)p + 1 或a + 1表示的是指向下一个地址#include <stdio.h>int main(int argc, const char * argv[]){ // insert code here... int a[4]={1,2,3,原创 2016-05-01 20:17:55 · 440 阅读 · 0 评论 -
C经典 二级指针
用图说明 事例代码#include <stdio.h>int main(int argc, const char * argv[]){ // int a = 5; int *p1 = &a; //-打印地址-----地址相同--------------- printf("&a = %p\n", &a);// printf("p1 = %p\n",原创 2016-05-01 08:54:48 · 444 阅读 · 0 评论 -
C经典 快速实现加减乘除
#include <stdio.h>void caculate(int x, int y , int *add, int *reduce, int *multiply , float *divide){ *add = x + y; *reduce = x - y; *multiply = x*y; if(y != 0) *divide = x / (floa原创 2016-04-30 21:03:03 · 981 阅读 · 0 评论 -
C经典 指针与指针所指向的值的区别
#include <stdio.h>void changeValue(int *p){ *p = 100;//改变l了p指向的值,就是地址指向的数据改变了}int main(int argc, const char * argv[]){ // int a = 1; int *p1 = &a; printf("%p\n",&a); printf("原创 2016-04-30 20:55:32 · 734 阅读 · 0 评论 -
C经典 写函数进行数据交换
分析:为什么要这么才能交换 temp = *pa; 表示把指针的值赋给了temp,而不是地址#include <stdio.h>void sweap(*pa, *pb){ int temp; temp = *pa; *pa = *pb; *pb = temp;}int main(int argc, const char * argv[]){ //原创 2016-04-30 20:05:44 · 466 阅读 · 0 评论 -
C经典 输入字符串,并统计字母个数,首字母大写
分析:是否是字母根据空格判断,首字母大写,只要把字母-32#include <stdio.h>int main(int argc, const char * argv[]){ // 定义数组 char ch[50]; int words = 0;//用来判断是否是字母 int count = 0;//统计字母的个数 // 提示用户输入 printf("原创 2016-04-30 16:28:03 · 3937 阅读 · 0 评论 -
C经典 输入数组并打印
#include <stdio.h>int main(int argc, const char * argv[]){ // 定义行与列 int m, n; printf("请输入行与列,用逗号分割"); scanf("%d,%d",&m,&n); int arr[m][n]; void initArr(int m ,int n , int arr[m]原创 2016-04-26 20:37:13 · 937 阅读 · 0 评论 -
C经典 指针运算
include原创 2016-05-02 10:52:25 · 296 阅读 · 0 评论 -
C经典 数组名访问二维数组
1.如图所示 a代表第0行首地址 a+1代表第1行首地址 , a+i代表第i行的首地址 *(a+i)代表取得a[i]数组的首地址 **(a+i)代表取得a[i]数组的首地址指向的值,如果i=1,则=9原创 2016-05-02 11:04:41 · 419 阅读 · 0 评论 -
C经典 指针数组与二维数组指针变量的区别
1.指针数组 : 定义 int *p[n]; int *p = {&a,&b,&c,&d}, p表示多个指针 []优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]…p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样原创 2016-05-02 11:48:02 · 481 阅读 · 0 评论 -
C经典 指针函数 打印星期几
#include <stdio.h>//返回的时参,所以地址不同int* max(int x, int y){ return x > y ? &x : &y;}int* max2(int *x, int *y){ return *x > *y ? x : y;}int main(int argc, const char * argv[]){ // 指针函数原创 2016-05-05 20:27:29 · 1390 阅读 · 0 评论 -
C经典 malloc内存分配函数的使用
#include <stdio.h>#include <stdlib.h>int main(int argc, const char * argv[]){ // int *p = (int *)malloc(4 * sizeof(int)); *p = 10; *(p+1) = 11; *(p+2) = 12; *(p+3) = 13; for原创 2016-05-04 21:25:05 · 480 阅读 · 0 评论 -
C经典 const与指针解析
总结: * const 值不能改变,指向可改变 const * 值能改变,指向不可改变 const * const 都不能改变#include <stdio.h>int main(int argc, const char * argv[]){ // 1 可改变指针 const int a = 10; int *p =原创 2016-05-04 20:38:14 · 361 阅读 · 0 评论