本题要求编写一个解密藏尾诗的程序。
输入格式:
输入为一首中文藏尾诗,一共四句。每句一行,但句子不一定是等长的,最短一个汉字,最长九个汉字。注意:一个汉字占两个字节。
输出格式:
取出每句的最后一个汉字并连接在一起形成一个字符串并输出。同时在末尾输入一个换行符。
输入样例:
悠悠田园风
然而心难平
兰花轻涌浪
兰香愈幽静
输出样例:
风平浪静
思路:
判定结束符位置,输出结束符’\0’前两个字符
第一次代码:
//这道题很有意思啊
#include<stdio.h>
#define n 4
int main()
{
char s[5][20];//放汉字
char c;
int i,j;
for(i=0;i<n;i++)
{
j=0;
while(1)
{
c=getchar();
if(c=='\n')
break;
else
s[i][j]=c;
j++;
}
s[i][j]='\0';//结束符
}
for(i=0;i<n;i++)
{
for(j=0;;j++)
{
if(s[i][j+1]=='\0')
{
printf("%c%c",s[i][j-1],s[i][j]);//一个汉字两个字符
break;
}
}
if(i==n-1)
printf("\n");
}
return 0;
}
---------------------------------------分割线---------------------------------------
经过网友学习吧少年指正后,发现确实有很多改进的地方。
对于输入,gets就可以了。
对于输出,可以用指针找到每一行结束符’\0’,用%s输出’\0’前两个字符。
第二次代码:
//这道题很有意思啊
#include<stdio.h>
#define n 4
int main()
{
char s[5][20];//放汉字
char *p;
int i;
for(i=0;i<n;i++)
gets(s[i]);
for(i=0;i<n;i++)
{
p=s[i];
while(*p!='\0')
p++;
printf("%s",p-2);//一个汉字两个字符
}
printf("\n");
return 0;
}