C语言零基础学作业题4

第1题:func(1) = 

A、30        B、20        C、16        D、0

int func(int a)
{
    int b;
    switch (a)
    {
        case 1: b = 30;
        case 2: b = 20;
        case 3: b = 16;
        default: b = 0;
    }
    return b;
}

选择:D

      在这段代码中,函数func有一个输入参数a,并且根据不同的输入值,使用switch语句给变量b赋予不同的值。然而,在每个case后面没有加上break语句,这导致了switch语句的“穿透”现象。当输入值为1时,case 1会被执行,b被赋值为30,但是程序会继续执行下去,进入case 2b被赋值为20。同样的,当输入值为2或3时,b也会被赋值为20或16。最后,当输入值不是1、2、3时,default语句会执行,b被赋值为0。因此,不管输入的值是什么,最后都会返回0。

第2题:switch(c)语句中,c不可以是什么类型( )

A、int        B、long        C、char        D、float

选择:D

        在 C 语言的 switch 语句中,c 不能是浮点类型(float 和 double)和字符串类型(char数组)。

第3题:下面代码的执行的结果是什么?

A、secondthird        B、hello        C、firstsecond        D、hellothird

#include <stdio.h>
int main() {
	int x = 3;
	int y = 3;
	switch (x % 2) {
	case 1:
		switch (y)
		{
		case 0:
			printf("first");
		case 1:
			printf("second");
			break;
		default: printf("hello");
		}
	case 2:
		printf("third");
	}
	return 0;
}

选择:D

        在这段代码中,x%2=1,所以第一个switch语句进入case 1。在case 1中,进行第二个switch语句,变量为y=3,由于不匹配任何一个case,所以执行default语句,打印hello。由于case 1后面没有加上break语句,这就导致了switch语句的“穿透”现象。打印“third”。因此最终打印“hellothird”。

第4题:关于while(条件表达式)循环体,以下叙述正确的是()?(假设循环体里面没有break, continue, return, goto等等语句)

A、循环体的执行次数总是比条件表达式的执行次数多一次

B、条件表达式的执行次数总是比循环体的执行次数多一次

C、条件表达式的执行次数与循环体的执行次数一样

D、条件表达式的执行次数与循环体的执行次数无关

选择:D

        在while循环中,条件表达式会在每次循环开始之前进行判断,如果条件表达式的结果为真,则执行循环体;如果条件表达式的结果为假,则跳出循环。因此,循环体的执行次数取决于条件表达式的判断结果。条件表达式的执行次数与循环体的执行次数无关。

第5题:有以下程序
#include <stdio.h>
int main()
{
	int a = 0, b = 0;
	for (a = 1, b = 1; a <= 100; a++)
	{
		if (b >= 20) break;
		if (b % 3 == 1)
		{
			b = b + 3;
			continue;
		}
		b = b-5;
	}
	printf("%d\n", a);
	return 0;
}

程序的输出结果是(  )?

A、10        B、9        C、8        D、7

选择:C

 第一次循环:a = 1,b=1--->b小于20,if不成立,b%3==1%3==1成立,b=b+3, 此时b的值为4

  第一次循环:a = 2,b=4--->b小于20,if不成立,b%3==4%3==1成立,b=b+3, 此时b的值为7

  第一次循环:a = 3,b=7--->b小于20,if不成立,b%3==7%3==1成立,b=b+3, 此时b的值为10

  第一次循环:a = 4,b=10--->b小于20,if不成立,b%3==10%3==1成立,b=b+3, 此时b的值为13

  第一次循环:a = 5,b=13--->b小于20,if不成立,b%3==13%3==1成立,b=b+3, 此时b的值为16

  第一次循环:a = 6,b=16--->b小于20,if不成立,b%3==16%3==1成立,b=b+3, 此时b的值为19

  第一次循环:a = 7,b=19--->b小于20,if不成立,b%3==19%3==1成立,b=b+3, 此时b的值为22

  第一次循环:a = 8,b=22--->b大于20,if成立,循环break提出

  最后打印a:8

