c语言题目 1.编写两个函数,输入的整数按字符串形式逆序输出,要求分别用递归算法和非递归算法实现。

2.将一个整数的各个位上的数字加起来(用函数完成),并输出结果
3.编制具有如下原型的函数long dif(int y1, int m1, int d1, int y2, int m2, int d2);它负责计算出两个日期的间隔天数并返回。其中的y1、m1、d1表示第一个日期的年、月、日;而y2、m2、d2表示第二个日期的年、月、日。而后编制主函数,对dif进行调用,以验证它的正确性。
4.编写一个函数countk(long k,count[10]),求出证书k中数字0到9出现的次数,并计入count[10]中。

小弟新手,望编程高手指点

第1个回答  推荐于2016-04-12
先写第一个
#include "stdio.h"
main()
{

int n,m;
int sum=0;
printf("input a number:\n");
scanf("%d",&n);
while(n/10!=0)
{
m=n%10;
sum=sum+m;
n=n/10;
}
sum=sum+n;
printf("sum is:%d",sum);
getch();
}追问

后面的写完分就给你

追答

呵呵 我正在上课呢
一起努力啊 敢问 您是学什么的??

追问

我是软件学院大一的学生,c语言刚入门,属于菜鸟级…呵呵…

追答

/* HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"

int run_nian(int year)
{ int leap;
if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
leap=1;
else
leap=0;
return leap;
}

int tianshu( int year,int month,int day)
{
int sum;
switch(month) /*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; /*再加上某天的天数*/
if(run_nian(year)&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
return sum;

}

int cha(int year1,int month1,int day1,int year2,int month2,int day2) /*计算它们之间的天数差*/
{
int temp;
int s=0;
int y1,y2,s1,s2;
for (temp=year1+1;temp<year2;temp++)
if(run_nian(temp)) s+=366;
else s+=365;

y1=run_nian(year1);
if(y1) s1=366-tianshu(year1,month1,day1);
else s1=365-tianshu(year1,month1,day1);

s2=s1+s+tianshu(year2,month2,day2);
return s2;
}
void main()
{ int i1,i2,i3,q1,q2,q3,j;
printf("year1<=year2\n");
printf("input year1 month1 day1 year2 month2 day2:\n");
scanf("%d %d %d %d %d %d",&i1,&i2,&i3,&q1,&q2,&q3);
j=cha(i1,i2,i3,q1,q2,q3);
printf("the days of this is=%d",j);
getch();
}
这是第二个 貌似复杂了些
第三个long K??如果证书是0开头的呢??如证书号009351101**。如果是整形岂不就成了9351101**??是不是字符串啊??

本回答被提问者采纳
相似回答