为什么我的C语言程序一运行就显示停止工作?有两个这样的程序,求大神解答!!

一个是(加密一个字符串):#include<stdio.h>#include<string.h>main(){chara[100],b[100],c[100];print... 一个是(加密一个字符串):
#include<stdio.h>
#include<string.h>
main(){
char a[100],b[100],c[100];
printf("请输入一个字符串:");
scanf("%s",a);
int i,j;
i=strlen(a);
for(j=0;j<=i;j++){
b[j]=a[j]*2;
}
printf("加密后的字符串是%s:",b[100]);
printf("加密前的字符串是%s:",a[100]);

}
还有一个(统计一个字符串中各个字母出现的频率):
#include<stdio.h>
#include<string.h>
main(){
char a[100];
float b[100];
int num[100];
printf("请输入一个字符串:");
scanf("%s",a);
int i,j;
i= strlen(a);
for(j=0;j<=26;j++)
{
num[a[j]-'a']++;
}
for(j=0;j<=i;j++)
{
b[j]=num[j]/i;
if(b[j]!=0){
printf("%s出现的频率是%d",a[j],b[j]);
}return 0;
}

}
展开
 我来答
sdwffzlll
2013-01-04 · TA获得超过758个赞
知道小有建树答主
回答量:498
采纳率:85%
帮助的人:242万
展开全部
#include <stdio.h>
#include <string.h>
int main()
{
char a[100],b[100],c[100];
printf("请输入一个字符串:");
scanf("%s",a);
//接收回车

getchar();
int i,j;
i=strlen(a);
for(j=0;j<=i;j++){
//蠢陵消x2容易超出128,所以不如+上某个数

b[j]=a[j]+10;
}
//字符串结束

b[j]='\0';
printf("加密后的字符串是%s\n",b);
printf("加密前的字符串是%s\n",a);

}

//输入必须是连续的英文字母串,不能出现空格,回车等其它字符
#include <stdio.h>
#include <string.h>
int main()
{
const float EPSINON=0.000000001;
char a[100];
float b[100];
int num[100],i,j;

printf("请输入一个字符串带知:");
scanf("%s",a);
//接收回车
getchar();
i= strlen(a);
printf("i=%d\n",i);
for(j=0;j<=26;j++)
{
num[a[j]-'a'汪扮]++;
}
for(j=0;j<=26;j++)
{
//浮点数的运算,需要先把数据转换为浮点数
b[j]=(float)num[j]/(float)i;
//浮点数与0的比较
if(b[j]>=-EPSINON&&b[j]<=EPSINON){
continue;
}
else
{
printf("%c出现的频率是%f\n",'a'+j,b[j]);
}
}
return 1;
}
追问
第二个好像修改了还是不行啊,而且我们还没有学浮点的计算哎~~~十分期待大神帮帮我!!第二个,拜托了啊!
追答
第二个,我这边可以正常运行的。所以程序应该没有问题....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友95e7545
2013-01-05 · TA获得超过166个赞
知道小有建树答主
回答量:136
采纳率:0%
帮助的人:107万
展开全部
#include<stdio.h>
#include<string.h>
main(){
char a[100],b[100],c[100];
printf("请输入一个字符串:");
scanf("%s",a);
int i,j;
i=strlen(a);
for(j=0;j<=i;j++){
b[j]=a[j]*2;
}
printf("加密后的字符串是%s:",b); //b[100]是一个字符,\0 不是字符串
printf("加密扮渗衫前的字符串是%s:",a);

}

#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
float b[100];
int num[100];
printf("请输入一个字符串:");
scanf("%s",a);
int i,j;
i= strlen(a);
for(j=0; j<100; j++)//赋初值,默厅腔认是很大的负数
{
num[j] = 0;
}
for(j=0; j<i; j++) //循环喊消i次,不是26次
{
num[a[j]-'a']++; //万一是大写呢,该判断的
}
for(j=0;j<26;j++)//共26个字母,不该循环i次
{
b[j]=num[j]/(float)i; //类型转换
if(b[j] > 0.0001)
{
printf("%c出现的频率是%f\n",'a'+j,b[j]); //%s %d 写错了
}
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ustb_hxb
2013-01-04 · TA获得超过265个赞
知道小有建树答主
回答量:248
采纳率:66%
帮助的人:167万
展开全部
printf("加密后慧御的字符串是%s:",b);
printf("加密前的字符串是%s:",a);

第二个程序:
num[a[j]-'a']++; 中a[ j ] - '纯亩a' 可能小于0,而num[ i ] 中的 i 必须 >= 0
printf("%s出现的频率是%d"做碧森,a[j],b[j]);中的a[ j ] 改成 a 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式