C语言程序设计实践(OJ)-初识函数

2964: 查闰年

Description
  大家知道如何判断某一年是否是闰年吗?这个问题可难坏了小编,小编在写一个查找m年到n年之间闰年的程序,却苦于判断闰年的函数不会写,据说 今天你有上机课,我就拿着这个问题来找你了–
  闰年的条件是:能被4整除但不能被100整除,或能被400整除。

#include <stdio.h>
int leap_year(int n);   /*声明判断闰年函数*/
int main()
{
    int i;
    int cnt;    /*计数,用于每行满8个换行*/
    int m,n;
    scanf("%d %d",&m,&n);   /*输入年份*/
    cnt=0;  /*初始化*/
    for(i=m;i<=n;i++)   /*遍历m到n的每一年*/
    {
        if(leap_year(i))    /*判断i年是不是闰年*/
        {
            printf("%d",i); /*输出闰年*/
            cnt++;  /*计数+1*/
            if(cnt==8) /*够8个换行,cnt清0*/
            {
                printf("\n");
                cnt=0;
            }
            else
            {
                printf(" ");
            }
        }
    }
    return 0;
}

  主程序已给出,请自行编写leap_year函数并提交

Input
第m年和第n年

Output
m年至n年之间的所有闰年,输出结果每行8个,数据之间用空格分隔。

Sample Input
1949 2045
Sample Output
1952 1956 1960 1964 1968 1972 1976 1980
1984 1988 1992 1996 2000 2004 2008 2012
2016 2020 2024 2028 2032 2036 2040 2044

参考解答

2963: 判断三角形

Description
娄月的妹妹刘月是个初中生,某天回来兴高采烈的回家告诉姐姐他学会了如何凭借三角形三边判断三角形的形状(设两条短边为啊a,b;长边为c,判断a*a+b*b和c*c的关系),于是娄月告诉刘月,给她三条边,她可以在一秒之内知道三角形是直角,钝角还是锐角三角形,当然,这么快只有编程才能做到。以下是娄月编写的程序,由于忘记了一些知识点,三个判断三角形的函数无法完成,于是 只能请聪明的你帮忙喽。

#include <stdio.h>
#define swap(x,y){x=x+y;y=x-y;x=x-y;}
/*下面三个函数都是:是返回1,不是返回0*/
int right_triangle(double a,double b,double c); /*判断直角三角形*/
int acute_triangle(double a,double b,double c); /*判断锐角三角形*/
int obtuse_triangle(double a,double b,double c); /*判断钝角三角形*/
int main()
{
    double a,b,c;   /*三角形的三边*/
    scanf("%lf %lf %lf",&a,&b,&c);  /*输入三边*/
    /*将三边按照从小到大排好*/
    if(a>b)
        swap(a,b);
    if(a>c)
        swap(a,c);
    if(b>c)
        swap(b,c);
    /*根据if判断选择三角形*/
    if(acute_triangle(a,b,c))
        printf("锐角三角形\n");
    else if(right_triangle(a,b,c))
        printf("直角三角形\n");
    else if(obtuse_triangle(a,b,c))
        printf("钝角三角形\n");
    return 0;
}

提交时只需提交right_triangle,acute_triangle,obtuse_triangle三个函数

Input
三角形的三条边,大小未知,不必考虑构不成三角形的情况

Output
锐角三角形,直角三角形还是钝角三角形

Sample Input
3 4 5
Sample Output
直角三角形

参考解答

2966: 循环画三角形

Description
前几天,老师让良哥做一个画空心三角形的程序来取悦小师妹,可把良哥愁死了,C语言基础学得再扎实,算法不精也是硬伤呀!于是良哥又写好了主程序来找机前的你帮忙了^_^

#include <stdio.h>
void holl_triangle(int n); /*函数声明*/
int main()
{
    int n;
    scanf("%d",&n); /*输入行数n*/
    holl_triangle(n); /*调用输入n行的空心三角形的函数*/
    return 0;
}

主程序已给出,请完成holl_triangle函数并提交

