编程语言
文章平均质量分 91
一只会笑的小猪
这个作者很懒,什么都没留下…
展开
-
NAT的几种类型
一、概念NAT(Network Address Translation,网络地址转换),当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。要真正了解NAT就必须先了解现在IP地址的适用情况,私有IP地址是指内部网络或主机的IP 地址,公有IP地址是指在因特网上全球唯一的IP地址。RFC ...原创 2018-09-27 15:40:17 · 22372 阅读 · 3 评论 -
数据库遍历
int inquire_nocb(sqlite3 *db){int nrow,ncolumn;char **azresult;char *sql;char *errmsg = NULL;int i;sql = "select * from txl;";if(sqlite3_get_table(db,sql,&azresult,&nrow,&ncolu原创 2016-11-18 21:57:50 · 810 阅读 · 0 评论 -
关于feof函数多读一次的问题
在完成通信录的过程中总是多读出一个0,对此我进行了多次调试。下面是成功的代码void load_txl(Link *head){Link temp = *head;Link newnode = NULL;FILE *fp;int i;if((fp = fopen("txl.txt","r")) == NULL){printf("打开失败!\n");原创 2016-11-16 19:39:11 · 1900 阅读 · 0 评论 -
threehello
#include #include #include #include #include #include #include #include #define MAX 100int read_line(int fd,char *buf,int count){int i;char ch;for(i = 0;i {if((re原创 2016-11-12 22:08:48 · 201 阅读 · 0 评论 -
题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数
#include int main(){int i,j;int sum;for(i = 6;i {//赋值为因子和sum=i;for(j = 1;j {//总数减去因子if(i % j == 0){sum=sum-j;}} //减去所有的因子 if(sum == 0)原创 2016-10-30 20:04:52 · 1625 阅读 · 0 评论 -
.题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数
#include int fun(int num){static int count=0; //每一位与1判断if(num % 2 & 1 == 1){count++;} //除二判断下一位if(num >> 1 >= 2)fun(num >> 1); //判断最后一位if(num >> 1 == 1原创 2016-10-29 21:51:07 · 1167 阅读 · 0 评论 -
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位. 提示:用数组完成
#include #define N 5 //指定一群中的人数int main(){int i,k;int a[N+1],*p; //循环赋值for(i = 0,p = a;p {*p=i;}p = a + 1;for(i = 0,k = N;k > 1;p++){//指向末尾后从头指if(p >原创 2016-10-29 21:49:22 · 1129 阅读 · 0 评论 -
fifo有名管道的读操作
#include #include #include #include #include #include #include #define FIFO_SEVER "/tmp/fifosever"int main(int argc,char **argv){ char r_buf[4096*2]; int fd; i原创 2016-11-21 21:03:20 · 298 阅读 · 0 评论 -
有名管道的写操作
#include #include #include #include #include #include #include #define FIFO_SEVER "/tmp/fifosever"int main(int argc,char *argv[]){ int fd; char w_buf[4096*2];原创 2016-11-23 17:39:41 · 254 阅读 · 0 评论 -
创建一个简单的XML文件
操作系统是Ubuntu16,编辑器是VScore,编译器是gcc。下面附上完整的代码: #include <stdio.h>#include <libxml/parser.h>#include <libxml/tree.h>int main(){//定义文档和节点指针xmlDocPtr doc = xmlNewDoc(BA...原创 2018-09-04 09:56:37 · 3153 阅读 · 0 评论 -
可调闹钟lcd时钟
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<intrins.h>#include "i2c.h"//sbit LATCH1=P2^2; //定义锁存使能端口 段锁存//sbit LATCH2=P2^3; //位锁存sbit RS = P2^4; //定义端口 sbit RW = P2^5;原创 2017-02-08 19:30:37 · 608 阅读 · 0 评论 -
题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来 提示:需要排数的数字通过参数传递进来, 例如:输入:./a.out -1 2.1 -3 5 7 输出: -3 -1 2.1
#include #include #define MAX 999 //足够大的数使其正数参加排序int main(int argc,char *argv[]){int i,j;float a[100],temp = 0.0;for(i = 0;i {printf("%s ",argv[i]);a[i]= atof(argv[i])+原创 2016-10-29 21:47:07 · 964 阅读 · 0 评论 -
从一个字符数组中读出相应的整数、实数
#includeint main(){ char sp[] = "qw1234u23.45p98"; char *p = sp; float a[80]; int num = 0,cn = 1,i; float value = 0.0; while(*p != '\0'){ // 指向数字的原创 2016-10-29 21:45:17 · 703 阅读 · 0 评论 -
字符串数组的冒泡排序,从小到大
#include #include void sort(char a[][10],int n){int i,j;char temp[10];//冒泡排序for(j = 0;j for(i = 0;i if(strlen(a[i])>strlen(a[i+1])) //比较字符串长度{strcpy(temp,a[i]);strcpy(a[i原创 2016-10-29 21:44:17 · 3085 阅读 · 0 评论 -
数据的存储类型
C语言中的每个变量有两个属性:数据类型(整形、浮点型、字符型),还有数据存储类别,分别为自动的(auto),静态的(static),寄存器的(register)和外部的(extern)。下面对它们进行逐一说明:auto类型:其实在函数中的局部变量,不加特殊声明,都是auto变量,但是关键字"auto"可以被省略。这些变量在函数被表用时分配存储方式,函数调用结束后这些存储空间就被释放了。原创 2016-10-16 17:07:51 · 1052 阅读 · 0 评论 -
程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。
#include #include struct node{int num;struct node * next;};typedef struct node Node;typedef struct node * Link;void creat_link(Link * head){*head = NULL;}//ma原创 2016-11-06 20:31:22 · 3935 阅读 · 0 评论 -
数组指针与指针数组
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2016-09-26 20:23:21 · 305 阅读 · 0 评论 -
野指针如何避免
任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指设为NULL,要么让它指向合法的内存。指针释放后之后未置空有时指针在free或delete后未赋值 NULL,便会使人以为是合法的。别看free和delete的名字(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本转载 2016-09-26 20:03:32 · 279 阅读 · 0 评论 -
打印空心菱形
#include int main(){int i,j,k;int n,m;printf("Enter a jishu:");scanf("%d",&n);m=(n+1)/2;for(i=1;i{for(k=0;kprintf(" ");printf("*");if(i==1){printf("\n");continue;原创 2016-10-21 23:22:59 · 490 阅读 · 0 评论 -
atof函数的实现
#include double my_atof(char *s){int flag=1;double sum=0.0;if(s==NULL)return 0;while(*s==' ')s++;if(*s=='-'){flag=-1;s++;}else if(*s=='+'){s++;}while(*s='0'){原创 2016-10-21 23:16:14 · 1152 阅读 · 0 评论 -
strncmp的实现
#include int my_strncmp(char *s1,char *s2,int n){if(!n)return 0;while(--n&&*s1&&*s2&&*s1==*s2)//比较到前n个字符退出循环,如有一个条件不满足也退出,s1到末尾,s2到末尾则退出{s1++;s2++;}return(*s1-*s2);}int main(原创 2016-10-21 23:13:34 · 1024 阅读 · 0 评论 -
二分排序
#include <stdio.h>int main(){int i,j,a[10];int mid,low,high,temp;srand((unsigned int) time(0)); //随机种子 //随机数组for(i = 0;i < 10;i++){a[i] = rand() % 100;} for(i = 0;i &l...原创 2016-10-29 21:43:23 · 205 阅读 · 0 评论 -
对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一行, 将除第一行外的行中最小元素所在行调整为第2行, 将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推
#include //移动行void lineswap(int a[],int b[]){int i,temp;for(i = 0;i {temp = a[i];a[i] = b[i];b[i] = temp;}}int main(){ int a[4][4] = {{13,2,34,6},{25,1,78,32},{76,98,4,9原创 2016-10-29 21:42:00 · 805 阅读 · 0 评论 -
将整数转换为相应的一个字符数组。 分析:从个位提取数字,组合字符 符号位的处理 12345=>"12345"
#include #include void my_itoa(int n,char a[]){int flag = 1,i,j,len;char s[10];if( n {flag = -1;n = -n;} //依次输出字符while(n > 0){a[i] = n % 10 + '0';n = n / 10;原创 2016-10-29 21:40:57 · 692 阅读 · 0 评论 -
编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字
#include #include void change(char *a,char *b,char *c){int i,n,m,k,temp;n = strlen(b);k = 0;m = 0;//倒序输出字符串for(i = 0;i {temp = b[i];b[i] = b[n - 1 - i];b[n - 1 - i] =原创 2016-10-29 21:39:54 · 1864 阅读 · 0 评论 -
合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串。 如: s1集合{“while”,”for”,”switch”,”if”,”continue”
#include #include int main(){char s1[5][10]={"while","for","switch","if","continue"};char s2[6][10]={"for","case","do","else","char","switch"};char s[10][10];int i,j,k; //字符串拷贝f原创 2016-10-29 21:36:52 · 490 阅读 · 0 评论 -
找出7个默森尼数,法国数学家默森尼曾提出下列公式:Mp=2^p-1。当p是素数,Mp也是素数时,称Mp为默森尼数, 例如,p=5,Mp=2^5-1=31,5和31都是素数,因此31是默森尼数;而Mp
#include #include //判断Mp是否为素数int prime1(int Mp){int i;for(i = 2;i {if(Mp % i == 0)return 0;}return 1;}//判断p是否为素数int prime2(int p){int i;for(i = 2;原创 2016-10-29 21:35:15 · 1202 阅读 · 3 评论