m0_65875819 2022-05-08 18:23 采纳率: 84.6%
浏览 10
已结题

声明变量顺序有什么要求呢?

#include
#include
#include <string.h>

using namespace std;

void str_bin(char s1[], char s2[]);
int main()
{
char s1[100];
char s2[100];
cin>>s1;
cin>>s2;
int m = strlen(s1);
int n = strlen(s2);

str_bin(s1, s2);

for( int i = 0; i < m + n - 1; i++)
{
    for( int j = 0; j < m + n - 1 - i; j++)
    {
        if(s1[j] > s1[j + 1])
        {
            char temp = s1[j];
            s1[j] = s1[j + 1];
            s1[j + 1] = temp;
        }
    }
}
 for( int i = 0; i < m + n; i++)
    cout<<s1[i];

return 0;
}
void str_bin(char s1[], char s2[])
{
strcat(s1, s2);
}

为什么int m,n放在cin前面输出结果是不对的,必须放在后面呢?声明变量的顺序有什么要求吗?

  • 写回答

3条回答 默认 最新

  • 柒号华仔 2022年度博客之星评选前沿技术领域TOP 1 2022-05-08 18:44
    关注

    与变量声明顺序无关,而是与cin和strlen的顺序有关,只有cin为s1和s2读取字符串后,m= strlen(s1)和n = strlen(s2)才不为0,后面for循环才能正常运行。如下即可,m,n声明在cin之前:

    int m,n;
    cin>>s1;
    cin>>s2;
    m = strlen(s1);
    n = strlen(s2);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 深度学习残差模块模型
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)