鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[课后作业] S1E6:数据类型 | 课后测试题及答案

    [复制链接]
发表于 2026-3-16 13:43:24 | 显示全部楼层
零基础入门学习C语言封面
《零基础入门学习C语言》
小甲鱼 著
立即购买
aaa
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-17 21:53:17 | 显示全部楼层
0. 对于整型变量来说,long int 已经可以存放足够大的整数了,但若有一个更大的整数,应该尝试使用什么类型?
long long int

1. 就我们目前学到的所有数据类型中,C 标准规范存储空间最小的是?
4位 1位

2. 我们说 printf() 是一个用于格式化打印的函数,那 sizeof() 是一个函数吗?ia{~^,-'
不是,它是一个特殊的运算符

3. C 语言定义一个字节等于多少比特位?
8个比特位

4. C 标准只规定一个数据类型的具体尺寸(其他数据类型都是规定相对范围),你知道是哪个数据类型如此特殊吗?
布尔类型

5. 如有 int i = 123; 请指出下边错误的语句?
E,F

6. unsigned int 和 int,哪个可以表示更大的整数?m}vp(*
int

7. 我们说“程序不会说谎”,言下之意是?
数据具体是多大就储存多大
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-18 15:22:03 | 显示全部楼层
123
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-19 16:16:14 | 显示全部楼层
本帖最后由 hakariii 于 2026-3-19 16:20 编辑

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

int main()
{
        unsigned long long int temp;
        unsigned long int sum = 0;
        unsigned long int weight;
        int i;
       
        for(i=0;i<64;i++)
        {
                temp=(unsigned long)pow(2,i);
                sum = sum + temp;
        }
        weight = sum/25000;
         
        printf("总共%llu粒粮食\n",sum);
        printf("总计%llu公斤粮食\n",weight);
       
        return 0;
       
}
为啥结果是32位的啊
找到原因了 上面变量是unsigned long 不是unsigned long long
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-19 18:38:22 | 显示全部楼层
屏幕截图 2026-03-19 183725.png 屏幕截图 2026-03-19 183758.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-20 13:04:51 | 显示全部楼层
qqq
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-21 19:21:43 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-24 16:30:51 | 显示全部楼层
求答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-25 18:44:08 | 显示全部楼层
看答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-27 20:14:42 | 显示全部楼层
long long int
字节类型
不是
8
int
E int里面没有加符号      F size和of 分开了
unsigend int
电脑只能识别是和否


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

int main()
{
        int sum,temp,weight,i;
       
       
        for (i=0; i < 64; i++)
        {
                 
                temp = pow(1,2)+(2,3)+(3,4)+(4,5)+(5,6);
                  sum = sum + temp;               
        }
       
        weight = sum /25000;
       
        printf("舍罕王应该给予达依尔%d粒麦子!\n",sum);
        printf("如果每25000粒麦子为1kg,那么应该给%d公斤麦子!\n",weight);
       
       
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-28 16:43:09 | 显示全部楼层
结局
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-30 11:39:30 | 显示全部楼层
long long int
_bool char
是
8比特
_bool
B F
int
#include <stdio.h>
#include <math.h>
int main()
{
    int result;
    result = pow(1,2) + pow(2,3) + pow(3,4) + pow(4,5) + pow(5,6);
    printf("result = %d\n",result);
    return 0;

}
#include <stdio.h>
#include <math.h>
int main()
{
   int i;
   double temp;
   double weight;
   double sum = 0;
   for (i = 0;i < 64; i++)
   {
        temp = pow(2,i);
        sum = sum + temp;
   }
   weight = sum / 250000;
   printf("king needs to give %.2f goods\n",sum);
   printf("the weight of goods is %.2f\n",weight);
   return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-4-1 19:43:36 | 显示全部楼层
0.long long int
1.bit short
2.是
3.8
4.char
5.a b d e f
6.u int
7.只有0 1
#include <stdio.h>
#include<math.h>
int main(){
    printf("%f\n", pow(1,2)+pow(2,3)+pow(3,4)+pow(4,5)+pow(5,6));
    long long int sum=0;
    long long int temp=0;
    long long int weight = 0;
    int i;
    for(i=0;i<64;i++){
        temp = pow(2,i);
        sum =sum+temp;
    }
    weight = sum /25000;
    printf("应给与%u\n",sum);
    printf("应给与%u斤\n",weight );
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-4-2 20:59:02 | 显示全部楼层
h
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-4-3 09:07:12 | 显示全部楼层
测试题
0:应噶使用long long int.
1:是char类型.  更改:是_Bool,只要求足够容纳0和1两个数即可.
2:也是一个函数,返回值为函数内数据类型的大小.\ 更改:不是,它是一个特殊的操作符,并不是函数.是运算符.
3:一个字节为8个比特位(bit)构成.
4:char字符型.
5:E, F.
6:unsigned int 可以表示更大的整数.
7:因为计算机是二进制,只有0或1的情况,非常的绝对.

动动手
0:

  1. #include <math.h>
  2. #include <stdbool.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>

  5. int main(int argc, char *argv[]) {
  6.   int result = pow(1, 2) + pow(2, 3) + pow(3, 4) + pow(4, 5) + pow(5, 6);
  7.   printf("result = %d\n", result);
  8.   return EXIT_SUCCESS;
  9. }
复制代码



1:
  1. #include <math.h>
  2. #include <stdio.h>

  3. int main() {

  4.   int i;
  5.   unsigned long long int sum = 0;
  6.   unsigned long long int temp;
  7.   unsigned long long int weight;
  8.   for (i = 0; i < 64; i++) {

  9.     temp = pow(2, i);
  10.     sum = sum + temp;
  11.   }
  12.   weight = sum / 25000;

  13.   printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
  14.   printf("如果每25000粒麦子为1kg,那么应该给%llu粒麦子!\n", weight);

  15.   return 0;
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-4-3 23:06:30 | 显示全部楼层
题0
#include<stdio.h>
#include<math.h>

int main()
{

        int a = pow(1, 2) + pow(2, 3) + pow(3, 4) + pow(4, 5) + pow(5, 6);
        printf("值 = %d\n", a);
        return 0;
}




题1
#include<stdio.h>
int main()
{
        unsigned long long int tmp = 1;                        //64位无符号整形    %llu
        unsigned long long int sum = 1;
        int i = 0;

        for (i = 1; i < 64; i++)
        {
                tmp *= 2;                                //第 i+1 格的数量
                sum += tmp;                                //累计数量
        }
        long long weight = sum / 25000;

        printf("国王要给 %llu 粒麦子 = %lld kg麦子(25000粒 = 1kg)\n",sum,weight);
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-4-5 12:30:58 | 显示全部楼层
123
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-4-9 21:17:20 | 显示全部楼层
#include <stdio.h>
#include <math.h>

int main()
{
    int i;
    unsigned long long int sum = 0, weight;

    for (i = 1; i < 65; i++)
    {
        sum = sum + (unsigned long long)pow(2, i - 1);
    }

    weight = sum / 25000;

    printf("舍罕王要兑现他的许诺共要%llu粒麦子赏赐他的宰相\n", sum);
    printf("如果每25000粒麦子重1kg,那么舍罕王应该给予达依尔%llu公斤麦子\n", weight);
   
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-4-10 21:06:21 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-4-14 17:21:23 | 显示全部楼层
练习题

0.使用long long int
1._Bool。因为它只存了两个值(真/假)
2.并不是,sizeof()是一种运算符
3.一字节等于八比特位
4.char?
5.E F
E是因为     在使用sizeof()获取数据类型大小时,语法为sizeof(type_name),缺了括号
F是因为单纯的写错了sizeof,把它拆开了。

6.unsigned int ,因为其无负数,导致其可存储的正数会比[short]int大一倍

7.如果从课程里面来说的话,意思是指程序的执行只可能有两种结果,是/否,不会出现模棱两可的情况。

动动手

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

int main ()
{
    int result = pow(1,2) + pow(2,3) + pow(3,4) + pow(4,5) + pow(5,6);

    printf("1**2+2**3+3**4+4**5+5**6的值是%d\n",result);

    return 0;
}

1.(这里的输出不论怎么改都是和图片不一样,虽然想到了问题大概率出在printf和变量的数据类型声明有误,但最后也没解决QAQ)

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

int main()
{
    long double sum = 0;
        short int temp,i;
    double weight;
      
    for (i=0; i < 64; i++)
    {
        temp = pow(2,i);
        sum = sum + temp;
    }
   
    weight = sum / 25000;
   
    printf("舍罕王应该给予达依尔%u粒麦子!\n",sum);
    printf("如果每25000粒麦子为1kg,那么应该给%u公斤麦子!\n",weight);
   
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-10-11 09:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表