|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
藏头词:输入一组英文单词(不超过8个),按输入顺序将每个单词的第一个字母连起来形成一个新单词。用返回字符指针的函数实现。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *change(char *s[],int n);
int main(void) {
int i,n;
char poem[8][20],*p[8];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s",p[i]);
p[i]=poem[i];
}
printf("%s\n",change(p,n));
return 0;
}
char *change(char *s[],int n){
int i;
char *t = (char *)malloc(9 * sizeof(char));
for(i = 0; i < n; i++)
t[ i ] = s[i][0];
t[i] = '\0';
return t;
}
本帖最后由 ba21 于 2018-12-13 18:41 编辑
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char *change(char s[][20],int n);
- int main(void)
- {
- int i,n;
- char poem[8][20]={'\0'};
- scanf("%d",&n);
- for(i=0;i<n;i++)
- {
- scanf("%s",poem[i]); // 输入的数据存入2维数组中
- }
- printf("%s\n",change(poem,n)); // change 取2维数组每行第1列的字符
- return 0;
- }
- char *change(char s[][20],int n)
- {
- int i, j;
- char *t = (char *)malloc(9 * sizeof(char)); // 动态分配9个字符的空间,用来存取出来的字符。要求是8个,最后必须有个"\0"结束标志。所以是9
- for(i = 0; i < n; i++)
- {
- j = 0;
- while(s[i][j++]!='\0') continue; // 找到最后, 这里 j 到了 '\0' 后面
- t[i] = s[i][j-2]; //所以这里j-2 就是最后一个可用字符
-
- }
- t[i] = '\0'; // 结束标志
-
- return t;
- }
复制代码
也可, 意思一样。
- j = 0;
- while(s[i][++j]!='\0') continue;
- t[i] = s[i][--j];
复制代码
|
|