C语言作业五

物联1234DX锋

1.以下正确的说法是( C )。

    A. 定义函数时,形参的类型说明可以放在函数体内。        错误,应放在形参前。
    B. return后边的值不能为表达式。        错误,可以为表达式。
    C. 如果函数值的类型与返回值类型不⼀致,以函数值类型为准。        正确。
    D. 如果形参与实参类型不⼀致,以实参类型为准。        错误,以形参为准。


2.若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数( D )。

    A. 没有返回值
    B. 返回若干个系统默认值
    C. 能返回一个⽤户所希望的值
    D. 返回一个不确定的值


3.有以下程序,程序运行后的输出结果是(   9

)。需附上简要解释。

float fun(int x, int y) {
        return (x + y);
}


void main() {
        int a = 2,b = 5,c = 8;

        printf("%3.0f\n", fun((int) fun(a + c, b), a - c));
}

#include <stdio.h>
#include <math.h>

float fun(int x, int y) {
	return (x + y);
} 

void main() {
	int a = 2, b = 5, c = 8;
	printf ("%3.0f\n",fun((int) fun(a + c, b), a - c));
    /*先求fun(a+c,b)得出结果为15,再求fun(15,a-c)得出结果为9。
      输出为3.0f,即输出为至少为三位数且不含小数的数;
      由于结果只含一位数,输出数前有两个空格。最后输出换行。*/
}

 

4.有以下程序,程序运行后的输出结果是( 3

)。

int f (int n)
{
        if (n == 1) return 1;
        else return f(n - 1) + 1;
}
void main()
{
        int i, j = 0;
        for (i = 1; i < 3; i++)    j += f (i);
        printf ("%d\n", j);

}

#include <stdio.h>
#include <stdlib.h>

int f (int n)
{
	if (n == 1)
		return 1;  //即f(1)为1。
	else
		return f(n - 1) + 1;  //当n不为1时f(n)=f(n-1)+1。
}

void main() {
	int i, j = 0;
	for (i = 1; i < 3; i++)  //i为1和2时循环,i为3时停止循环。
		j += f (i);  //i为1时,j为f(1)=1;i为2时,j为1+f(2)=1+f(1)+1=1+1+1=3。
	printf ("%d\n", j);  //最终j的值为3.
}


5.编程题
编写一个函数 palindrome , 该函数用于判断一个数是否是回文数。然后在主函数中使
用该函数,判断位数为5的正整数的回文数数量。

1. 回文数是指某数与其反序数相等,如5、131、1551、345676543. 
2. 位数为5的正整数,即[10000,99999)之间的正整数。

#include <stdio.h>
#include <stdlib.h>

int main() {
	int num;
	printf ("%d",palindrome(num));  //调用函数,输出结果。
	return 0;
}

int palindrome(int num) {  //自定义一计算五位回文数数量的函数。
	int count = 0;  //用于计算五位回文数数量。
	for (num = 10000; num <= 99999; num++) {
		if (num%10 == num/10000%10 && num/10%10 == num/1000%10)
            //判断第一位数与第五位数相等且第二位数与第四位数相等是否成立;
			count++;  //若成立则计数。
	}
	return count;
} 

 

6.附加题编写一个函数 symPalindrome , 该函数用于判断一个数是否为对称回文数。然后在主函数中使用该函数,判断位数为5的正整数的对称回文数数量。

对称回文数指某数与其平方都是回文数。例如,n=11时,11的平方等于121;n=111时,111的平方等于12321。

#include <stdio.h>
#include <stdlib.h>

int main() {
	int spCount;
	printf ("%d",symPalindrome(spCount));  //调用symPalindrome函数输出结果。
	return 0;
}

int count(int count_res) {
	for (count_res = 100; count_res * count_res <= 99999; count_res++)
		count_res++;  //易知100的平方等于10000,累加算出使n的平方为五位数成立的n的范围。
	return count_res;
}
/*自定义count函数算出n的平方属于[10000,99999)的取值范围。*/

int symPalindrome(int spCount) {
	int i, count_res;  //计算位数为5的正整数的对称回文数数量。
	for (i=100; i <= count(count_res); i++) {
		int num = i * i;
		if (num%10 == num/10000%10 && num/10%10 == num/1000%10 && i%10 == i/100%10)
			spCount++;  //若i为回文数,i的平方为五位回文数,计数加一。
	}
	return spCount;
}
/*自定义symPalindrome函数,调用count函数,依次算出符合n为回文数且n的平方为五位回文数的情况的数量。*/

 

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值