C语言练习题组02

这篇博客包含了多个C语言编程题目,涉及到数据类型的输出和指针操作。同时,文章探讨了回调函数的概念,指出回调函数可以是全局、静态或类成员函数,常用于通知机制,可能被一次性或循环调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 以下程序运行后的输出结果是
main() {
    int a, b, d = 25;
    a = d/10%9;
    b = a && (-1);
    printf("%d,%d\n", a, b);
}
  • 6,1
  • 2,1
  • 6,0
  • 2,0
2. 下列代码运行的结果为
class B
{
	public:
   		virtual void Fun(){}
};
class D: public B
{
	public:
  		 void Fun(){}
};
D dd;
B* pb = ⅆ
D* pd = ⅆ
pb->Fun();
pd->Fun();
  • B::Fun, D::Fun
  • B::Fun, B::Fun
  • D::Fun, D::Fun
  • D::Fun, B::Fun
3. 设已定义浮点型变量data,以二进制代码方式把data的值写入输出文件流对象outfile中,正确的语句是()
  • outfile.write((double ) &data, sizeof(double));
  • outfile.write((double ) &data, data);
  • outfile.write((char *) &data, sizeof(double));
  • outfile.write((char *) &data, data);
4. 下面有关回调函数的说法,错误的是?
  • 回调函数一般是一个通过函数指针调用的函数
  • 回调函数可能被系统API调用一次,也可能被循环调用多次
  • 回调函数本身可以直接是全局函数 、静态函数或某个特定类的成员函数
  • 回调函数可用于通知机制

5. 下列程序的运行结果是
void main() {
    char c = 'a'if ('a' < c <= 'z') printf ("Low”)else printf("UP")}
  • LOW
  • UP
  • LOWUP
  • 程序语法错误

6. 看下面的代码,sizeof(s)的结果是
struct s
{
    int x: 3;
    int y: 4;
    int z: 5;
    double a;
}
  • 16
  • 32
  • 20
  • 24

7. 下列程序的运行结果是PP 10003,请为横线处选择合适的程序( )
#include <stdio.h>
#include <string.h>

struct STU {
    char name[10];
    int num;
};

void f(char _____, int num) {
    struct STU s[2] = {{"SS", 10001}, {"PP", 10002}};
    num = s[1].num;
    strcpy(name, s[1].name);
}

main() {
    struct STU s[2] = {{"YY", 10003}, {"LL", 10004}}, *p;
    p = s;
    f(p->name, p->num);
    printf("%s %d\n", p->name, p->num);
}
  • *name
  • name[]
  • name
  • &name

8. 以下代码有什么问题
struct Test
 {
     Test( int ) {}
     Test() {}
     void fun() {}
 };
 void main( void )
 {
     Test a(1);
     a.fun();
     Test b();
     b.fun();
 }
  • b.fun()会出错
  • Test结构的定义中应该加上public修饰符,这样才能main函数中调用改类的方法
  • Test(int){} 应该改成Test(int a){}
  • 以上说法都不正确

练习参考答案

### 关于翁恺 C语言 练习题 02-2 的题目解析 翁恺的C语言课程中的练习题通常旨在帮助学习者掌握基础编程技能以及逻辑思维能力。对于练习题 **02-2**,虽然具体题目未完全提供,但从常见的教学内容推测,该题目可能涉及输入处理、基本运算或格式化输出等内容。 以下是基于常见模式的一个假设版本及其解答: #### 假设题目描述 编写一个程序,接收两个整数 `a` 和 `b`,分别表示小时和分钟的时间差值。计算两者相加后的总时间,并以标准的24小时制形式输出最终结果。 --- #### 解决方案分析 此问题的核心在于如何正确地将时间单位转换并保持在合法范围内(即不超过一天)。可以通过以下方式实现: 1. 将输入的时间拆分为小时部分 (`a`) 和分钟部分 (`b`)。 2. 转换为统一的时间单位(如总的分钟数),便于后续操作。 3. 对累加的结果取模 `%` 运算,确保其范围始终处于合理区间内。 4. 输出结果时重新合成小时和分钟的形式。 下面是具体的代码实现[^2]: ```c #include <stdio.h> int main() { int a, b; scanf("%d %d", &a, &b); // 计算总分钟数 int total_minutes = (a / 100 * 60 + a % 100) + b; // 调整回24小时制 int final_hours = (total_minutes / 60) % 24; int final_minutes = total_minutes % 60; // 格式化输出 printf("%02d%02d\n", final_hours, final_minutes); return 0; } ``` 上述代码通过先将所有时间转化为分钟总数来简化计算过程,随后再将其还原至标准的小时与分钟显示格式。 --- #### 测试案例说明 为了验证程序功能是否正常工作,可以设计几个测试用例来进行检验: | 输入 | 预期输出 | |------------|--------------| | 1230 90 | 1400 | | 2359 1 | 0000 | | 0000 1440 | 0000 | 这些例子覆盖了边界条件和其他特殊情况下的表现情况。 --- ### 注意事项 当解决此类问题时需要注意几点: - 时间溢出的情况需特别留意,比如超过一天或者负数值等情况。 - 使用标准化函数库能够提高可读性和维护性的同时减少错误发生几率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

muskfans

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

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

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

打赏作者

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

抵扣说明:

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

余额充值