1. 以下正确的说法是( )。
A. 定义函数时,形参的类型说明可以放在函数体内。
B. return后边的值不能为表达式。
C. 如果函数值的类型与返回值类型不⼀致,以函数值类型为准。
D. 如果形参与实参类型不⼀致,以实参类型为准。
答案:D
原因:1.在定义函数时,形参的类型说明要放在函数声明中,不能放在函数体内。
2.return 后边的值可以为表达式。
3.如果函数值的类型与返回值类型不一致,以返回值类型为准。
2. 若调⽤⼀个函数,且此函数中没有return语句,则正确的说法是:该函数( )。
A. 没有返回值
B. 返回若⼲个系统默认值
C. 能返回⼀个⽤户所希望的值
D. 返回⼀个不确定的值
答案:A
原因:如果调用一个函数,而该函数中没有return语句,那么该函数将不会返回任何值,因此可以说该函数没有返回值,如void main(){}
3. 有以下程序,程序运⾏后的输出结果是( )。需附上简要解释。
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)); }
答案: 9(9前有两个空格)
原因:
1.先计算fun(a+c,b),结果为15。
2.然后计算fun((int)fun(a+c,b),a-c),结果为9。
3.输出%3.0f,数字占三位,从右边开始,小数点为0,则为空格空格9。
4. 有以下程序,程序运⾏后的输出结果是( )。
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); }
答案:3
原因:1.f(1)=1,f(2)=f(1)+1=2
2.j=f(1)+f(2)=1+2=3
5. 编写⼀个函数 palindrome , 该函数⽤于判断⼀个数是否是回⽂数。然后在主函数中使 ⽤该函数,判断位数为5的正整数的回⽂数数量。
📢1. 回⽂数是指某数与其反序数相等,如5、131、1551、345676543.
2. 位数为5的正整数,即[10000, 99999)之间的正整数。
#include <stdio.h>
int palindrome(int x);
int main(void)
{
int cnt=0, i, d;
for (i=10000; i<99999; i++) //对于五位数进行判断
{
cnt += palindrome(i); //累加返回值0或1
}
printf("位数为5的正整数的回文数数量:%d", cnt);
return 0;
}
int palindrome(int x)
{
int isPrime=0, sum=0, n, temp;
n = x;
do {
temp = x % 10;
sum = sum * 10 + temp;
x /= 10;
} while (x>0); //逆序
if (sum==n) //如果想等,返回1
isPrime=1;
return isPrime;
}
6.编写⼀个函数 symPalindrome , 该函数⽤于判断⼀个数是否为对称回⽂数。然后在主函 数中使⽤该函数,判断位数为5的正整数的对称回⽂数数量。
📢 对称回⽂数指某数与其平⽅都是回⽂数。例如,n=11时,=121 ;n=111 时,=12321 。
#include <stdio.h>
int symPalindrome(int x);
int main(void)
{
int cnt=0, i, d;
for (i=10000; i<99999; i++) //对于五位数进行判断
{
cnt += symPalindrome(i);
}
printf("位数为5的正整数的对称回文数数量:%d", cnt);
return 0;
}
int symPalindrome(int x)
{
int isPrime=0, sum1=0, sum2=0, n, temp, d, t;
n = x;
d = x * x;
t = d;
do {
temp = x % 10;
sum1 = sum1 * 10 + temp;
x /= 10;
} while (x>0); //逆序x
do {
temp = d % 10;
sum2 = sum2 * 10 + temp;
d /= 10;
} while (d>0); //逆序x的平方
if (sum1==n && sum2==t) //如果x为回文数并且x的平方也是回文数则返回1
isPrime=1;
return isPrime;
}