题目内容如下:
样例输入输出:
我写的程序如下(欢迎指出错误):
#include <stdio.h>
#include <malloc.h>
#define MAX 100
#define line 20
void mygetline(char *s,int m){
int c,i=0;
while(((c=getchar())!=EOF)&& c!='\n' && c!=' '){
s[i]=c;
i++;
if(i>=m){
m*=2;
s=(char*)realloc(s,sizeof(char)*m);
}
}
s[i]='\0';
}
char firstch(char *s){
int i,j,n=0;
while(s[n]!='\0') n++;
for(i=0;i<n;i++){
int k,f2=0;
/*判断之前是否和其有相等的字符*/
for(k=0;k<i;k++){
if(s[k]==s[i]) f2=1;
}
if(f2==0){
/*判断该字符后面是否有相等的字符*/
int flag=0;
for(j=i+1;j<n;j++){
if(s[j]==s[i]) flag=1;
}
if(flag==0){
return s[i];
}
}
}
return ' ';
}
int main()
{
int ct;
scanf("%d",&ct);
getchar();
/*定义20个指针*/
char *mine[line];
char mm[line];
int i;
for(i=0;i<ct;i++){
/*指针一定要记得分配内存,初始化*/
mine[i]=(char*)malloc(sizeof(char)*MAX);
mygetline(mine[i],MAX);
}
for(i=0;i<ct;i++){
mm[i]=firstch(mine[i]);
}
for(i=0;i<ct;i++){
printf("%c\n",mm[i]);
}
/*释放内存*/
for(i=0;i<ct;i++){
free(mine[i]);
}
return 0;
}