一道大一计算机C语言编程题,急求解答,在线等,谢谢,感激不尽!

2025-03-12 22:49:28
推荐回答(4个)
回答1:

//思路,找到正确的位置,使用字符串转换数字函数解决就可以了
#include 
#include 

int main()
{
    char str[30];
    char temp[10];
    int  year, month, day, sum;

    scanf("%s", str);

    memcpy(temp, &str[6], 4);
    temp[4] = '\0';
    year = atoi(temp);

    memcpy(temp, &str[10], 2);
    temp[2] = '\0';
    month = atoi(temp);

    memcpy(temp, &str[12], 2);
    temp[2] = '\0';
    day = atoi(temp);

    sum = year + month + day;

    printf("%04d      %02d    %02d  %d", year, month, day, sum);

    return 0;
}

回答2:

#include
int ASCII_2_INT(char *s,int len)
{
int num=0;
while(len--)
{
if(*s>'9'||*s<'0')//如果输入的ID有出现非数字字符的时候,则不再转换。
break;
num*=10;
num+=*s-'0';
s++;
}
return num;
}
int main()
{
char ID[20];
int y,m,d;
printf("Input your ID:\n");
gets(ID);
y=ASCII_2_INT(&ID[6],4);
m=ASCII_2_INT(&ID[10],2);
d=ASCII_2_INT(&ID[12],2);
printf("%-6d%4c%02d%4c%02d%6d\n",y,' ',m,' ',d,y+m+d);
}

回答3:

5457842696448

回答4:

源代码如下,有问题可追问:(求采纳)
#include
int f(char s[],int st,int ed)
{
int i,ans = 0;
for(i = st;i < ed;i++)
{
ans = ans * 10 + (s[i] - '0');
}
return ans;
}
int main()
{
char s[25];
int year,month,day,sum;
while(scanf("%s",s))
{
year = f(s,6,10);
month = f(s,10,12);
day = f(s,12,14);
sum = year + month + day;
printf("%-6d %02d %02d%6d\n",year,month,day,sum);
}
return 0;
}