• 作业 4 函数应用


    1、输入2个正整数m和n(1≤m,n≤1000),输出m~n之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。要求定义并调用函数is(number)判断number的各位数字之和是否等于其自身。
    /* 输出m~n之间的所有水仙花数 */
    #include<stdio.h>
    int is(int number);   //自定义 is number函数判断各位数字之和是否等于其自身
    int main(void) { int i; for(i=1;i<=10000;i++) if(is(i)) printf("%d ",i); } int is(int number){ //调用函数
    int sum,n,p; sum=0; n=number; while (number!=0){ p= number%10; //取出个位数值
    sum
    =sum+p*p*p; number=number/10; } return (sum==n); }
     

    2、编写一个程序,判断从键盘接收的数字是否为回文数字。回文数字就是顺着看和倒着看是相同的数。如121、656、2332等

    /* 判断是否为回文数字 */
    #include <stdio.h> int ishuiwen(int n); //定义第一个自定义函数判断是否回文
    int daozhuan(int n); //第二个自定义函数判断倒转后结果是否与原数相同 int main(void) { int n; printf("请输入一个数字: "); scanf_s("%d",&n); if (ishuiwen(n)) { //若是一个回文数字,则输出:是一个回文数字
    printf(
    "%d是一个回文数字 ",n); } else { printf("%d不是一个回文数字 ",n); } } int ishuiwen(int n) { //调用判断是否回文
    int i; i = daozhuan(n); //将数字顺序调转,看前后是否相同
    if (i == n) { //若相同返回1,不相同返回0
    return 1; } else { return 0; } } int daozhuan(int n) { /定义倒转数字
    int i,j=0; i = n; while (i) { j = j*10 + i % 10; i = i / 10; //倒转位数
    }
    return j; }

     4、输入x、n后输出下列算式的值,fact(n)实现n!,mypow(x,n)实现xn。

    /* 输入x、n后输出下列算式的值,fact(n)实现n!,mypow(x,n)实现xn */
    #include <stdio.h>
    #include<math.h>                 //程序中需要调用fact函数和pow函数
    double fact(int n);              //定义fact函数求阶乘
    int main(void)
    {
     int i,x,flag;                   //分子为flag
     double n,sum;                   //sum表示总和
      printf("输入x和n:
    ");
      scanf_s("%d %f",&x,&n);
      sum=0;
      flag=1;
      n=x;
     
    
      for(i=1;i<=n;i++){  
          sum=sum+flag*powl(x,i)/fact(i);
       flag=-flag;                   //每次循环后分子变号  
      }
      printf("%.2f
    ",sum);
     return 0;
    }
    double fact(int n)             //调用fact函数
    {
     int i;
     double fact=1;
     for(i=1;i<=n;i++)
     {
      fact=fact*i;                 //求阶乘
     }
     return fact;
    }

    6、输出80到120之间的满足给定条件的所有整数,条件为构成该整数的每位数字都相同。要求定义和调用函数is(n)判断整数n的每位数字是否都相同,若相同则返回1,否则返回0。

    /* 输出80-120间的整数,要求构成该整数的每位数字都相同 */
    #include <stdio.h>
    int is(int n);
    int main(void)
    { 
        int  i;     
    for(i = 80; i <= 120; i++)    //判断80-120之间的数字
    if(is(i) != 0) printf("%d ", i); printf(" "); } int is(int n) { int old, digit; //定义整型变量,位数
    old
    = n % 10; //首先提取出个位数字
    do{ digit = n % 10; //提取出十位数字
    if( digit != old ) //若不相等,返回0
    return 0 ; digit = old; n = n / 10; } while( n != 0 ); return 1; }


     

    7、阅读教材 第五章 函数,回答以下问题:

    1) 怎样定义函数?如何调用函数?如何声明函数?

    答:函数定义的一般形式为:函数类型 函数名(形式参数表)/* 函数首部 */

    函数实现过程 /* 函数体 */

    2) 什么是函数的参数?什么是形参、实参?在函数调用时,参数是如何传递的?

    答:1.数学中函数的自变量在c语言中被称为参数

          2.函数定义时,位于其首部的参数被称为形参,主调函数的参数被称为实参

          3.程序运行遇到函数调用时,实参的值依次传给形参,这就是参数的传递

    3) 在使用函数的过程中,要注意哪些问题?怎样确定函数的参数?

    答:1.函数首部后面不能加分号,它和函数体一起构成完整的函数定义,实参和形参应一一对应,数量应相同;

         2.按需分配,需要什么参数就设定什么参数

    4) 如何使用局部变量和全局变量?

    答:局部变量一般定义在函数或复合语句的开始处,全局变量一般定义在程序的最前面,即第一个函数的前面。

    5) 什么是静态变量?

    存放在静态存储区,不会因函数调用结束而被系统收回,而是持续到程序结束的变量。

    8、预习第七章 数组,并回答一下问题:

    1) 什么是数组? 为什么要使用数组? 如何定义数组?

     答:1.数组是最基本的构造类型,它是一组相同类型数据的有序集合。

          2.定义数组要确定哪些数据组成数组,数组中有多少个元素,属于哪个数据类型。

           定义一维数组的一般形式为:类型符 数组名[常量表达式];

    2) 如何引用数组元素?

    答: 引用数组元素的表示形式为:数组名[下标]

    3) 二维数组的元素在内存中按什么方式存放?

    答:二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第1行的元素,

         接着再存放第二行的元素

    4) 什么是字符串? 字符串结束符的作用是什么?

    答:1.字符串常量就是用一对双引号括起来的字符序列,即一串字符,它有一个结束标志''

          2.起一个隔绝的作用,字符串遇''结束,也就是说,第一个''之后的其他数组元素与该字符串无关

    5) 如何实现字符串的存储和操作,包括字符串的输入和输出?

    答:将字符串存入一维字符数组

    6) 怎样理解C语言将字符串作为一个特殊的一维字符数组?

    答:字符串的有效长度就是有效字符的个数,所以也可算是特殊的字符数组

  • 相关阅读:
    求解整数集合的交集(腾讯笔试)
    关于屏幕适配之比例布局
    (转)注册JNI函数的两种方式
    正则表达式记录
    当年一个简单可用的多线程断点续传类
    最近用到的几个工具方法
    Android中包含List成员变量的Parcel以及Parcel嵌套写法示例
    java实现计算MD5
    一个用于去除状态栏和虚拟导航栏的BaseActivity
    MVP的模板
  • 原文地址:https://www.cnblogs.com/laurenliu1994/p/3398149.html
Copyright © 2020-2023  润新知