c语言问题,求高手编写一个程序 编写程序: (1)求一个字符串S1的长度; (2)将一

c语言问题,求高手编写一个程序

编写程序:
(1)求一个字符串S1的长度;
(2)将一个字符串S1的内容复制给另一个字符串S2;
(3)将两个字符串S1和S2连接起来,结果保存在S1字符串中;
(4)搜索一个字符在字符串中的位置(例如:'I'在"CHINA"中的位置为3)。如果没有搜索到,则位置为-1。
(5)比较两个字符串S1和S2,如果S1>S2,输出一个正数;如果S1=S2,输出0;如果S1<S2,输出一个负数;输出的正,负数值为两个字符串相应位置字符ASCII码值的差值,当两个字符串完全一样时,则认为S1=S2。
以上程序均使用gets或puts函数输入,输出字符串。不能使用string.h中的系统函数。

第1个回答  推荐于2016-02-07
/*
串s = ads
串t = fftgds
s -> d,d = ads
d + t = adsfftgds
len of d = 9
请按任意键继续. . .
*/
#include <stdio.h>

int strlen(char *s) {
int i,len = 0;
for(i = 0; s[i]; ++i) ++len;
return len;
}

char *strcpy(char s2[], char s1[]) {
int i;
for(i = 0; s2[i] = s1[i]; ++i);
return s2;
}

char *strcat(char s1[], char s2[]) {
int i,len = 0;
for(i = 0; s1[i]; ++i,++len);
for(i = 0; s1[len + i] = s2[i]; ++i);
return s1;
}

int findch(char *s, char c) {
int i,pos = 1;
for(i = 0; s[i]; ++i) {
if(s[i] == c) return pos;
pos++;
}
return -1;
}

int strcmp(char *s, char *t) {
int i,value;
for(i = 0; s[i] && t[i]; ++i) {
value = s[i] - t[i];
if(value != 0) return value;
}
return (s[i] - t[i]);
}

int main() {
char s[81],t[81],d[81];
printf("串s = ");
gets(s);
printf("串t = ");
gets(t);
printf("s -> d,d = ");
puts(strcpy(d,s));
printf("d + t = ");
puts(strcat(d,t));
printf("len of d = %d\n",strlen(d));
return 0;
}本回答被提问者采纳
第2个回答  2012-05-13
#include <stdio.h>

int str_len(char *str)
{
int i;

for(i = 0; str[i]; i++);
return i;
}
int str_search(char *str, char c)
{
int i;
for(i = 0; str[i]; i++)
{
if(str[i] == c)
return i + 1;
};
return -1;
}
void str_cpy(char *s1, char *s2)
{
int i;
for(i = 0; s2[i]; s1[i] = s2[i], i++);
s1[i] = '\0';
}

void str_com(char *s1, char *s2)
{
int i, j;
for(i = 0; s1[i]; i++);
for(j = 0; s2[j]; s1[i] = s2[j], i++, j++);
s1[i] = '\0';
}

int str_cmp(char *s1, char *s2)
{
int i;
for(i = 0; s1[i] && s2[i]; i++)
{
if(s1[i] > s2[i])
return 1;
if(s1[i] < s2[i])
return -1;
}
if(!s1[i] && !s2[i])
return 0;
if(s1[i])
return 1;
return -1;
}

int main()
{
char str1[100], str2[100];
int choice;
printf("-----------------------\n");
printf("Input two strings:\n");
printf("-----------------------\n");
gets(str1);
gets(str2);

while(1){

printf("-----------------------\n");
printf("1. length\n");
printf("2. copy\n");
printf("3. combination\n");
printf("4. search\n");
printf("5. compare\n");
printf("6. exit\n");

scanf("%d", &choice);

switch(choice)
{
case 1:
getchar();
printf("Which string (1/2):\n");
if(getchar() == '1')
printf("%d\n", str_len(str1));
else
printf("%d\n", str_len(str2));
break;
case 2:
printf("str2 copy to str1, result:\n");
str_cpy(str1, str2);
printf("%s\n", str1);
break;
case 3:
printf("result:\n");
str_com(str1, str2);
printf("%s\n", str1);
break;
case 4:
printf("Find in str1. Input a character:\n");
getchar();
printf("Position: %d\n", str_search(str1, getchar()));
break;
case 5:
if(str_cmp(str1, str2) > 0)
printf("str1 > str2\n");
else if(!str_cmp(str1, str2))
printf("str1 == str2\n");
else
printf("str1 < str2\n");
break;
default:break;
}
if(choice == 6)
break;
}

return 0;
}
第3个回答  2012-05-13
又是做题?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网