作业 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语言将字符串作为一个特殊的一维字符数组?

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

原文地址:https://www.cnblogs.com/laurenliu1994/p/3398149.html