初学者请教 两道简单的c语言编程题目

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:07:42
1.分别用for语句和while语句编写一程序:
判断输入的一个16进制数(取值范围:0x0000-0xffff)其2进制表示中所包含的"1"的个数。

2.编写一程序,输入当前日期和你的生日,计算期间的天数(提示:使用循环从出生的下一年开始直到去年,计算期间天数,然后加上头尾两年的剩余天数,注意要考虑闰年)(注意是两种访法)

我们刚学完c的基本数据类型 以及三种程序设计结构,没有涉及到数组等概念,可能第二题需要用到数组。
我做了一下第二题,如下不知是否正确:
#include <stdio.h>

void main()
{
int leap_a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int N_leap_a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int Y1,M1,D1,Y2,M2,D2;
int leap_year=0;
long int total,rest=0;
long int day1=0,day2=0,D1_1=0,i,tatal=0;
int ddd;

printf("\t*********你的生命渡过了多少个日子?*********\n");

printf("请输入您的出生年份:\t\n");
scanf("%d",&Y1);

printf("请输入您的出生月份:\t\n");
scanf("%d",&M1);

printf("请输入您的出生日号:\t\n");
scanf("%d",&D1);

printf("请输入当前年份:\t\n");

#include <stdio.h>
void main()
{
unsigned int sour;
int count=0,i;
printf("Input an Hex Number:");
scanf("%x",&sour);
for(i=0;i<16;i++)
{
if(sour%2==1) count++;
sour/=2;
}
printf("The Number Contains %d 1s\n",count);
getch();
}

以上是第一题答案。
你的第二题基本上正确,希望楼主能够顺着思路,自己解决下自己的程序,培养自学能力和调试能力。

2008年4月4日16:01:58
哎,好吧,给你第二题的答案。不过,我建议你看看我的程序,然后试着对你自己的程序进行小修改。调试程序可是C语言的基本工哦……

#include <stdio.h>
main()
{
int n,i,yy,mm,dd,by,bm,bd,mdsum=0,days=0;
int md[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

printf("Input year month day today: ");
scanf("%d%d%d",&yy,&mm,&dd);
printf("Input year month day birthday: ");
scanf("%d%d%d",&by,&bm,&bd);

for(n=by;n<yy;n++)
if(n%100!=0&&n%4==0||n%400==0) days+=366;
else days+=365;
<