蓝色123经典 2019-08-22 19:02 采纳率: 75%
浏览 202
已采纳

我想吧c++的程序改写成c的 但是发现结果不对 请大佬看看应该怎么改

C++
#include
#include
#include
using namespace std;
int main()
{
string a,b;
int s;
int p=1,p2=1;
cin>>a>>b;
for (int i=0;i<a.length();i++)
{
s=a[i]-64;
p=p*s;
}
for (int i=0;i<b.length();i++)
{
s=b[i]-64;
p2=p2*s;
}
if (p%47==p2%47)
cout<<"GO";
else
cout<<"STAY";
return 0;
}

我自己写的C
#include
#include
int main()
{
char a;
char *b;
int s1=1,s2=1,i;
int k1,k2;
scanf("%s\n%s",&a,&b);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++){
k1=a[i]-64;
s1
=k1;
}
for(i=0;i<sizeof(b)/sizeof(b[0]);i++){
k2=b[i]-64;
s2*=k2;
}
if(s1/47==s2/47) printf("GO");
else printf("STAY");
return 0;
}


  • 写回答

2条回答 默认 最新

  • qtchen_1988 2019-08-23 10:15
    关注
    1.char a;//这个定义成字符型,不是数组跟c++ string a对不上
    2.char *b;//没有开空间
    3.scanf("%s\n%s",&a,&b);//格式有问题,不用\n,指针或者数组不需要&操作符
    4.sizeof(a)/sizeof(a[0]);//这样,不管a是char 还是char[]求出来都不对,应该strlen(a),a为数组;
    5.sizeof(b)/sizeof(b[0])//b 是指针,sizeof(指针)求出来4(32位操作系统)或者8(64位操作系统)
    6.k1=a[i]-64;
      s1=k1;
      if(s1/47==s2/47)
      算法跟c++不一样,算出来是不是一样,我没验证;
    
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    #define BUF_SIZE 256
    
    int main()
    {
        char a[BUF_SIZE] = {};
        char *b = (char *)malloc(BUF_SIZE*sizeof(char));
        memset(b,0x0,BUF_SIZE*sizeof(char));
    
        int s1=1,s2=1,i;
        int k1,k2;
        scanf("%s %s",a,b);
    
        printf("a_length=%d    b_length=%d   a=%s  b=%s\n",strlen(a),strlen(b),a,b);
    
        for(i=0;i<strlen(a);i++){
            k1=a[i]-64;
            s1*=k1;
        }
        for(i=0;i<strlen(b);i++){
            k2=b[i]-64;
            s2*=k2;
        }
        if((s1%47) == (s2%47))
            printf("GO");
        else
            printf("STAY");
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作