物联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的平方为五位回文数的情况的数量。*/