代码为什么没有输出啊
题目是小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 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);
}
} 代码没有输出的原因是在主函数中 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);
}
}
在代码中,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;
}
这个程序可以正常地编译和运行,并且根据输入输出了正确的结果。
如果问题已经解决,请设置最佳答案
页:
[1]