
c语言
史戚丶
这个作者很懒,什么都没留下…
展开
-
关于字符数组和字符指针
#include<stdio.h>void main(){char a[]="abcdefg";char *p="abcdefg";}对于字符数组a,其中的内容是可以改变的。可以再次对某个元素赋值如 a[2]=‘r’; 正确a中存放首字符的地址,但不可被改变。a=“adeafsa”; 错误对于字符指针变量p,它指向了一个字符串常量,而常量被保存在常量区,是不可改变的如*p=‘r’; 错误不过可以对指针变量p整体赋新值如p=”olmesa“ ; 正确p=a;原创 2021-01-31 11:29:25 · 201 阅读 · 0 评论 -
最大公约数和最小公倍数
#include<stdio.h> int main(){ int a,b,c,r,m; scanf("%d%d",&a,&b); if(a<b){ c=a; a=b; b=c; } m=a*b; do{ r=a%b; a=b; b=r; } while(r); printf("最大公约数是%d",a); printf("最小公倍数是%d",m/a); return 0;} 求最大公约数和最小公倍数的算法输入两原创 2020-11-13 10:16:17 · 320 阅读 · 0 评论 -
格式的输入和输出
printf格式输出函数printf(格式控制字符串,输出项列表);一般输出项的类型和个数与格式控制保持一致,输出时严格按照格式控制输出;d格式符%d,正常输出十进制带符号整数;%md,m指定数据的宽度,指定的m大于实际宽度左补空格;%-md,m指定数据的宽度,指定的m大于实际宽度右补空格;ld格式符和d格式符一样,只不过可以输出长整型数据,ld格式符可以用来输出long型个int型;o格式符以8进制数输出整数,不会出现负的8进制数;如int i=-1; -1的补码为FFFFHpri原创 2020-11-10 11:25:46 · 641 阅读 · 0 评论 -
字符和字符串函数的总结
#include<stdio.h>#include<string.h>char c;char a[100];getchar()c=getchar(); 从键盘上输入一个字符给c;getchar(c);×错误putchar()putchar(c);把c输出到屏幕上;gets()gets(a);从键盘上输入一个字符串赋给a数组与scanf(“%s”,a)的区别gets()以回车作为结束标志,一次只能给一个字符数组赋值,不可以指定字符串长度,可以输入空格;sca原创 2020-11-09 11:22:21 · 167 阅读 · 0 评论 -
关于&&和||的优先级问题
#include<stdio.h>int main(){ int x=2,y=2,z=0; ++x||++y&&z++; printf("%d,%d,%d",x,y,z);//结果是3,2,0}大家理所当然的认为是先按优先级运算++x,++y,z++,表达式为3||3&&0(1);教科书上写的&&的优先级比||要高,所以大家又理所当然的认为表达式的求值顺序为3||(3&&0)c把先计算哪部分的决定权留个设计者,但&原创 2020-11-08 10:33:50 · 6777 阅读 · 3 评论 -
用递归的方法将整数n转换成字符串
int main(){void aaa(int); int n; scanf("%d",&n);//输入正整数n aaa(n);}void aaa(int n){ int m; m=n%10; n=n/10;/* printf("%c",m+48); if(n) 输入1234,输出4321 aaa(n); */ if(n) aaa(n); printf("%c",m+48);//输入1234,输出1234}此函数为不带返回值的递归函数原样输出:用n/10判断原创 2020-11-07 14:37:53 · 2988 阅读 · 2 评论 -
指向一维数组的指针和指针数组
int a[2][4]={1,2,3,4,5,6,7,8};int (*p)[4];p=a; //正确p=a[0] //错误由于[]优先级高,所以*p加括号,int (*p)[4]这种写法首先说明了p是一个指针,指向了具有4个int类型的一维数组;所以给p赋值时应该赋有行地址属性的地址int a[2][4]={1,2,3,4,5,6,7,8};int *p[2]={a[0],a[1]};printf("%d,%d,%d",**p,*p[0],p[0][0]);//输出1,1,1int原创 2020-11-06 10:56:28 · 1187 阅读 · 0 评论 -
变量的作用域和存储方式
按作用域可分为局部变量:函数级局部变量,复合语句级局部变量,这种类型的变量在本函数或本复合语句内有效,在其他范围内无效。全局变量:在函数外定义,从定义开始到本文件结束有效。按存储方式可分为静态存储区存储:全局变量和static变量全部存放在静态存储区,从定义开始占用内存一直到本文件结束释放内存,存放在静态存储区的局部变量并不随着局部程序的结束而被释放,但是其他函数或复合语句也不能引用。存放在静态存储区的变量不赋初值则自动为0;动态存储区存储:如一些不加static的局部变量均存放在动态存储区,这些原创 2020-11-04 11:04:24 · 429 阅读 · 0 评论 -
将十进制正整数依次转换成2进制8进制16进制
#include<stdio.h>int main(){ char a[]="0123456789ABCDEF"; int n,m,b[20],i,base,j; scanf("%d",&m); for(i=0;i<3;i++){ if(i==0) base=2; else if(i==1) base=8; else base=16; j=0; n=m; //初值赋给n while(n){ b[j]=n%base;原创 2020-11-04 09:31:03 · 809 阅读 · 0 评论 -
关于字符串的长度和大小的定义
char a[]=“aaaaa”;字符串长度为5,数组长度(大小)为6;char b[5]=“aaaaa”;字符串长度不确定,数组长度(大小)为5;char c[10]=“aaaaa”;字符串长度5,数组长度(大小)为10;字符串长度的定义:以首个‘\0’为结束存放字符的个数;字符数组长度的定义:数组所占存储空间的实际大小;把字符串长度和数组长度区分开;把数组长度和数组大小区分开;int a[5]={1,2,3,4,5};数组a的长度为5,大小(sizeof)为20;...原创 2020-11-03 10:12:57 · 15964 阅读 · 0 评论