码迷,mamicode.com
首页 > 其他好文 > 详细

2016-11-16

时间:2016-11-19 20:32:35      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:date   知识点   影响   std   sys   nbsp   主函数   多个参数   color   

1. 定义一个判断素数的函数isprime(int n),利用该函数输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

 

#include <stdio.h>
int isprime(int n);
int main()
{
    int i,k=0;
    for(i=2;i<=1000;i++)
    {
        if(isprime(i))
        {
            printf("%03d ",i);
            k++;
            if(k%10==0)
            {
                printf("\n");
            }
        }
    }
    printf("一共有%d个素数\n",k);
}
int isprime(int n)
{
    int j;
    for(j=2;j<=n-1;j++)
    {
        if(n%j==0)
            return 0;
        else if(j==n)
            return 1;
    }
}

 

技术分享

2.求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。

 

#include <stdio.h>
int gcd(int a,int b);
int lcm(int a,int b);
int main()
{
    int a,b,k,j;
    printf("请输入两个正整数a,b\n");
    scanf("%d%d",&a,&b);
    while(a<=0||b<=0)
    {
        printf("Error  请重新输入\n");
        scanf("%d%d",&a,&b);
    }
    k=gcd(a,b);
    j=lcm(a,b);
    printf("最大公约数为%d,最小公倍数为%d\n",k,j);
}
int gcd(int a,int b)
{
    int i,min,k;
    if(a>b)
    {
        min=b;
    }
    else
    {
        min=a;
    }
    for(i=1;i<=min;i++)
    {
        if(a%i==0&&b%i==0)
        {
            k=i;
        }

    }
    return k;
}
int lcm(int a,int b)
{
    int j;
    j=a*b/gcd(a,b);
    return j;
}

 

技术分享

 3.编写一个函数fun(double x)求表达式x2-5x+4的值,x作为参数传给函数。在主函数中调用该函数求下列式子的值:

       y1= 22-5*2+4

       y2= (x+15)2-5*(x+15)+4

       y3= sin2x-5*sinx+4    

   求y3用数学函数 sin(x)  头文件math.h

   求解y2和y3时需要输入x的值。

   样例:

   y1=-2, x=0.5时,y2=166.75,y3=1.832721

 

#include <stdio.h>
#include<math.h>
double fun(double x);
int main()
{
    double x,y1,y2,y3;
    printf("请输入x的值\n");
    scanf("%lf",&x);
    y1=fun(2);
    y2=fun(x+15);
    y3=fun(sin(x));
    printf("y1=%lf  y2=%lf  y3=%lf\n",y1,y2,y3);
}
double fun(double x)
{
    double y;
    y=x*x-5*x+4;
    return y;
}

 

技术分享

4.用函数实现:火柴棍等式问题。

 

#include <stdio.h>
int huochai(int a);
int main()
{
    int A,B,C;
    for(A=0;A<=9;A++)
        for(B=0;B<=9;B++)
        {
            C=A+B;
            if(C>9)
            {
                break;
            }
        if(huochai(A)+huochai(B)+huochai(C)==12)
            {
                printf("%d+%d=%d\n",A,B,C);
            }
        }
}
int huochai(int a)
{
    int m;
    switch(a)
    {
        case 0: 
        case 6: 
        case 9: m=6; break;
        case 2: 
        case 3: 
        case 5: m=5; break;
        case 1: m=2; break;
        case 4: m=4; break;
        case 7: m=3; break;
        case 8: m=7; break;
    }
    return m;
}

 

技术分享

 

 

 

附加题

 

    函数实现万年历,其中需定义以下函数

 

    int isValidate(int year,int month)             // 输入数据的合法性验证
    int isLeap(int year)                                    // 判断闰年
    int days(int year,int month)                     //  计算某年某月的天数
    int totalDays(int year,int month)             //  计算某年某月到1900年1月1日的总天数
    void printCanlender(int year,int month)  //  输出万年历

 

#include <stdio.h>
#include<stdlib.h>
int isValidate(int year,int month); // 输入数据的合法性验证
int isLeap(int year);// 判断闰年
int days(int year,int month);//  计算某年某月的天数
int totalDays(int year,int month);//  计算某年某月到1900年1月1日的总天数
void printCanlender(int year,int month);//  输出万年历
int main()
{
    int year,month;
    printf("请输入年份月份,用空格分开\n");
    scanf("%d%d",&year,&month);
    while(isValidate(year,month))
    {
        printf("error\n");
        scanf("%d%d",&year,&month);
    }
    system("cls");
    printCanlender(year,month);
    return 0;
}
int isValidate(int year,int month)// 输入数据的合法性验证
{
    int n=0;    
    if(year<1900||month<1||month>12)
    {
        n=1;
    }
    return n;
}
int isLeap(int year)// 判断闰年
{
    int m=0;
    if((year%4==0&&year%100!=0)||year%400==0)
    {
        m=1;
    }
    
    return m;
}
int days(int year,int month)//  计算某年某月的天数
{
    int day;
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
    {
        day=31;
    }
    else if(month==4||month==6||month==9||month==11)
    {
          day=30;
    }
    else
    {
         if(isLeap(year))
         {
              day=29;
         }
         else
         {
             day=28;
        }
    }
    return day;
}        
int totalDays(int year,int month)//  计算某年某月到1900年1月1日的总天数
{
    int i,days=0;
    for(i=1900;i<year;i++)
    {
        if(isLeap(i))
        {
            days=days+366;
        }
        else
        {
            days=days+365;
        }
    }
    for(i=1;i<month;i++)
    {
        if(i==1||i==3||i==5||i==7||i==8||i==10|i==12)
        {
            days+=31;
        }
        else if(i==4||i==6||i==9||i==11)
        {
            days+=30;
        }
        else
        {
            if(isLeap(year))
            {
                days+=29;
            }
            else
            {
                days+=28;
            }
        }
    }

    return days;
}
void printCanlender(int year,int month)//  输出万年历
{
    int weekday,i;
    weekday=(totalDays(year, month)+1)%7;
    printf("%d年%d月\n",year,month);
    printf("\n            *******%d年%d月*******\n",year,month);
    printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");    
    for(i=0;i<weekday;i++)
    {
        printf("\t");
    } 
    for(i=1;i<=days(year,month);i++)
    {
        printf("  %d\t",i);
        if((i+weekday)%7==0)
        {
            printf("\n");
        }
    }
    printf("\n");
}

 

 

 

 

 

技术分享

 

知识点总结:

1.一般情况下函数中不应有输入输出语句

2.函数的返回语句:

(1)函数中可以有多个return语句

(2)若无return语句,遇}时,自动返回调用函数

(3)若函数类型与return语句中表达式值的类型不一致,按前者为准

3.函数的调用

(1)()起到了表示函数调用的重要作用

(2)即使没有参数也需要()

(3)如果有参数,则需要正确的数量和顺序

(4)函数没有返回值的时候,单独作为一个函数调用语句

         如:printstar();

               printf("Hello,World\n");

(5)函数有返回值时,可放到一个赋值表达式语句中:m=max(a,b)*2;

(6)形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。
形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。形式参数是用于调用函数和被调用函数之间进行数据传递的,使用时需进行类型说明。形参可以为空,也可以由多个参数组成。
(7)实参:可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值输入等办法使实参获得确定值。

(8)自定义函数只是暂时储存数值,执行结束后便会清空。

(9)不允许函数体内嵌套定义函数

 

2016-11-16

标签:date   知识点   影响   std   sys   nbsp   主函数   多个参数   color   

原文地址:http://www.cnblogs.com/333xar/p/6070529.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!