Input
输入一个数字 例如 5

Output

    *
   * *
  *   *
 *     *
*********

输出如上图形

Sample Input
5
Sample Output

    *
   * *
  *   *
 *     *
*********

参考解答

2962: 日期妙算星座

Description
近几年星座运势十分流行,据说一年之中根据月份可以分出十二个星座,它们分别是:摩羯座(12.21-1.19),水瓶座(1.20-2.18),双鱼座(2.19-3.20),白羊座(3.21-4.19),金牛座(4.20-5.20),双子座(5.21-6.21),巨蟹座(6.22-7.22),狮子座(7.23-8.22),处女座(8.23-9.22),天秤座(9.23-10.23),天蝎座(10.24-11.22),射手座(11.23-12.21),猴哥对星座很感兴趣,他想快速根据自己的出生日期求出他所属的星座,请你编程帮助他吧~

#include <stdio.h>
void constellation(int year,int month,int day); /*函数声明*/
int main()
{
    int year,month,day;
    scanf("%d %d %d",&year,&month,&day);    /*输入变量*/
    constellation(year,month,day);  /*调用函数*/
    return 0;
}

主程序已给出,提交时只需提交constellation函数

Input
日期

Output
星座名称

Sample Input
2000 12 31
Sample Output
摩羯座

参考解答

1047: 求两个整数的最大公约数和最小公倍数

Description
写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。

Input
两个数

Output
最大公约数 最小公倍数

Sample Input
6 15
Sample Output
3 30
HINT
主函数已给定如下,提交时不需要包含下述主函数

/*  C代码   */
int main()
{
    int n,m,gys,gbs;
    int gcd(int a, int b);
    int lcm(int a, int b);
    scanf("%d%d",&n,&m);
    gys=gcd(n,m);
    gbs=lcm(n,m);
    printf("%d %d\n",gys,gbs);
    return 0;
}

参考解答

2405: 牛顿迭代法求根

Description
用牛顿迭代法求根。方程为ax3+bx2+cx+d=0。系数a,b,c,d的值一次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。结果保留两位小数。

Input
系数a,b,c,d的值

Output
x在1附近的一个实根

Sample Input
1 2 3 4
Sample Output
-1.65
HINT
主函数已给定如下,提交时不需要包含下述主函数

/* C代码 */
int main()
{
 double solut(double ,double ,double ,double );
 double a,b,c,d;
 scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
 printf("%.2f",solut(a,b,c,d));;
 return 0;
}

参考解答

2965: 趣味取小数

Description
听说大家最近学得不错,教授就准备考考大家,先做出来有奖哦~

编写一个函数,取一个小数的第n(-10<=n<=16)位,当n大于0时,从小数点位置开始向右取小数部分第n位,当n小于0时,从小数点位置开始向左取整数部分的第n位。

#include <stdio.h>
#include <string.h>
int get_one_digit(double num,int n); /*函数声明*/
int main()
{
    double number;
    int n;
    int digit;  /*第n位数字*/
    scanf("%lf %d",&number,&n); /*输入数据*/
    digit=get_one_digit(number,n);  /*调用查找第n位数字并将数字返回复制给digit*/
    printf("%d\n",digit);
    return 0;
}

主程序已给出,请编写get_one_digit函数并提交该函数即可

Input
一个小数,取小数的第n位

Output
小数的第n位

Sample Input
5.5772156649015328 10
Sample Output
9

参考解答

时间: 2024-07-28 16:53:57

C语言程序设计实践(OJ)-初识函数的相关文章

C语言程序设计实践(OJ)-递归函数与宏

2968: 递归方法实现逆序 Description 你知道递归么?简单来说,递归就是函数自身对自身的调用,直到遇到终止条件,再对数据做逆向处理,下面就有一个递归的简单例子等你来处理. #include <stdio.h> void inverted(int); /*函数声明*/ int main() { int n; /*需要逆序的整数*/ scanf("%d",&n); inverted(n); /*调用逆序函数*/ return 0; } void inver

