前言
😁 网上搜了一些练习题,用于巩固所学,现在给大家分享一下
第一题:
答案解析:
上述问题代码思想,循环十次,当i为5时,输出i的值,但if表达式 ’=‘应该写成 ’==‘,每次i都为5,i的值永远不为10,造成死循环
第二题:
关于if语句说法正确是:( )
A.if语句后面只能跟一条语句
B.if语句中0表示假,1表示真
C.if语句是一种分支语句,可以实现单分支,也可以实现多分支
D.else语句总是和它的对齐的if语句匹配
答案解析:
A:可以跟多条语句
B:0为假,非零为真
C:正确
D:不一定看语句
第三题:
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; } 则func(1) = ( )
答案解析:
由于case和default之间都没有break暂停,一直执行到最后一行,所以b=0
第四题:
switch(c)语句中,c不可以是什么类型( )
A.int
B.long
C.char
D.float
答案解析:
switch语句中表达式的类型只能是:整形和枚举类型,所以排除ABC,选D
第五题:
下面代码的执行结果是什么( )
#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; }
答案解析:
x%2 =1....1
case1:switch(3),所以,case1输出内容为hello,但default并未跳出程序,继续执行,输出:“hellothird"
第六题:
关于switch说法不正确的是:( )
A.switch语句中的default子句可以放在任意位置
B.switch语句中case后的表达式只能是整形常量表达式
C.switch语句中case子句必须在default子句之前
D.switch语句中case表达式不要求顺序
答案解析:
A,B,D正确,C:没有规定case必须在default之前,一般case最好放在default之前
第七题:
从大到小输出
写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1
答案解析:
#include <stdio.h> int main() { int a = 2; int b = 3; int c = 1; scanf("%d%d%d",&a, &b,&c); if(a<b) { int tmp = a; a = b; b = tmp; } if(a<c) { int tmp = a; a = c; c = tmp; } if(b<c) { int tmp = b; b = c; c = tmp; } printf("a=%d b=%d c=%d\n", a, b, c); return 0; }
第八题:
写一个代码打印1-100之间所有3的倍数的数字
答案解析:
#include <stdio.h> int main() { int i = 0; for(i=1; i<=100; i++) { if(i%3==0) { printf("%d ", i); } } return 0; }
第九题:
求10 个整数中最大值
答案解析:
int main() { int arr[10] = {0}; int i = 0; int max = 0; for(i=0; i<10; i++) { scanf("%d", &arr[i]); } // max = arr[0]; for(i=1; i<10; i++) { if(arr[i]>max) max = arr[i]; } printf("max = %d\n", max); return 0; }
第十题:
写一个代码:打印100~200之间的素数
答案解析:
int main() { int i = 0; int count = 0; // 外层循环用来获取100~200之间的所有数据,100肯定不是素数,因此i从101开始 for(i=101; i<=200; i++) { //判断i是否为素数:用[2, i)之间的每个数据去被i除,只要有一个可以被整除,则不是素数 int j = 0; for(j=2; j<i; j++) { if(i%j == 0) { break; } } // 上述循环结束之后,如果j和i相等,说明[2, i)之间的所有数据都不能被i整除,则i为素数 if(j==i) { count++; printf("%d ", i); } } printf("\ncount = %d\n", count); return 0; }
第十一题:
打印1000年到2000年之间的闰年
答案解析:
#include <stdio.h> int main() { int year = 0; for(year=1000; year<=2000; year++) { //判断year是否为闰年 if(year%4==0) // 如果year能够被4整除,year可能为闰年 { if(year%100!=0) // 如果year不能内100整除,则一定是闰年 { printf("%d ", year); } } if(year%400 == 0) // 每400年再润一次 { printf("%d ", year); } } return 0; } // //介绍一下这种的简单写法 // int main() { int year = 0; for(year=1000; year<=2000; year++) { if(((year%4==0)&&(year%100!=0))||(year%400==0)) { printf("%d ", year); } } return 0; }
第十二题:
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
答案解析:
#include <stdio.h> int main() { int i = 0; double sum = 0.0; int flag = 1; for(i=1; i<=100; i++) { sum += flag*1.0/i; flag = -flag; } printf("%lf\n", sum); return 0; }