关于C语言程序的一个简单题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言程序的一个简单题相关的知识,希望对你有一定的参考价值。
谁来帮我详细讲解一下啊,讲的好就追加20分。
有以下程序段
char arr[]="ABCDE";
char *ptr;
for(ptr=arr;ptr<arr+5;ptr++)
printf("%s\n",ptr);
输出结果是(D)
D).
ABCDE
BCDE
CDE
DE
E
这里\0代表的是一个空字符。
sizeof()当括号里头是数组名的时候 它计算的是整个数组的长度。所以是7。
strlen()是计算字符串的长度。c里头字符串是以空字符结尾作为字符串结束的标志
所以strlen()在遇到空字符的时候就已经认为字符串结束了。所以这里它只认为字符串的长度为2.是a和0。空字符不计算在内。
int main()
char a[7]="a0\0a0\0";
int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d %d\n",i,j);
printf("%s",a);
system("pause");
return 0;
printf()输出字符数组
整个输出是
7 2
a0
可以看到空字符是字符串结尾的标志是很重要 因为很多函数是基于此来运用的。 参考技术B char arr[]="ABCDE"; //声明一个字符数组
char *ptr; //声明一个字符指针;
for(ptr=arr;ptr<arr+5;ptr++)
printf("%s\n",ptr);
第一次循环,ptr指向数组首地址;从A开始打印;
第二次,ptr++指向数组首地址+1;从B开始打印;
...
依次推就能得出答案;
你一定会继续问:那为什么不输出ABCDE?
原因在于,printf函数输出数组型字符串时,从数组名标记的地址开始读取内容,直到内存中出现标记为‘\0’的内存单元才停止.
char arr[]="A\0B\0C\0D\0E\0";
char *ptr;
ptr = arr;
for(ptr=arr;ptr<arr+10;ptr++)
printf("%s",ptr);
将会得出ABCDE的打印
回答完毕!不知是否满意;
参考资料:工作经验
本回答被提问者采纳初中递归题
C语言(不要c++)
要题目(简单的,如阶乘,汉诺塔,四色地图, 1 2 3,1 3 2, 2 1 3生成排列,这四个难度的,适合初中二年级)
只要题目,不要答案。越多越好。
楼梯有N阶,上楼可以一步上一价,也可以一次上二阶。编一个程序,计算共有多少种不同的走法。
某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况。
有一天小猴子摘若干个桃子,当即吃了一半还觉得不过瘾,又多吃了一个。第二天接着吃剩下桃子中的一半,仍觉得不过瘾又多吃了一个,以后小猴子都是吃尚存桃子一半多一个。到第10天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子。
写一个计算斐波那挈数列的递归函数(即后面一项为前两项之和)。
honoi问题: 设有三个塔座,依次命名为x,y,z。有z个直径不同的圆盘,由小到大依次编号为1、2、……,n。开始时,它们全部按递减的次序插在塔座上。现要求按下列规则把n个圆盘按次序插放在z塔座上。
(1)每次只能移动一个圆盘;
(2)圆盘可以从任一个塔座上移到另一个塔座上;
(3)任何时刻都不能把一个较大的圆盘压在较小的圆盘上。
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
有一栋楼房,假设有100层,我从第100层往下拣钱
每一层的钱等于楼层数 X 10 。例第1层是 1X10 = 10块钱
求100层我共拣到多少钱?
有一栋楼房,假设有10层。每一次的钱等于,
我从第10层往下拣,当前层的钱 = 以前层累加的钱
X 当前层数-1。问10层楼我共拣多少钱?[可以假设第1层是7块钱] 参考技术A 计算第n个斐波那契数
计算求两个正整数的最大公约数
输入4个1-10的整数,利用加、减、乘、除和括号,如果可以计算得到24(这个比较难)
以上是关于关于C语言程序的一个简单题的主要内容,如果未能解决你的问题,请参考以下文章