注册 登录
编程论坛 C语言论坛

急!明天交作业了

情深腿自开 发布于 2021-10-19 21:47, 889 次点击
今天vc++调试的时候总是error C2143[local]1[/local]
有没有大佬感觉帮看看,救救孩子吧。
原题目是这样的

编写一个程序,将两个两位数的正整数a和b合并成一个整数放在c中。合并方式是:将a的十位和个位依次放在
c的个位和百位,将b的十位和个位放在c的十位和千位
1 回复
#2
rjsp2021-10-20 08:21
位数的整数

都不需要你考虑多位数及负数的情况,那很简单
c = (b%10)*1000 + (a%10)*100 + (b/10)*10 + (a/10)*1;
#3
自由而无用2021-10-20 09:12
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

int main(int argc, char *argv)
{
    int a, b, c;
   
    //get tens
    a = ((unsigned char *)main)[1] % 100;
    b = ((unsigned char *)main)[8] % 100;
    printf("a = %d, b = %d\n", a, b);
    //itoa
#define strlize(_x) _x + 0x30
    a = strlize(a % 10) << 8 | strlize(a / 10);
    //puts((char *)&a);
    b = strlize(b % 10) << 8 | strlize(b / 10);
    //puts((char *)&b);
   
//insertion
    ((unsigned char *)&c)[0] = ((unsigned char *)&b)[1];
    ((unsigned char *)&c)[1] = ((unsigned char *)&a)[1];
    ((unsigned char *)&c)[2] = ((unsigned char *)&b)[0];
    ((unsigned char *)&c)[3] = ((unsigned char *)&a)[0];
    printf("c = %s\n", (char *)&c);

    return 0;
}


output sample:
a = 72, b = 37
c = 7237
1