关于c语言的3个问题

1。输入一个以回车结束的字符串(少于80个字符),将字符串中相同的字符存放在一起,并按ASCII码升序存放。输入输出示例第一次运行Inputastring:aE4Eab4... 1。输入一个以回车结束的字符串(少于80个字符),将字符串中相同的字符存放在一起,并按ASCII码升序存放。
输入输出示例
第一次运行
Input a string:aE4Eab4E
Output:44EEEaab
第二次运行
Input a string:+cc+5c5
Output:++55ccc

2、编写程序,输入两个字符串,将输入的字符串连接成一个字符串,然后输出。(先不要用strcat()函数,然后使用字符串连接函数strcat())
输入输出示例
Input a string:aabbcc
Input another string:123ee
Output:aabbcc123ee
3、统计字符串str中含有子串subStr的个数。
输入输出示例
第一次运行
Input a string:abcDeabchc
Input a substring:abc
Output:count=2
第二次运行
Input a string:bcDebchc
Input a substring:cb
Output:count=0

麻烦高手做一下 ,我做的总会出现乱码。
展开
 我来答
后玉巧巨丑
2020-01-02 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:35%
帮助的人:1028万
展开全部
a++返回+以前的值,所以b=a+++a+++a++如果编译器把a放在不同的寄存器里加完后没有立刻回写则b变成3+3+3=9,如果有立刻回写则变成3+4+5=12
b=(++a)+(++a)+(++a);
同理如果编译器用第一种处理方式则3次++a后a=6,b=6+6+6=18
三)else
a=3是跟if
(a>1)
匹配的,a当然是变量,否则a=3会编译出错
pb2008zym
2010-04-27 · TA获得超过161个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:96.4万
展开全部
#include<stdio.h>
#include<string.h>
第一个
void main()
{
char tmp,str[85];
int i = 0,j,n;
printf("Input a string:\n");
gets(str);
n = strlen(str);
while (i < n)
{
for (j = i + 1;j < n; j++)
{
if (str[i] == str[j])
{
tmp = str[i+1];
str[i+1] = str[j];
str[j] = tmp;
i++;
}
}
i++;
}
printf("Output:%s",str);
}
第二个
void main()
{
char *dest,*src,*pdest,*psrc;
dest = (char *)malloc(161);
src = (char *)malloc(80);
memset(dest, 0, 161);
memset(src, 0, 80);
printf("Input a string:\n");
gets(dest);
printf("Input a substring:\n");
gets(src);
pdest = dest;
if (dest != NULL && src != NULL)
{
while (*pdest!='\0')
{
pdest++;
}
psrc = src;
while (*psrc!='\0')
{
*pdest++ = *psrc++;
}
*pdest='\0';
printf("Output:%s",dest);
}
free(dest);
free(src);
printf("");
}
第三个
void main()
{
char *dest,*src,*pdest,*psrc;
int i,n,m;
dest = (char *)malloc(161);
psrc = (char *)malloc(31);
src = (char *)malloc(31);
memset(dest, 0, 161);
memset(psrc, 0, 31);
memset(src, 0, 31);
printf("Input a string:\n");
gets(dest);
printf("Input a substring:\n");
gets(src);
pdest = dest;
m = strlen(dest);
n = strlen(src);
for (i = 0;m>=n;pdest++,m--)
{
memcpy(psrc,pdest,n);
if(strcmp(psrc,src)==0)
{
i++;
}
}
printf("Output:count=%d",i);
free(dest);
free(psrc);
free(src);
}
没有进行异常处理 还是你自己加上去吧 不懂的地方发消息给我就是了。第一个答案不能用scanf函数 使用scanf("%s",s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鱼鱼…鱼鱼
2010-04-27 · 超过14用户采纳过TA的回答
知道答主
回答量:81
采纳率:100%
帮助的人:0
展开全部
第一个
#include<stdio.h>
#include<string.h>
main()
{
char a[80],b[80],c;
int i,j,n;
printf("\ninput a string:");
scanf("%s",a);
n=strlen(a);
for(i=0;i<n;i++)
{
c=a[i];
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
c=a[j];
a[j]=a[i];
a[i]=c;
}
}
b[i]=a[i];
}
b[i]='\0';
printf("output: %s",b);
}
第二个
#include <stdio.h>
#include <string.h>
main()
{
char a[80],b[80];
int i,j,m,n;
printf("input a string:");
scanf("%s",a);
printf("input another string:");
scanf("%s",b);
m=strlen(a);
n=strlen(b);
for(i=m,j=0;i<m+n&&j<n;i++,j++)
{
a[i]=b[j];
}
a[m+n]='\0';
printf("output: %s",a);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式