鱼C论坛

 找回密码
 立即注册
查看: 1171|回复: 2

[已解决]代码为什么没有输出啊

[复制链接]
发表于 2023-10-2 15:49:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月 格式。对于那些只写了年份后两位的信息,我们默认小于 22 都是 20 开头的,其他都是 19 开头的。

输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。

输出格式:
在一行中按标准格式 年年年年-月月 将输入的信息整理输出。
#include<stdio.h>
int length(int x)
{
        int ss=0;
        while(x>0)
        {
                x=x/10;
                ss++;
        }
        return ss;
 } 
 int main()
 {
         int n;
         scanf("%d",n);
         if(length(n)==6) printf("%02d-%02d",n/100,n%100);
         if(length(n)==4)
         {
                 int a;
                 a=n/100;
                 if(a>=22) printf("19%02d-%02d",a,n%100);
                 if(a<22) printf("20%02d-%02d",a,n%100);
         }
 }
最佳答案
2023-10-2 15:49:31
在代码中,scanf 函数的参数应该是一个指针,而不是一个整数。换句话说,你应该使用 &n 来将输入的整数保存到变量 n 中。

修改后的代码如下:
#include <stdio.h>

int length(int x) {
    int ss = 0;
    while (x > 0) {
        x = x / 10;
        ss++;
    }
    return ss;
}

int main() {
    int n;
    scanf("%d", &n);
    if (length(n) == 6)
        printf("%02d-%02d", n / 100, n % 100);
    if (length(n) == 4) {
        int a;
        a = n / 100;
        if (a >= 22)
            printf("19%02d-%02d", a, n % 100);
        if (a < 22)
            printf("20%02d-%02d", a, n % 100);
    }
    return 0;
}

这个程序可以正常地编译和运行,并且根据输入输出了正确的结果。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-2 15:49:29 | 显示全部楼层
代码没有输出的原因是在主函数中 scanf 函数的参数应该是一个指针,而不是一个变量。应该将 scanf("%d",n) 改为 scanf("%d",&n)。

另外,在输出年份时,应该输出四位数,而不是两位数。可以使用 %04d 格式化输出。修改后的代码如下:
#include<stdio.h>
int length(int x)
{
    int ss=0;
    while(x>0)
    {
        x=x/10;
        ss++;
    }
    return ss;
}
int main()
{
    int n;
    scanf("%d",&n);
    if(length(n)==6) printf("%d-%02d",n/100,n%100);
    if(length(n)==4)
    {
        int a;
        a=n/100;
        if(a>=22) printf("19%02d-%02d",a,n%100);
        if(a<22) printf("20%02d-%02d",a,n%100);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-2 15:49:31 | 显示全部楼层    本楼为最佳答案   
在代码中,scanf 函数的参数应该是一个指针,而不是一个整数。换句话说,你应该使用 &n 来将输入的整数保存到变量 n 中。

修改后的代码如下:
#include <stdio.h>

int length(int x) {
    int ss = 0;
    while (x > 0) {
        x = x / 10;
        ss++;
    }
    return ss;
}

int main() {
    int n;
    scanf("%d", &n);
    if (length(n) == 6)
        printf("%02d-%02d", n / 100, n % 100);
    if (length(n) == 4) {
        int a;
        a = n / 100;
        if (a >= 22)
            printf("19%02d-%02d", a, n % 100);
        if (a < 22)
            printf("20%02d-%02d", a, n % 100);
    }
    return 0;
}

这个程序可以正常地编译和运行,并且根据输入输出了正确的结果。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 21:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表