C语言例题
文章平均质量分 90
C语言例题
Mr.GaoMq
一个学编程的小白
展开
-
结构体基础例题
以下是后面例题所涉及到的文章,如果有不会的可以点击查看。原创 2024-10-19 09:00:00 · 836 阅读 · 0 评论 -
C语言指针基础题(三)
int *const p的const修饰的是p,int const *p的const修饰的是 *p(其实const修饰的就是const后面部分),p和 *p很明显是不等价的,因为p其实是一个指针变量,p指向的地址是不能被修改的,而 *p则是对p解引用后的结果是不能被修改的,所以这两个是不等价的。B :const int *p中const修饰的是 *p(const int *p等价于int const *p),int *const p的const修饰的是p,所以上不等价的。**答案 C **原创 2024-10-18 09:00:00 · 1005 阅读 · 0 评论 -
C语言指针基础题(二)
为了知道水仙花数有多少位,我们需要用到一个while循环,循环判断条件位水仙花数的余数不为0,因此我们使用一个变了j来保存水仙花数i,然后再进行判断,既while(j%10)“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5 ^3+3 ^3,则153是一个“水仙花数”。而为了计算有多少位,我们需要对每次循环用count来记录,然后每次循环让水仙花数减少一位数,也就是count++,j=j/10。我们用i来表示水仙花数,通过for循环来表示0到100000的水仙花数。原创 2024-10-17 09:00:00 · 908 阅读 · 0 评论 -
C语言指针基础题(一)
以下系统中,int类型占几个字节,指针占几个字节,操作系统可以使用的最大内存空间是多大:( )A.32位下:4,4,2^32 64位下:8,8,2^64B.32位下:4,4,不限制 64位下:4,8,不限制C.32位下:4,4,2^32 64位下:4,8,2^64D.32位下:4,4,2^32 64位下:4,4,2^6432位系统下:int占4个字节,指针表示地址空间个数,总共有2^32个,故占4个字节64位系统下:int占4个字节,指针表示地址空间个数,总共有2^64个,故占8个字节注原创 2024-10-14 11:38:49 · 1065 阅读 · 0 评论 -
C语言算术转换例题
事实上也确实是如此,原创 2024-10-16 09:00:00 · 809 阅读 · 0 评论 -
C语言操作符例题
而三式a=a^b其实就是a=a ^b ^a,其中a ^b是一式带入的,利用交换律我们就可以变成a=a ^a ^b,所以最后a=b。b=c=7,然后再执行后面的c++,++a,a++(后面还是会执行的,只不过和b就没关系了),最终c=8.a=8。b+=a++ +c先变成b=b+a++ +c再执行a=a+1=9,b=b+a+c=7+8+8=23。c=++a是先执行++a,也就是a=a+1=6(注意这里是永久改变a的值),然后再执行c=a=6。一式a=a^b ,二式b=a^b, 三式a=a^b。原创 2024-10-15 09:00:00 · 765 阅读 · 0 评论 -
C语言数组和指针笔试题(五)
解析a[5]是一个整形类型的数组,&a是取的整个数组的地址,因此&a+1就是跳过整个数组,(int*)是强制类型转换,是将&a+1强制转换成int类型的指针(&a+1也可以写成int(*)[5])*(a+1)中的a是数组首元素的地址,a+1=&a[1],解引用结果就是a[1]=2ptr-1这里就要好好说一下了,我们用一个图来表示如图因为&a+1是跳过整个数组,因此ptr的地址在a[4]之后,与a[4]相差4个字节,而ptr-1是跳过1个元素,也就是往前跳过4个字节,因此ptr-1的地址其实就是&a[4原创 2024-10-04 23:17:44 · 993 阅读 · 0 评论 -
C语言数组和指针笔试题(四)
在做之前我们再来复习一下数组名的意义1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。3. 除此之外所有的数组名都表示首元素的地址*这里的a是整个数组,所以sizeof会计算整个数组的内存大小,因此结果就是(3*4)(数组的元素)4(整形类型的大小)=48这里的a[0][0]是指的数组首元素,因为是特别指定的一个元素,所以只需要计算整个元素的内存大小即可,因此a[0][0]是一个整形类型的元素,结果就是原创 2024-10-02 09:23:59 · 1324 阅读 · 0 评论 -
C语言数组和指针笔试题(三)
例题1这里的arr是代表的整个字符串,由于字符串中的字符分别是’a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘\0’,而strlen计算几个是除掉\0,因此结果为6arr+0=&arr[0],&arr[0]是第一个字符a的地址,因此strlen会从第一个字符a开始寻找\0,所以结果是6,因为数组的储存地址是连续的,所以先取寻找数组中的\0在哪,如果数组中没有\0,就会越界查找,知道找到\0*arr是对arr首元素地址进行解引用是字符a,并没有\0,所以会报错这里其实和例题3是一样的,arr[1]原创 2024-10-01 08:29:40 · 1291 阅读 · 0 评论 -
C语言数组和指针笔试题(二)
目录字符数组二例题1例题2例题3例题4例题5例题6例题7总结字符数组三例题1例题2例题3例题4例题5例题6例题7字符数组二char arr[] = {'a','b','c','d','e','f'}1:printf("%d\n", strlen(arr));2:printf("%d\n", strlen(arr+0));3:printf("%d\n", strlen(*arr));4:printf("%d\n", strlen(arr[1]));5:printf("%d\n", strlen(原创 2024-09-29 22:42:05 · 1197 阅读 · 0 评论 -
C语言数组和指针笔试题(一)
arr+0在之前说过,这里的arr不是整个数组的地址,是首元素的地址,因此arr+0=arr[0],既然是地址那么结果就是4或者8。这里的**&a是整个数组的地址**,* 对整个数组解引用,因此sizeof( *&a)就是计算的整个数组的大小,所以结果就是16。arr[0]+1跳过一个元素,所以就是arr[1],但是还是地址,所以仍然是4或者8。因此**&a是整个数组的地址,既然是地址那么结果还是4或者8个字节**,虽然二者地址是一样的,但是本质是有区别的,因此。这里求的是第二个字符b,所以结果是1。原创 2024-09-26 18:23:57 · 869 阅读 · 1 评论