70,020
社区成员




用于在一个已排好序(ASCII值从小到大)的字符串string(少于50个字符)中适当位置插入字符c 为什么输出错误
char * insert(char *string, char t)
{
int i,p;
for(i=0;i<50;i++)
{ if(t>string[i]);
{ p=(i+1);
break ;
}}
for(i=strlen(string);i>p;i--)
{string[i]=string[i-1];
}
string[p]=t;
string[strlen(string)]='\0';
return string;
}
void main()
{
char str[50],*s,c;
gets(str);
scanf("%c",&c);
s=insert(str,c);
puts(s);
}
#include <string.h>
#include <stdio.h>
char *invert(char *s)
{
char *p, *t, str;
int i;
p = s + strlen(s) - 1;
t = s;
// strlen()的返回值的数据类型是 size_t
// size_t 是 unsigned int 类型,是 非负数
// 比较大小的时候,C 语言会对 比较运算符 左右两边的操作数 先进行隐式类型转换
// 对于 int 型 与 unsigned int 型的运算,
// C 会把 int 型 先隐式转换为 unsigned int 型,
// 于是 int 型的 -1 就成了 unsign int 型的取值范围的最大的数了
for (i = (strlen(s) - 1); i >= (int)(strlen(s) / 2); i--) {
str = *p;
*p = *t;
*t = str;
p--;
t++;
}
return s;
}
int main(void)
{
char a[20][101], *y;
int n, i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s", &a[i]);
}
for (i = 0; i < n; i++) {
y = invert(&a[i]);
printf("%s\n", y);
}
return 0;
}
#include<string.h>
#include<stdio.h>
char*invert(char*s)
{ char*p,*t,str;
int i;
p=s+strlen(s)-1;
t=s;
for(i=(strlen(s)-1);i>=(strlen(s)/2);i--)
{ str=*p;
*p=*t;
*t=str;
p--;
t++;
}
return s;
}
int main()
{ char a[20][101],*y;
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",&a[i]);
for(i=0;i<n;i++)
{y=invert(a[i]);
printf("%s\n",y);;
}}
输入
从键盘输入整数n,然后再输入n个字符串,每行一个字符串。
输出
输出各个字符串颠倒以后的字符串,每个字符串之间用换行符隔开
为什么有两个点过不了 老是运行时发生错误
char *insert(char *string, char t)
{
int i, p = 0;
int len = strlen(string);
for (i = 0; i < len; i++) {
if (t < string[i]) {
p = i;
break;
}
}
// 插入点是末尾的情况
if (i == len) {
p = len;
}
for (i = len; i > p; i--) {
string[i] = string[i - 1];
}
string[p] = t;
string[len + 1] = '\0';
return string;
}
#include <stdio.h>
char *insert(char *string, char t)
{
int i, p;
int len = strlen(string);
for (i = 0; i < len; i++) {
if (t < string[i]) {
p = i;
break;
}
}
for (i = len; i > p; i--) {
string[i] = string[i - 1];
}
string[p] = t;
string[len + 1] = '\0';
return string;
}
int main(void)
{
char str[50], *s, c;
gets(str);
scanf("%c", &c);
s = insert(str, c);
puts(s);
return 0;
}