倒着打印I am a student
本帖最后由 Sunny-smile 于 2014-8-23 09:12 编辑#include <stdio.h>
int main()
{
char a[]="I am a student.",b; //定义字符数组
int i;
for (i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i); //将a的值赋给b
*(b+i)='\0'; //在b数组的有效字符之后加'\0',做为字符串结束标志
printf("string a is:%s\n",a);//输出a数组中全部有效字符
printf("string b is:");
for (i=0;b!='\0';i++)
printf("%c",b); //逐个输出b数组中全部有效字符
printf("\n");
return 0;
}
Sunny-smile 发表于 2014-8-22 22:34
就是不知道怎么倒
如果你要把a倒转赋值给b的话可以这么写
#include <stdio.h>
int main()
{
char a[]="I am a student.",b; //定义字符数组
int i,j;
for (i=sizeof(a)-2,j=0;i>=0;i--,j++)
*(b+j)=*(a+i); //将a的值赋给b
*(b+j)='\0'; //在b数组的有效字符之后加'\0',做为字符串结束标志
printf("string a is:%s\n",a);
printf("string b is:%s\n",b);
return 0;
} 我只是路过打酱油的。 本帖最后由 calton007 于 2014-8-22 22:30 编辑
楼主你这么写只能让a和b两个数组相同,并没有将数组a倒转
#include <stdio.h>
int main()
{
char a[]="I am a student."; //定义字符数组
int i,len;
len=sizeof(a); //求出数组长度(包括'\0')
for (i=len-2;i>=0;i--)
print("%c",*(a+i));
return 0;
}直接将数组a倒着输出就可以了 calton007 发表于 2014-8-22 22:29
楼主你这么写只能让a和b两个数组相同,并没有将数组a倒转
直接将数组a倒着输出就可以了
就是不知道怎么倒
#include <stdio.h>
int main()
{
char a[]="I am a student.",b; //定义字符数组
int i;
for (i=0;*(a+i)!='\0';i++)
*(b+14-i)=*(a+i); //将a的值赋给b
*(b+15)='\0'; //在b数组的有效字符之后加'\0',做为字符串结束标志
printf("string a is:%s\n",a);//输出a数组中全部有效字符
printf("string b is:");
for (i=0;b!='\0';i++)
printf("%c",b); //逐个输出b数组中全部有效字符
printf("\n");
return 0;
}
/*
//也可以这样实现上面的程序
#include <stdio.h>
#include <string.h>
int main()
{
const char arr[] = "I am a student.";
int arrLen = strlen(arr)-1;
for(; arrLen>=0; arrLen--)
{
printf("%c",arr);
}
return 0;
}
//也许你是想单词不变
#include <stdio.h>
#include <string.h>
void PrinfWord(char *arrWord,int index,int len)
{
for(int i=0;i<len;i++)
{
printf("%c",arrWord);
}
}
int main()
{
char arr[] = "I am a student.";
int arrLen = strlen(arr);
int idxLen=1;
while(arrLen-- >=0)
{
if(arr == ' ')
{
PrinfWord(arr,arrLen+1,idxLen);
idxLen=0;
}
else if(arrLen == 0)
{
PrinfWord(arr,arrLen,idxLen);
idxLen=0;
}
idxLen++;
}
}
*/
:lol:自己动手也写了写 elvo 发表于 2014-8-22 22:46
自己动手也写了写
好的,谢谢,能不能帮我解决另一个题目呢? elvo 发表于 2014-8-22 22:46
自己动手也写了写
#include <stdio.h>
int main()
{
int a ={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
int*p; //p是int*型指针变量
for(p=a;p<a+12;p++)//使p依然指向下一个元素
{
if((p-a)%3==0)//p移动4次后换行。if语句的作用是使输出4个数据后换行
printf("\n");
printf("%3d",*p);//输出P指向元素的值
}
printf("\n");
return 0;
}
要求这样打印出来1 9 17
3 11 19
5 13 21
7 15 23 Sunny-smile 发表于 2014-8-22 22:50
要求这样打印出来1 9 17
3 11 19
...
#include <stdio.h>
int main()
{
int a ={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
printf("%5d",a);
printf("\n");
}
return 0;
}
elvo 发表于 2014-8-22 23:12
亲,这编译出来是错的
Sunny-smile 发表于 2014-8-23 08:50
亲,这编译出来是错的
#include <stdio.h>
int main()
{
int a ={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
printf("%5d",a);///////////
printf("\n");
}
return 0;
}
sorry printf里面是a,,,,
页:
[1]