这个C语言程序哪错了?
解决时间 2021-06-06 13:15
- 提问者网友:绫月
- 2021-06-05 12:39
#include<stdio.h>
main()
{
int i,j,n=0;
char a[7],b[7],c[7];
gets(a);
gets(b);
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
if(a[i]==b[j])
{
n=n+1;
c[i]=a[i];
}
}
puts(c);
printf("%d\n",n);
}
这程序好像没什么错的
可当输入;字符串a为wabcdef b为abcdefg
出来的本该是abcdef 可为什么abcdef前面总有其它东西
就这样:
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-06-05 12:50
我觉的是这里是这句 c[i]=a[i];因为数组是一个个输出的你i=7所以而你的c[0]为空的就出了那个字符了
全部回答
- 1楼网友:轮獄道
- 2021-06-05 17:29
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i,j,n=0,h=0;
char a[7],b[7],c[7];
gets(a);
gets(b);
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
if(a[i]==b[j])
{
n=n+1;
c[h]=a[i];
h=h+1;
}
else {c[h]='\0';}
}
puts(c);
printf("%d\n",n);
system("PAUSE");
return 0;
}
- 2楼网友:平生事
- 2021-06-05 16:17
LZ那种方法是不当的,例如你试试不满7个字符的字符串···如 abcd bcdf 统计相同字符的个数是不准确的。。。看如下的方法
#include<stdio.h>
main()
{
int i,j,n=0;
char a[7],b[7],c[7];
gets(a);
gets(b);
for(i=0;a[i]!='\0';i++)
{
for(j=0;b[j]!='\0';j++)
if(a[i]==b[j])
{
c[n]=a[i];
n=n+1; // 注意位置
}
}
c[n]='\0'; // 给字符串加个结束符去··
puts(c);
printf("%d\n",n);
}
- 3楼网友:末日狂欢
- 2021-06-05 15:01
请问你是要干什么呢,是取相同的字符存入C中么,可以不按序列么?还是要找出在b中与a相同的字符存入C中?
- 4楼网友:西岸风
- 2021-06-05 14:16
#include<stdio.h>
main()
{
int i,j,n=0;
char a[7],b[7],c[7];
gets(a);
gets(b);
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
if(a[i]==b[j])
{
c[n]=a[i];
n=n+1;
}
}
c[n]='\0';
puts(c);
printf("%d\n",n);
}
我要举报
大家都在看
推荐资讯