第十七题:
解题思路:
用递归法将一个整数n转换成字符串,可以定义转换函数translate,由于数字的ASCII值和字符串的ASCII值相差48,因此需要输出n%10+'0'才能将整数转换成字符串,同时也要考虑整数为负数的情况,将它转换为整数。
程序代码:
#include<stdio.h>
int main()
{
void translate(int n);
int num;
printf("请输入一个整数:");
scanf("%d",&num);
if(num<0)
{
putchar('-');
putchar(' ');
num=-num;
}
translate(num);
printf("\n");
return 0;
}
void translate(int n)
{
int c;
if((c=n/10)!=0)
translate(c);
putchar(n%10+'0');
putchar(' ');
}
程序运行结果:
第十八题:
解题思路:应该使用函数调用的方法求此题,很重要的一点就是要定义出每个月的天数函数day,这样输出的day再加上前几个月的的总共天数就可以了。计算过程中判断该年是否为闰年是非常关键的,调用leap函数,判断输出的年是否为闰年,如是,则在总天数上加1,这样就可以求出该日是该年的第几天。
程序代码:
int sum(int month,int day)
{
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for(i=1;i<month;i++)
day=day+b[i];
return(day);
}
int leap(int year)
{
int leap;
if (year%4==0&&year%100!=0||year%400==0)
leap=1;
else
leap=0;
return (leap);
}
#include <stdio.h>
int main()
{
int leap (int year);
int sum(int month,int day);
int year,month,day,a=0,i;
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&year);
scanf("%d",&month);
scanf("%d",&day);
a=sum(month,day);
if(leap(year)&&(month>=2))
a=a+1;
printf("该日是该年的第%d天",a);
return 0;
}
程序运行结果:
第二篇:C语言程序设计实验报告(八)
C语言程序设计实验报告