唐伯虎 发表于 2021-7-6 11:25:48

C语言期中考试+部分期末考试试题——SZ(期末的只有大题)

  
C语言期中考试试题















#include<stdio.h>
double fact (int N);
int main(void)
{
    int i,N,sum;
    doubleitem;
    scanf("%d",&N);
    sum=0;
    for(i=1;i<=N;i++)
    {
      sum=sum+fact(i);
    }
    printf("%d",sum);
    return 0;
}
double fact (int N)
{
    int i;
    double result;
    result=1;
    for(i=1;i<=N;i++)
    {
   result=result*i;
    }
    return result;
}
  ==填空题 会的大佬,可以评论区 写一下哈 ==
  ————————————————————————————————————
————————————————————————————————————

下面是期末考试部分试题
  只记得两个大题了。。。。。 其它的都挺简单的,大家应该没啥问题。(哈哈)
第一题:计算圆柱体的体积

  直接上代码啦!
#include<stdio.h>
double cylinder(double r,double h)//构造函数,括号里的double不能忘!!!
{
double result;
result=3.1415926*r*r*h;
return result;
}
int main()
{
double r,h,volume;
scanf("%lf%lf",&r,&h);
volume=cylinder(r,h);//调用cylinder()函数
printf("Volume = %.3lf",volume);
return 0;
}


  注意:
1 printf输出float和double都可以用%f,double还可以用%lf。
2 scanf输入float用%f,double输入用%lf,不能混用。
double、float都是浮点型。double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大。double精度是float的两倍,所以需要更精确的计算常使用double。
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。
double 和 float 的区别是double精度高,但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。

第二题 三色球问题
  有红黄绿三种颜色的球,其中红球3个,黄球3个,绿球6个。现将这12个球混放在一个盒子中,从中任意摸出8个球,编程计算摸出球的各种颜色的搭配(或者是问一共有多少种)

上代码:
#include <stdio.h>
#define RED_BALL_NUM 3
#define YELLOW_BALL 3
#define GREEN_BALL 6
int main()
{
    int red, yellow, green;
    printf("red   yellow      green\n");
    for (red = 0; red <= RED_BALL_NUM; red++) {
      for (yellow = 0; yellow <= YELLOW_BALL; yellow++) {
            for (green = 0; green <= GREEN_BALL; green++) {
                if (red + yellow + green == 8) {
                  printf(" %d         %d          %d\n", red, yellow, green);
                }
            }
      }
    }
    return 0;
}
  结果如下图:

  如果问的是一共有多少种,并没有让打印出所有的结果,可以这么写
#include <stdio.h>
#define RED_BALL_NUM 3
#define YELLOW_BALL 3
#define GREEN_BALL 6
int main()
{
    int red, yellow, green,count=0;
    for (red = 0; red <= RED_BALL_NUM; red++) {
      for (yellow = 0; yellow <= YELLOW_BALL; yellow++) {
            for (green = 0; green <= GREEN_BALL; green++) {
                if (red + yellow + green == 8) {
                  count++;
                }
            }
      }
    }
    printf("一共有%d种",count);
    return 0;
}
  结果如下图:

不管怎么问,关键就是三重for循环,掌握关键,怎么变都不怕!!!



  

  
文档来源:51CTO技术博客https://blog.51cto.com/u_15288224/2987480
页: [1]
查看完整版本: C语言期中考试+部分期末考试试题——SZ(期末的只有大题)