C语言
li_hong_fei
这个作者很懒,什么都没留下…
展开
-
日志2016.11.2
算法+数据结构=程序数据结构是对数据的描述,算法是对操作的描述。 数据类型绝定: 1,数据占内存字节数; 2,数据取值范围; 3,可进行的操作。 算法的特性: 1,有穷性;2,确定性;3,有零个或多个输入;4,有一个或多个输出;5,有效性。 控制语句: if() … else … (条件语句) for() … (循环语句) while() … (循环语句) do … wh原创 2016-11-02 22:44:16 · 205 阅读 · 0 评论 -
C语言位运算练习题1
1,#include <stdio.h>int bit_1(int x){ int i; int y; int sum = 0; for(i = 0 ; i < 8 ; i++) { y = x % 2; x = x / 2; if(y == 1) {原创 2016-12-03 02:28:27 · 928 阅读 · 0 评论 -
C语言位运算练习题2
1,#include <stdio.h>#define MAX 32void change_bit(int a, int p, int v) { int n; int i = 0; int b[MAX] = {0}; while(a > 0) { n = a % 2; b[i] = n; i++; a = a / 2;原创 2016-12-03 02:29:54 · 642 阅读 · 0 评论 -
什么是野指针?
谈谈你对野指针的理解?野指针不是NULL指针,是指向“垃圾”内存的指针。即它是随机指向的,系统自动对其初始化。野指针会造成什么样的后果呢? 最大的问题:它会导致内存泄漏。什么叫作内存泄漏? 指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。 简单的说,内存泄漏分为两方面原创 2016-12-03 02:36:09 · 1955 阅读 · 0 评论 -
scanf的使用
首先明确 scanf的结束标志是空格和回车键,而gets的结束标志为回车键,输入字符串时,一般采用gets因此有下面两种方法可以在使用scanf时完整输入字符串 1)利用strcat()函数来实现带空格字符串的输入,可以用字符串追加函数strcat()来连接每个单词。 Strcat()一般格式:char*strcat(char*dest,const char*src); 函数将字符串sr原创 2016-12-03 02:38:52 · 318 阅读 · 0 评论 -
scanf清除缓冲区的方法
前面输入其他类型 后面输入字符时剔除\n的方法: ①ch字符输入前加getchar(); ②用格式符%*c%c %*c:读入一个字符但忽略它(不给任何变量赋值) ③前面加空格 空格%c ④在输入前加fflush(stdin);原创 2016-12-03 02:40:02 · 981 阅读 · 0 评论 -
数据类型
★数据类型 基本类型: 整型:短整型 short int -32768-32767 -2的15次到2的15次-1 基本整型 int -32768-32767 -2的15次到2的15次-1 长整型 long int -2147483648-2147483647 -2的31次到2的31次-1 字符型:char 浮点型:单精度型转载 2016-12-03 02:41:55 · 273 阅读 · 0 评论 -
malloc,ralloc,calloc
1.分配内存空间函数malloc调用形式: (类型说明符) malloc (size) 功能:在内存的动态存储区中分配一块长度为”size” 字节的连续区域。函数的返回值为该区域的首地址。 “类型说明符”表示把该区域用于何种数据类型。(类型说明符)表示把返回值强制转换为该类型指针。“size”是一个无符号数。例如: pc=(char *) malloc (100); 表示分配100个字节的内存空间,转载 2016-12-03 02:44:03 · 190 阅读 · 0 评论 -
冒泡排序
冒泡排序 对n个数进行冒泡排序的思路是: 如果要对n个数据排序,就需要进行n-1轮的比较,每次都对相邻两个数进行比较,将较大的数交换到后一个元素中。每1轮的比较都找出未排好的数据中的最大数放在这几个数的后面。 例如,第1轮需要比较n-1次,在n个数中找出最大数放在数组的最后1个元素中; 第2轮将对剩下的前n-1个数进行比较,需要比较(n-1)-1次,将前n-1个数中的最大者放入数组的转载 2016-12-03 02:45:13 · 386 阅读 · 0 评论 -
使用gdb调试段错误
我们打算使用gdb去解决为什么下面的程序(文件为segfault.c)引起了段错误的问题。下面的这段程序是从用户那里读入一行文本字串然后显示在屏幕上。然而,如下当前的程序并不会如期执行…<span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) {转载 2016-12-03 02:52:04 · 620 阅读 · 0 评论 -
在字符串中删除子串
题目:在asdhelloasdhellodfafafhello中删除hello 下面将每个函数写成.c文件1、找子串函数int my_strncmp(char *s1,char *s2){ int i; int len = strlen(s1); for(i = 0; i <len; i++) { if(*(s1 + i) != *(s2 + i)原创 2016-12-03 02:54:52 · 1375 阅读 · 0 评论 -
文件编程示例
#include <stdio.h> #include <string.h> struct node { char name[20]; int num; }; struct node s[3]; struct node f[3]; int main() { FILE *fp1; FILE *fp2; int i;原创 2017-01-17 22:54:34 · 239 阅读 · 0 评论 -
Linux内存管理(补)
1,在进程虚拟地址空间中:高地址的1G给内核,其余3G给用户,分为栈空间,堆空间,数据区,代码段。2,char ptr[100] = “hello world”; 保存于栈空间中数组所分配的空间,可写。 char *ptr = “hello world”; 指针存储地址,字符串存储于数据区or段,可读不可写。3,分配内存的三种方式: 1。从栈空间中分配; 2。从堆空间中分配;原创 2016-12-03 02:19:46 · 176 阅读 · 0 评论 -
右左法则举例
1,int ( ( *fp1) ( int ) ) [10]; 这是一个函数指针变量,指向一个形参为int,返回值为一个数组指针,该指针指向一个整型指针数组。2,int * ( *( *arr[5] ) ( ) ) ( ); 这是一个函数指针数组,该数组里的元素指向形参为空,返回值为一个函数指针,形参为空,返回值为int*。3,float ( *( *b( ) ) [ ] ) ( ); 这是原创 2016-12-03 02:01:52 · 285 阅读 · 0 评论 -
笔记
1,现有开发语言有哪些?大概用于什么方向? C++ 服务器后台程序,VR应用 java 网络 php 电商 c# Windows应用程序 .net 网络 Python 脚本 shell 脚本 OC iOS开发 2,嵌入式开发中为什么要用C语言 所有的操作系统内核都是C语言,C语言有出色的可移植性,可以直接访问硬件,具有很高的运行效率。 3,C语言与汇编语言混编时什么时候用什么语原创 2016-12-03 01:44:33 · 241 阅读 · 0 评论 -
日志2016.11.3
一、选择结构 if语句:if(x>0) y=1; else y=-1; 关系运算符:<;<=;>;>=;==;!= 逻辑运算符:&&与;||或;!非 多分支选择语句:switch() { case常量1:语句1 cas原创 2016-11-03 23:31:15 · 157 阅读 · 0 评论 -
练习题2016.11.7
1,求1-100的素数#include<stdio.h>int main(){ int a; int i; int n=0; int flag = 0; for(a = 2;a < 101;a++) { for(i = 2;i < a;i++) { if(a % i == 0)原创 2016-11-07 23:12:02 · 178 阅读 · 0 评论 -
c语言计算字符串中子串出现的次数
int substring1(char str,char str1,int n,int m) { int i,j=0,k; int x=0; for(i=0;i<=n-m;i++) { k = i; while (1) { if (str[k] != str1[j] ) { j=0;转载 2016-11-05 23:10:58 · 4629 阅读 · 0 评论 -
练习题2016.11.8
1,将字符串中间的数字移至字符串结尾,且不改变数字字符串与非数字字符串原有循序。#include int fun(char *s){ int i; int j = 0; int k = 0; char t1[80]; char t2[80]; for(i = 0; s[i] != '\0';i++) if(s[i] >原创 2016-11-08 21:56:07 · 174 阅读 · 0 评论 -
练习题2016.11.9
1,求字符间数字之和#include <stdio.h>#include <string.h>#define MAX_SIZE 100int main(){ int i; int sum = 0; int k = 0; char a[MAX_SIZE]; printf("the string is:\n"); scanf("%s",a); for原创 2016-11-09 23:25:04 · 237 阅读 · 0 评论 -
函数参数的传递和值返回
转载自http://blog.csdn.net/caihongdao123/article/details/51888275 函数参数的传递和值返回 一、函数参数传递 1.形式参数和实际参数 函数的调用值把一些表达式作为参数传递给函数。函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数。在函数调用之前,实际参数的值将被拷贝到这些形式参数中。 2.参数传递 先看一个例子:转载 2016-11-10 20:07:01 · 1238 阅读 · 0 评论 -
日志2016.10.31i
#includeint main(){ printf("Hello world!\n"); return 0;} 这只是一个非常简单的C语言程序。但在我看过的一本关于黑客的小说中这样描写到,主人公第一次在电脑上敲下这段代码,当程序执行后跳出“Hello world!”的字样时,他仿佛敲开了一座殿堂的大门,进入一个令人惊叹的世界。今天我也用这么一个小程原创 2016-10-31 21:44:33 · 170 阅读 · 0 评论 -
练习题2016.11.14
1,函数的嵌套,4个整数的最大值#include <stdio.h>int main(){ int a; int b; int c; int d; int max; int max4(int a,int b,int c,int d); printf("please enter 4 interger number:"); scanf("%原创 2016-11-14 01:03:06 · 227 阅读 · 0 评论 -
练习题2016.11.14
1,通过指针变量输出整型数组a的10个元素#include <stdio.h>int main(){ int i; int a[10]; int *p = a; printf("please enter 10 int number:"); for(i = 0;i < 10;i++) { scanf("%d",p++); }原创 2016-11-14 23:28:40 · 250 阅读 · 0 评论 -
“右左法则”
“右左法则” The right-left rule: Start reading the declaration from the innermost parentheses, go right, and then go left. When you encounter parentheses, the direction should be reversed. Once everything原创 2016-12-02 23:33:17 · 279 阅读 · 0 评论 -
练习题
逆序句子但不改变单词的拼写#include <stdio.h>#include <string.h>#define MAX_SIZE 1024void reverse_word(char *s2){ int i = 0; int j = 0; int low = 0; char temp; while(s2[i] != '\0') {原创 2016-12-03 00:11:00 · 157 阅读 · 0 评论 -
C语言实现密码输入功能
#include #include #include //非标准库 #include int main() { int n,p; char ch,acnt[256],pwd[256]; scanf("%d",&n); while(n--) { system(转载 2016-12-03 02:49:01 · 3213 阅读 · 0 评论