请教C语言高手一个问题~~

请教C语言高手一个问题~

abcdef输出为fabcde.

程序加上注释为:
#include
#include

void fun(char* str)
{
char temp;
int n,i;

//取得str的长度
n=strlen(str);

//将最后一个字符赋值给temp;
// 注意数组下标从0 开始,故这里要用n-1
temp = str[n-1];

//循环将数组前一个位置的值赋值到当前位置.
//当i 值减小到0 的时候退出,也就是说str[0]的值还是原来的值,没有变
for(i=n-1; i>0 ;i--)
{
str[i]=str[i-1];
}

//将temp的值赋值到数组的第一个位置,也就是0位
str[0]=temp;
}

main()
{
char s[50];
scanf("%s",s);

fun(s);

printf("%s
",s);

return 0;
}

函数调用fun(s), 是传递char* 过去, 传递的是数组的指针. 指向数组的首地址, 具体值和&s[0]是一样的. 2者还是有区别的, s 在函数传递时表示的是指向数组的指针, 而&s[0]表示的是数组第0个元素的地址, 含义不一致,但是具体值是一致的.

printf("%x
",0xcffffff3>>2);中的0xcffffff3没有赋给变量,编译器把它按其大小解释为无称号数;而int f = 0xcffffff3;中的f是int型,0xcffffff3由于最高位是1,就按负数取补存放了。无论正数负数,右移位时符号位是跟随的,所以造成结果不同。

scanf 函数,要加入地址符号&,scanf 在读取字符串的时候;

会把空格作为结束符,所以就出现了下面的情况:

aa
bb

而scanf 函数结束的时候,会向下传递一个回车符,这个回车符,就被 gets(a3); 接收到了,

所以第三行是空行,没有内容;

第四行显示的 cc dd 其实是 gets(a4) 内的值。



scanf函数遇到空格和回车就结束!所以a1接收的是aa,a2接收的是bb;而gets以回车为结束符,可以接收空格键;所以第一行的回车被a3作为结束符,a4接收的是cc dd ;a3其实是空的!

scanf遇到空格、换行、等字符时,认为输入结束。
gets只有遇到换行时才认为输入结束。

赋值后a1 = "aa", a2 = "bb", a3 = "cc dd", a4 = "\0"(就是那个回车)
最后光标停在第5行

aaaaaaaa啊啊啊啊啊啊啊啊啊

关于C语言的一个问题,高手请进
答:好吧,我来回答吧,其实是不需要的,我还特意测试了一下,编译成功而且调用过程都没有问题 解释一下,a.c文件中调用了b()函数,a.c包含了b.h头文件,所以a.c文件能正常调用b()函数,这点大家应该都没有问题,但main()中通过调用a()来间接调用b()函数需不需要b()的头文件呢,答案是不需要...

C语言新手请教C语言问题,求大神解答
答:你应当输入字符型变量,所以:int letter;改为char letter;scanf("%d",&letter);改为scanf("%c",&letter);

请教一个C语言问题,谢谢您的回答!
答:问题还真不少哦,拙见如下:1、我们知道一个数组的数组名就是该数组的首地址,把么也就是一个指针了,所以A是指向一个二维数组的指针。(我们不妨将A[0]、A[1]记为x、y。那么A指向的数组就是x[3][4]、y[3][4])2、因为一个数组的元素个数前面的标识符,我们可以看作是该数组的数组名,...

请教C语言高手,这道题我编写的有点迷茫,请高手指点。
答:字符数组定义后,数组单元的内容并没有自动设定为空,所以你不能用' '来判断字符串是否结束。通过格式输入获取的字符串结束符是‘\0’。判断字符串结束的循环条件可以改为:i=0;while(a[i]!='\0 ') i++;因为字符串的起始下标是0,所以字符串的长度就是i 也可以用系统函数计算字符串长度啊:...

请教各位高手一个问题:在C语言中,整型数据以“%f”格式输出时,不对的...
答:对数据的解释不对 在计算机中说有的数据都是0和1 那么怎么解释这些0和1就靠操作符来说明了 粗略的意思下 虽然不很精确 但是应该足够让你明白意思了 假设数据是11111111111111111111111111111111 d是将这32个1据视作一个2进制数 其值是2^32 f是将这组数据前部分视作数据 后部分视作指数 从几...

请教一个很简单的c语言问题,我是初学者
答:仅分析第二条语句printf("a%cb%c\bc%c\tabc\n",c1,c2,c3);} 其中a输出a-》“a”,c输出c1也就是a-》“aa”,b输出b-》“aab”,c输出c2也就是b-》“aabb”,\b输出退格,把上一个b擦掉了-》“aab”,c输出c-》“aabc”,c输出c3->"aabcc",\t输出TAB符号,前进八个空格-》...

菜鸟新手请教C语言问题~
答:先逐句分析:1、i++ < 7,成立时循环while。这句话判断的是i<7成立否,判断之后才运行i++,因为自增的优先级低于比较运输符。2、p[i] % 2,对2取余不为0时执行if,即奇数时执行if。3、j += p[i],累加。整体分析:这道题利用while循环对数组p进行了遍历,每次循环条件判断结束后进行自...

一个C语言问题,求高手指导
答:floatf;float c;printf("f=");scanf("%f",&f);c=(5.0/9.0)*(f-32.0);printf("F对应的摄氏温度=%5.2f",c);问题:(1). 格式化输入不对;(2). 计算时整数相除结果为整数,应该用浮点数进行计算。解决方法如上述程序。

请教一道C语言问题。。求大神指导下
答:u8 S1_CH :1;u8 S2_FLESH_RTN :1;u8 S3_HEATER :1;u8 S4_VALVE :1;u8 S5_POR :1;u8 S6_DEFMODE :1;u8 SYS_SET :2;}Bits;这个结构体比较高级,u8 S1_CH :1;冒号1,表示,字段S1_CH占据U8的一个位(Bit)从前往后算,u8 S2_FLESH_RTN :1;占据第二个,等等,u8...

请教一个简单的C语言问题,请大家帮帮忙~~
答:,那么 你输入时也必须有逗号 否则出错 所以一般不这么输入 用也应该有提示 而里面的 内容 %2d %3d 意思是2位用来显示 不足补齐超出继续 你输入的是 123 那么12 这是2位 用来输出 而剩下3 取3位补齐 还是3 你第二次用的 123 这号成为了 下次的读取操作 还有什么细节问题 你再补充吧 ...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网