第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 2
,b
被赋值为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