qq_52343978 2021-11-29 14:24 采纳率: 100%
浏览 35
已结题

数组输出的值与输入值不一致

本意是想把输入的26个字母中每个字母出现的次数存放在一个数组中,同时把出现的字母也存放在一个数组中
字母和数字在数组中的顺序相同
{#include
using namespace std;
int main(){
int n=26; char a; //输入的字母
char ch[n]; //存储字母
char ex[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; //作对比
int count=0; //计数(字母种数)
int num[26]={0}; //对应字母出现次数
int weight;
int w[count]; //权值不为 0的字母的权值
char ch2[count];
cout<<"输入26个字母:"<<endl;
for(int i=0; i<n; i++){
cin>>a;
ch[i]=a; }
for(int i=0; i<n; i++){ //每个字母对应的权值
int sum=0;
for(int j=0; j<26; j++){
if(ex[i]==ch[j]){
sum++; }
}
num[i]=sum; }
for(int i=0; i<n; i++){
if(num[i]!=0){
cout<<"字母"<<ex[i]<<" 出现次数为: "<<num[i]<<endl;
count++;
} }
cout<<"共有"<<count<<"种不同的字母"<<endl;
for(int k=0;k<count; k++){ // 输入字母及对应 权值
cin>>a>>weight;
ch2[k]=a;
w[k]=weight; }
for(int k=0; k<count;k++){
cout<<w[k]<<" "; }
return 0;}}

  • 写回答

1条回答 默认 最新

  • 於黾 2021-11-29 14:41
    关注

    ex这个数组完全没有用
    因为英文字母的ascii码是连续的,你直接减去'a'就是索引,根本不需要双重for循环去比对
    当然,如果输入字符串里有大小写或者其他特殊符号,那判断一下范围,再对应的减'a'或'A',超出0-25范围的直接continue
    你逻辑太乱,我根本没细看。你按照上面的思路重新改写一下,代码清晰简洁,就不容易出问题了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月8日
  • 已采纳回答 11月30日
  • 修改了问题 11月29日
  • 创建了问题 11月29日

悬赏问题

  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码