急!急!!急!!编写C语言程序,输入一人的生日,并输入当前的日期,输出该人的实际年龄。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急!急!!急!!编写C语言程序,输入一人的生日,并输入当前的日期,输出该人的实际年龄。相关的知识,希望对你有一定的参考价值。

我给你写的不仅能显示年龄而且能显示距现在的天数。当前日期无需输入,程序自动调取系统日期。。运行过了没有任何问题。有什么问题可以交流下。

#include <stdio.h>
#include<time.h>
//计算给定的日期是本年的第几天
int count(int year,int month,int day)
int i,sum=0,flag=0;
int a[13]=0,31,28,31,30,31,30,31,31,30,31,30,31;
for(i=1;i<month;i++)
sum=a[i]+sum;
if(year%400==0||year%100!=0&&year%4==0)
flag=1;
if(flag==1&&month>2) sum++;
sum=sum+day;

return sum;



int main()

int year,month,day;
time_t t;
struct tm *local;
int sum=0,i;
t=time(NULL);
local=localtime(&t);
printf("今天的日期:%d年%d月%d日\n",local->tm_year+1900,local->tm_mon+1,local->tm_mday);
printf("输入生日:");
scanf("%d%d%d",&year,&month,&day);
for(i=year+1;i<local->tm_year+1900;i++)

if(i%400==0||i%100!=0&&i%4==0)
sum+=366;
else sum+=365;

if((year%400==0||year%100!=0&&year%4==0))
sum+=366-count(year,month,day);
else sum+=365-count(year,month,day);
sum+=count(local->tm_year+1900,local->tm_mon+1,local->tm_mday);
printf("%d年%d月%d日距今天有%d天\n",year,month,day,sum);
printf("\n你的年龄为%d\n",local->tm_year+1900-year);



c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!
参考技术A #include <stdio.h>

typedef struct
int year, month, day;
Date;

main()

int age;
Date today, birthday;
printf("Intput birthday:\nYear:");
scanf("%d",&birthday.year);
printf("Month:");
scanf("%d",&birthday.month);
printf("Day:");
scanf("%d",&birthday.day);
printf("Intput date of today:\nYear:");
scanf("%d",&today.year);
printf("Month:");
scanf("%d",&today.month);
printf("Day:");
scanf("%d",&today.day);
if(today.month>=birthday.month)
age=today.year-birthday.year+1;
else
age=today.year-birthday.year;
printf("Your age is: %d\n",age);
return 0;

C语言的一道题,急求解。

输入一个字符串,内有数字和非数字字符,如:

a23xia56 17960? 302tab5876

将其中连续的数字作为一个整数,一次存放到一数组a中。例如 123 存在a【0】,456 存在a【1】中,统计共有多少个整数,并输出这些数。

下面是我的程序,最好能告诉我哪里有问题、谢谢
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(void)
5
6 int k=0,i, j;
7 char a[100],b[100][100];
8
9 for(k=0;a[k]!= '\n';k++)
10 scanf("%c",&a[k]);
11
12 while(a[k] != '\n')
13
14 if(a[k]<='9' && a[k]>= '0')
15
16
17 j=0;
18 b[i][j] = a[k];
19 while(a[++k] <= '9' &&a[++k]>='0')
20 b[i][++j]=a[k];
21 i++;
22
23
24 printf("The number of continious integer is %i",i);
25
26 i=0;
27 j=0;
28 printf("The integers are like follows: \n");
29 /*
30 while(b[i][j] != '\0')
31
32 char *ptr;
33 ptr= b[i];
34 n[i]=atoi(ptr);
35 printf("%i ", n[i]);
36 i++;
37
38 */
39 return 0;
40

万分感谢
对了,问题要求用指针来做。

你的程序问题多多
需要修改的地方也很多,可能思路也很难用你程序里的
我做了一个,你可以参考一下我的,或许你也能改动些变成你的

我在程序如下:
#include "stdio.h"
#include <string.h>
int main()

int k=0,i, j;
char a[100];

