C程序设计基础及实验 习题05 复习

单选题

2-1 在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为()。

A.void B.double C.char D.int

选择D

2-2 以下正确的说法是()。

A.实参与其对应的形参共同占用一个存储单元

B.实参与其对应的形参各占用独立的存储单元

C.只有当实参与其对应的形参同名时才占用一个共同的存储单元

D.形参是虚拟的,不占用内存单元

选择B

2-3 以下不正确的说法是()。

A.实参可以是常量、变量或表达式

B.实参可以是任何类型

C.形参可以是常量、变量或表达式

D.形参应与对应的实参类型一致

选择C,形参不能是常量

2-4 在函数调用Func(exp1 , exp2+exp3 , exp4*exp5)中,实参的数量是 ()。

A.3 B.4 C.5 D.语法错误

选择A,实参有exp1 , exp2+exp3 , exp4*exp5这三个

2-5 下列程序的输出结果是()。

fun(int a, int b, int c)
{   c = a * b;  }
int main(void)
{
      int c;

      fun(2, 3, c);
      printf(“%d\n”, c);

      return 0;
}

A.0 B.1 C.6 D.无法确定

选择D,因为c没有赋值,所以c是随机值

2-6 以下程序的运行结果是( )。

int x = 5, y = 6;
void incxy( )
{   
    x++;
    y++;
}
int main(void )
{   
    int x = 3;
        
    incxy( );
    printf("%d, %d\n", x, y);
        
    return 0;
}

A.3, 6 B.4, 7 C.3, 7 D.6, 7

选择C,main函数中的局部变量x覆盖了全局函数,intxy()对全局变量x,y起作用,printf输出的是局部变量x和全局变量y(优先使用局部变量)

2-7 以下正确的函数定义形式是()。

A.double fun(int x, int y)

B.double fun(int x ; int y)

C.double fun(int x, int y);

D.double fun(int x, y)

选择A,定义函数末尾不能加“;”,定义函数必须要有形式参数的类型说明,可以写为double fun(int,int)

填空题

4-1

下列程序的输出结果为 2 3 5 7

#include <stdio.h>
int fun3(int m);
int main(void)
{   int n;
    for (n = 1; n < 10; n++) 
        if (fun3(n) == 1) printf("%d ", n);                   /* %d后有1个空格 */
    return 0;
}
int fun3(int m)
{   int i;
    if (m == 2 || m == 3) return 1;     
    if (m < 2 || m % 2 == 0) return 0;
    for (i = 3; i < m; i = i + 2) 
        if (m % i == 0) return 0;
    return 1; 
  } 

4-2 下列程序的运行结果是 4 6。

   #include <stdio.h>
   int f(int x)
   {  static int y=1;
      x+=y;  
      y++;
      return x;
   }
   int main(void)
   {  int k;
      k=f(3);
      printf("%d %d\n",k,f(k));               //%d和%d之间只有1个空格
      return 0;
   }

 程序填空题 

5-1 逆序输出整数

输入一个整数,将它逆序输出。要求定义并调用函数reverse(long number),它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321。请将函数补充完整。运行示例如下:

-123 (输入整数-123)

-321 (逆序后输出-321)

long reverse(long number)

{

        int flag;

        long res=0;

        flag = number < 0 ? -1 : 1;

        if(number<0)

                number = - number;

        while(number != 0){

                res = res*10+number%10;

                number /= 10;

        }

        return flag*res;

}

5-2 判断正整数的各位数字是否按从小到大排列

输入一批正整数(以零或负数为结束标志),判断每个数从高位到低位的各位数字是否按值从小到大排列。要求定义和调用函数fun(m)判断m中各位数字是否按值从小到大排列,满足条件返回1,否则返回0。

#include <stdio.h>

int fun (int m);

int main (void)

{

        int n;

        scanf ("%d", &n);

        while (n > 0) {

                if (fun(n)) {

                        printf("yes\n");

                }else{

                        printf("No\n");

                }

                scanf("%d", &n);

        }

        return 0;

}

int fun (int m)

{

        int cur_digit, old_digit = 10;

        if (m < 0){

                m = -m;

        }

        do{

                cur_digit = m % 10;

                if( cur_digit >= old_digit){

                        return 0;

                }

                old_digit =cur_digit;

                m=m/10;

        }while (m != 0);

        return 1;

}

5-3 输出Yes或No

输入字符'y'或'Y',则在屏幕上输出字符串"Yes.";输入其它字符,则在屏幕上输出字符串"No."。要求定义和调用函数YesNo(ch),当ch为'y'或'Y'时输出"Yes.",当ch为其它字符时输出"No."。

#include <stdio.h>

void YesNo (char ch);

int main(void)

{

        char ch;

        ch = getchar();

        YesNo(ch);

        return 0;

}

void YesNo (char ch)

{

        switch(ch){

                case 'y':

                case 'Y':printf("Yes.");break;

                default:printf("No.");break;

        }

}

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北欧海盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值