C语言程序设计实践(OJ)-全局变量、文件操作

2969:学生成绩的处理 Description 编写一个函数void calcscore(int n),在函数中输入n个人的成绩,计算最高分,最低分,总分和平均分,要求在主函数中调用函数calcscore计算各种成绩,并在主函数中输出各种计算结果.(使用全局变量在函数之间传递多个数据) #include <stdio.h> double HighScore; /*全局变量,最高分*/ double LowScore; /*全局变量,最低分*/ double SumScore; /*全局变量,

C语言程序设计实践(OJ)-结构体

2428: 计算该日在本年中是第几天 Description 定义一个结构体变量(包括年.月.日).编写一个函数days,由主函数将年.月.日传递给函数days,计算出该日在本年中是第几天并将结果传回主函数输出. Input 年月日 Output 当年第几天 Sample Input 2000 12 31 Sample Output 366 HINT 主函数已给定如下,提交时不需要包含下述主函数 /* C代码 */ int main() { y_m_d date; int days(y_m_d)

C语言程序设计实践(OJ)-用循环解决问题(II)

(1032) 统计字符个数 Description 输入一行字符,分别统计出其中英文字母.数字.空格和其他字符的个数. Input 一行字符 Output 统计值 Sample Input aklsjflj123 sadf918u324 asdf91u32oasdf/.';123 Sample Output 23 16 2 4 参考解答 (1923) ASCII码排序 Description 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符. Input 输入数据有多组,每组占

C语言程序设计实践(OJ)-算术运算与分支结构

(1021)按要求输出 Description 编写一个C程序,输出以下信息: ************************** Very Good! ************************** 数*号可看出,Very前面9空格,Good前面*也是输出的一部分,别光打印Very Good! Input 无需输入 Output ************************** Very Good! ************************** Sample Output

C语言程序设计实践(OJ)-数组初步

2000: 数组逆序 Description 输入10个整数存入一维数组,按逆序重新存放后再输出. Input 输入包括一行.10个以空格隔开的整数. Output 逆序的10个整数,整数以空格隔开. Sample Input 1 3 5 9 7 6 8 2 4 0 Sample Output 0 4 2 8 6 7 9 5 3 1 提示:将有一个格式错误让你崩溃,试一试,实在想不到时到课程主页里看锦囊. 参考解答 1045:插入有序数组中 Description 已有一个已排好的9个元素的数组

C语言程序设计实践-数组初步

[项目1 - 数组大折腾] (1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. int main( ) { int a[20]={...}; //初始化前10个元素 //键盘输入后10个元素的值 //由前往后输出数组中所有元素的值 printf("由前往后,数组中的值是:\n"); return 0; } (2)创建一个长度为10的整型数组并初始化,由后往

C语言程序设计实践-C语言应用实践

第10周实践-阅读下面的程序,试运行并理解其中技术手段 上机时,直接到课程主页点击链接,然后复制源码 [阅读1]使用文件输入输出:运行教学视频中关于文件的程序,体会文件的读写: (1)源码1:文件读写1: (2)源码2:文件读写2 [阅读2]下面的链接中,是银行系统的源码,请阅读并运行(需要的文件请自行建立) 银行系统(第一版)源码 第10周实践:请完成下面的项目,并发博客作为解题报告 [项目1] 编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税

《C语言程序设计与实践(第2版)》——导读

前言 C语言程序设计是一门理论与工程实践密切相关的专业基础课程,在计算机学科教学中具有十分重要的地位.大力加强该课程的建设,提高该课程的教学质量,有利于教学改革和教育创新,有利于创新人才的培养.通过本课程的学习,学生应培养良好的编程风格,掌握常见的算法思路,真正提高运用C语言编写程序解决实际问题的综合能力,为后续课程的实践环节打好基础. 目前国内关于C语言的教材较多,有些教材语法知识介绍细致,较适合作为非专业的等级考试类教学用书:有些教材起点较高,内容深奥,不适于初学者.为了帮助广大学生更好地掌