int flag = 1;//用来设置输入回车符号的标志
for(k=0;flag!= 0;k++)//flag为0时停止循环

scanf("%c",&a[k]);
if (a[k] == 10)//如果有回车符号输入,flag的值变为0

flag =0;



k = 0;//k值要再次赋0值
long arr[100];//用来保存整数的数组
long sum = 0;//计算中间的整数
int num =0;//计算整数个数
j = 0;//数组下标
while(a[k] != 10)//判断是否为回车符号,

if (a[k]<='9' && a[k]>= '0')//如果是数字进入该循环体

num++;
sum = 0;
int i = 0;
while(a[k]<='9' && a[k]>= '0')//如果是数字进入该循环体

if (i == 0)//第一个数字

sum = (int)(a[k]-48);//将字符转换为数字

else//非第一个数字

sum =10*sum + (int)(a[k]-48);//将字符转换为数字

i++;
k++;

arr[j++] = sum;//将计算的数字存到数组中
k--;

k++;

printf("The number of continious integer is %i\n",num);

printf("The integers are like follows: \n");
i = 0;
while (--j >=0)

printf("%ld\n",arr[i++]);

return 0;


运行效果如下:

54sdf ?02395 sdfk pp 888
The number of continious integer is 3
The integers are like follows:
54
2395
888
请按任意键继续. . .
参考技术A 用atoi函数可能简单点 参考技术B 12 while(a[k] != '\n') //这里k 没初始化。。
13
14 if(a[k]<='9' && a[k]>= '0')
15
16
17 j=0;
18 b[i][j] = a[k]; //i 没有初值 ,k也没有 。。
19 while(a[++k] <= '9' &&a[++k]>='0')
20 b[i][++j]=a[k];
21 i++;
22
23

24 printf("The number of continious integer is %i",i); //%i 什么格式? 改%d 或%ld
参考技术C #include <stdio.h>
#define MAX 20
void main()
int k=-1,i=-1,j,t;
char a[MAX],b[MAX][MAX];
do
k++;
scanf("%c",&a[k]);
while(a[k]!='\n');
k=0;
while(a[k]!='\n')
if((a[k]<='9')&&(a[k]>='0'))
i++;j=0;
b[i][j] = a[k];
k++;
while((a[k]<='9')&&(a[k]>='0'))
j++;
b[i][j]=a[k];
k++;

j++;b[i][j]='\n';
if(a[k]=='\n') k--;

k++;

printf("The number of continious integer is %d\n",i+1);
printf("The integers are like follows: \n");
t=i;
for(i=0;i<=t;i++)
j=0;
while(b[i][j]!='\n')
printf("%c",b[i][j]);
j++;

printf("\n");



运行效果如下:

12df 7da798 7~@#5t
The number of continious integer is 3
The integers are like follows:
12
7
98
7
5
参考技术D 换个思路把,看我的:
#include <stdio.h>
#include <ctype.h>
int main(void)

    int ch, num = 0, flag = 0, count = 0;
    
    while(ch = getchar())
    
              if(!isdigit(ch) && flag)
              
                      printf("%d ", num);
                      count++;
                      num = flag = 0;
              
              if(isdigit(ch))
              
                    num  = 10 * num + ch - '0';
                    flag = 1;
                    continue;
              
              if(ch == '\n')break;
                 
                
    printf("\ncount = %d\n", count);
   
    return 0;   

以上是关于急!急!!急!!编写C语言程序,输入一人的生日,并输入当前的日期,输出该人的实际年龄。的主要内容,如果未能解决你的问题,请参考以下文章

急,急,急!!!!C语言判断输入的两个操作数数是不是是数字。(可以为负数),望高手赐教,不胜感激!!!

linux下,编写一个c语言程序实现...(详细见正文)!急!

编写一个c程序,输入圆心坐标和半径,输出圆上所有的点。急!!!

C语言编程作业,急!!!!

急!!!c语言编程!!

Linux下用C语言实现grep功能(急)