第6题:关于switch说法不正确的是:(  )

A、switch语句中的default子句可以放在任意位置

B、switch语句中case后的表达式只能是整型常量表达式

C、switch语句中case子句必须在default子句之前

D、switch语句中case表达式不要求顺序

选择:C

        在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把default子句放在最后处理的。

第7题:关于逻辑操作符说法错误的是?

A、&&表示并且

B、|| 表示或者

C、||操作符的两个操作数只要有一个是假,则表达式结果为假

D、&&短路的时候,&&的左边操作数为假,右边不再计算

选择:C

        ||操作符的两个操作数只要有一个是真时,则表达式结果为真。&&操作符的两个操作数只要一个为假时,则表达式结果为假。

第8题:代码编程题

描述:KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)

输入描述:题目有多组输入数据,每一行输入三个a、b、c(0<a,b,c<1000),作为三角形的三个边,用空格分隔

输出描述:针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。

#include <stdio.h>

int main()
{
    int a, b, c;
    while (scanf("%d %d %d", &a,&b,&c) != EOF)
    {
        if (a+b > c || b+c > a || a+c > b)
        {
            if (a == b & b == c)
                printf("Equilateral triangle!");
            else if ( a == b || b == c || a == c)
                printf("Isosceles triangle!");
            else
                printf("Ordinary triangle!");
    
        }
        else
            printf("Not a triangle!");
    }
    return 0;
}

第9题:乘法口诀表-在屏幕上输出9*9乘法口诀表。

#include <stdio.h>
int main()
{
    int i, j;
    for (i = 1; i < 10; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("%d x %d = %-2d ", j, i,j*i);
        }
        printf("\n");
    }
    return 0;
}

  运行输出:

1 x 1 = 1
1 x 2 = 2  2 x 2 = 4
1 x 3 = 3  2 x 3 = 6  3 x 3 = 9
1 x 4 = 4  2 x 4 = 8  3 x 4 = 12 4 x 4 = 16
1 x 5 = 5  2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6  2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7  2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8  2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9  2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81

第10题:求最大值,求10个整数中最大值
#include <stdio.h>
#include <math.h>
int main()
{
    int num[10] = {2,10,5,15,21,9,7,11,13,6};
    int max = num[0];
    int i;
    for (i = 1; i < 10; i++)
    {
        if (num[i] > max)
        {
            max = num[i];
        }
    }
    printf("最大值是:%d\n", max);
    return 0;

}

输出:

最大值是:21
第11题:分数求和

计算1/1-1/2+1/3-1/4+1/5......+1/99-1/100的值,打印出结果

#include <stdio.h>
int main()
{
    int i;
    int sum = 0;
    for (i = 1; i <= 100; i++)
    { 
        if (i % 2 == 0)
            sum = sum - 1 / i;
        else
            sum = sum + 1 / i;
    }
    printf("结果为:%d", sum);
    return 0;
}

输出:

结果为:1
第12题:数9的个数,编写程序数一下1到100的所有整数中出现多少个数字9.
#include <stdio.h>
int main()
{
    int i;
    int cnt = 0;
    for(i=1;i<=100;i++)
    {
        if (i % 10 == 9)
            cnt = cnt + 1;
        if (i / 10 == 9)
            cnt = cnt + 1;     
    }
    printf("1~100中9的个数为:%d\n", cnt);
    return 0;
}

代码运行输出:

1~100中9的个数为:20

第13题:打印素数,写一个代码:打印100-200之间的素数
#include <stdio.h>
int main()
{
  int i, j;
  printf("100~200之间的素数有:\n");
  for (j = 100; j <= 200; j++)
  {
    for (i = 2; i * i <= j; i++)
   {
      if (j % i == 0)
          break;
    }
    if (i * i > j)
      printf("%d ", j);
  }
  return 0;
}

代码运行输出:

100~200之间的素数有:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值