![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言笔记
大头白菜
学海无涯苦作舟
展开
-
使用for循环编写c程序,实现百钱买鸡问题
#include<stdio.h>int main(void){ int x, y, z; //设鸡翁x只, 鸡母y只, 鸡雏z只 printf("一共有一下几种买法:\n"); for(x=0; x<=20; x++) //鸡翁不可能超过20只 for(y=0; y<=33; y++) //鸡母不可能超过33只 for(z=0; z<=300; z++) //.原创 2021-11-14 21:15:26 · 2053 阅读 · 0 评论 -
C语言_链表_建一个链表
# include <stdio.h># include <malloc.h># include <stdlib.h>struct Node{ int data; //数据域 struct Node * pNext; //指针域 };//函数声明struct Node * create_list(void);void traverse_list(struct Node *);int main(void){ struct Node * pHe原创 2020-09-24 18:42:06 · 237 阅读 · 1 评论 -
C语言_字符串_利用指针将输入的字符串中的字符调换顺序后输出字符串
# include <stdio.h># include <string.h>void fun(char *w, int m){ char s, *p1, *p2; p1 = w; p2 = w + m - 1; while (p1<p2) { s = *p1++; *p1 = *p2 --; *p2 = s; }}int main(void) { char a[] = "ABCDEFG"; fun(a, strlen(a)原创 2020-09-18 08:42:04 · 1940 阅读 · 0 评论 -
C语言_字符串的地址以及指向字符串的指针变量的定义
一、字符串的地址以及指向字符串的指针变量的定义。 1. 字符常量:用单引号括起来的一个字符。 2. 字符串常量:用双引号括起来的一串字符。 3. 注意:由于变量只能存放一个字符,所以字符串只能存储在数组当中。 4. 用一维字符数组存放字符串:char str[] = “hello”; 5. 注意:字符数组可以没有’\0’,但字符串数组必须有’\0’二、字符串的赋值:1. 可以在定义字符指针变量的同时,将一个字符串赋值指针变量。例如:char *ps1 = “form one” 把存放字符串原创 2020-09-17 23:14:04 · 11692 阅读 · 1 评论 -
C语言_字符串_将键盘输入的大写字母转换为小写
# include <stdio.h>char fun(char *c){ if (*c<='Z' && *c>='A') //满足条件:*c是大写字母 *c-='A'-'a'; //*c = *c + 32;经典的大小写转换 return *c;}int main(void){ char s[81], *p=s; //分配一个空间为81的字符数组 gets(s); //输入s字符 while(*p) { *p = fun(p)原创 2020-09-16 08:29:15 · 4311 阅读 · 0 评论 -
C语言_数组_二维数组的定义和二维数组元素的引用
通过赋初值定义二维数组的大小第一种:例如:int a[][3] = {{1, 2, 3}, {4, 5}, {6}, {8}};注意: 对于二维数组,省略只能省略第一个方括号中的常量表达式如上的初赋值语句等同于: int a[4][3] = {{1, 2, 3}, {4, 5}, {6}, {8}};第二种:int = c[][3] = {1, 2, 3, 4, 5}; 要计算第一个空的方括号中的值x: 当花括...原创 2020-09-14 18:02:54 · 2799 阅读 · 8 评论 -
C语言_数组_一维数组和指针
一维数组和数组元素地址 int a[5];引用五个元素地址:&a[0]、&a[1]、&a[2]、&a[3]、&a[4]直接输出a,发现a与&a[0]相等数组名a也表示地址数组名代表数组的首地址,也就是第一个元素的地址注意:不可以给a赋新的值!通过循环移动指针给数组赋值 int *p, a[10]; for (p=a; p-a<10; p++) { scanf("%d", p); }通过数组的首地址引用数组元素.原创 2020-09-13 09:50:14 · 417 阅读 · 0 评论 -
C语言_数组:编写程序,定义一个含有30个元素的int类型数组。依次给数组元素赋奇数1、3、5......, 然后按每行10个数顺序输出, 最后再按每行10个数逆序输出。
/*题目:编写程序,定义一个含有30个元素的int类型数组。依次给数组元素赋奇数1、3、5.。。。。。,然后按每行10个数顺序输出, 最后再按每行10个数逆序输出。*/# include <stdio.h># define M 30int main(void){ int s[M], i, k = 1; for (i=0; i<M; i++) { s[i] = k; k += 2; } printf("\nSequence Output:\n");原创 2020-09-05 21:07:08 · 4156 阅读 · 0 评论 -
C语言_地址和指针:用地址传递找两个数的最大值
# include <stdio.h>int *fun(int *, int *);int main(void){ int *p, i, j; printf("Enter two number:"); scanf("%d%d", &i, &j); p = fun(&i, &j); printf("i=%d, j=%d, *p=%d\n", i, j, *p); //*p输出a,b的最大值 return 0;}int *fun(int原创 2020-09-05 15:20:36 · 379 阅读 · 0 评论 -
C语言_地址和指针:编写函数order(int *a, int *b), 使调用函数中的第一个实参总是存放两个数中的较小数, 第二个参数存放两个数中较大的数
函数之间地址值的传递/* 题目:编写函数order(int *a, int *b),使调用函数中的第一个实参总是存放两个数中的较小数,第二个参数存放两个数中较大的数 */# include <stdio.h>void swap(int *x1, int *x2){ int t; t = *x1; *x1 = *x2; *x2 = t;}void order(int *a, int *b){ if (*a > *b) swap(a, b);}i原创 2020-09-05 00:17:29 · 375 阅读 · 0 评论 -
C语言_地址和指针:形参为指针变量时实参和形参之间的数据传递
# include <stdio.h>int myadd(int *a, int *b) //指针变量作为形参{ int sum; sum = *a + *b; /* 先找到a,b中存储的地址,然后根据地址找到地址所指向的空间,并把空间当中的值取出 */ return sum;}int main(void){ int x, y, z; printf("Enter x,y:"); scanf("%d%d", &x, &y);原创 2020-09-04 20:24:37 · 1742 阅读 · 0 评论 -
C语言_地址和指针:用指针指向两个变量,通过指针运算选出值最小的那个数
/* 题目:用指针指向两个变量,通过指针运算选出值最小的那个数 */# include <stdio.h>int main(void){ int a, b, min, *pa, *pb, *pmin; pa = &a; pb = &b; pmin = &min; scanf("%d%d", pa, pb); //pa,pb已经是地址,所以不用加& printf("a=%d b=%d\n", a, b); *pmin = *pa原创 2020-09-03 20:25:53 · 367 阅读 · 1 评论 -
C语言_地址和指针:int定义中的指针变量和间址运算符的区别
间址运算符:通过指针来引用一个存储单元# include <stdio.h>int main(void){ int k, *q, *p; /* 这里的*q, *p与下面的不同,定义中的*p只是用来存放地址的指针变量 */ k=1; q=&k; p=q; printf("%d\n%d\n%d\n", k, *q,*p); /* *q, *p为间址运算符; *p代表的意思: 先找到p中存储的地址,然后根据地址找到地址所指向的空间,原创 2020-09-03 20:01:50 · 1295 阅读 · 0 评论 -
C语言_地址和指针:间址运算符
间址运算符说明:间址运算符:通过指针来引用一个存储单元1.*与&是逆运算例子(1):k = *(&i);结果k = i ,*与&相互抵消例子(2):p = &k;k = 100;printf("%d\n", *p);结果:1002.在指针变量已经存有某一变量地址时,可以利用“ *变量 = 值 ”的形式给指针变量指向的内存空间赋值int k = 10, *p = &k;*p = 12;printf("%d\n", k);结果:123原创 2020-09-03 19:56:59 · 5770 阅读 · 1 评论 -
C语言_地址和指针:指针变量*k和**k的不同
指针变量:只是用来存放内存地址的变量# include <stdio.h>int main(void){ int **k, *a, b = 100; /* 假设a的房间号(地址)为1001,即&a=1001; b的房间号为1002,即&b=1002 */ a = &b; //a存放b的地址,a=1002 k = &a; //k存放a的地址, k=1001 printf("%d\n", **k); /* *k指向k原创 2020-09-03 17:59:00 · 2632 阅读 · 1 评论 -
C语言_函数_地址和指针:值传递和地址传递的区别
函数调用中,实参的数据和形参对应传递,有两种传递方式:1.值传递(只传送值,实参不做改变)2.地址传递(传送地址,实参被改变)# include <stdio.h>void swap(int, int);int main(void){ int x = 10, y = 20; printf("(1)x=%d y=%d\n", x, y); swap(x, y); //调用函数swap printf("(4)x=%d y=%d\n", x, y); return原创 2020-09-02 17:44:44 · 1408 阅读 · 0 评论 -
C语言_循环:break和continue的区别,以及return
break是结束循环,向下跳,即满足条件跳出循环/* 题目(break):从1-5,到3的时候结束输出 */# include <stdio.h>int main(void){ int i; for (i=1; i<=5; i++) { if (i == 3) break; //若i=3,则break结束if语句,向下跳,printf输出i printf("%d\n", i); } return 0;}/*结果:12*/continue原创 2020-09-01 22:14:56 · 227 阅读 · 0 评论 -
C语言_循环嵌套(质数/素数):找2-100之间的素数/质数
什么是质数/素数:只能够被1和自身整除的数,2是最小的质数/* 题目(质数):找2-100之间的素数 */# include <stdio.h>int main(void){ int i, k, tag; for (i=2; i<=100; i++) //i是1-100之间的数 { tag = 0; //tag表示标志 for (k=2; k<i; k++) //k是1到i之间的任意一个数 { if (i%k == 0) //如果i被k整除原创 2020-09-01 21:28:28 · 5702 阅读 · 0 评论 -
C语言_循环(斐波那契数列):计算斐波那契数列,直到某项大于1000终止,输出该项的值。
/* 题目(斐波那契数列):计算斐波那契数列,直到某项大于1000终止,输出该项的值。f1 = 1, f2 = 1, f3 = 2, f4 = 3... , fn = fn-1 + fn-2规律:1 1 2 3 5 8 13,即前两项相加的和等于第三项*/# include <stdio.h>main(void){ int f1 = 1; int f2 = 1; int f; //定义第三项 do { f = f1 + f2; //f为前两项相加 f1 = f原创 2020-09-01 16:24:25 · 2441 阅读 · 0 评论 -
C语言_循环(精度处理):Π/4 = 1 - 1/3 + 1/5 - 1/7..., 求Π的近似值, 最后一项的绝对值小于1e-6为止
/* 题目(精度处理):Π/4 = 1 - 1/3 + 1/5 - 1/7..., 求Π的近似值, 最后一项的绝对值小于1e-6为止 */#include <stdio.h>#include <math.h> /*利用#include <math.h>加载数学函数fabs(),取小数绝对值*/main(){ int n = 1; int i = 1; double pi = 0.0; while (fabs(1.0/n) >= 1e-6)原创 2020-09-01 15:05:13 · 3962 阅读 · 2 评论