第一部分 选择题
一.
题目名称:
下面代码执行的结果是:( )
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i<10; i++)
{
if (i = 5)
printf("%d ", i);
}
return 0;
}
题目内容:
A .1 2 3 4 5 6 7 8 9 10
B .5 5 5 5 5 5 5 5 5 5
C .死循环的打印5
D .0 1 2 3 4 5 6 7 8 9
二.题目名称:
关于if语句说法正确是:( )
题目内容:
A .if语句后面只能跟一条语句
B .if语句中0表示假,1表示真
C .if语句是一种分支语句,可以实现单分支,也可以实现多分支
D .else语句总是和它的对齐的if语句匹配
三.题目名称:
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) = ( )
题目内容:
A .30
B .20
C .16
D .0
四.题目名称:
switch(c)语句中,c不可以是什么类型( )
题目内容:
A .int
B .long
C .char
D .float
五.
题目名称:
下面代码的执行结果是什么( )
#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;
}
题目内容:
A .secondthird
B .hello
C .firstsecond
D .hellothird
六.题目名称:
关于switch说法不正确的是:( )
题目内容:
A .switch语句中的default子句可以放在任意位置
B .switch语句中case后的表达式只能是整形常量表达式
C .switch语句中case子句必须在default子句之前
D .switch语句中case表达式不要求顺序
七.关于while(条件表达式) 循环体,以下叙述正确的是( )? (假设循环体里面没有break,continue,return,goto等等语句)
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关
解析:
(1)while循环是先执行条件表达式,如果满足,再执行循环体
八.有以下程序
#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; //1 4 7 10 13 16 19 22
continue;
}
b = b-5;
}
printf("%d\n", a); //2 3 4 5 6 7 8
return 0;
}
程序的输出结果是?( )
A.10
B.9
C.8
D.7
第二部分 代码题
一.题目名称:
打印3的倍数的数
题目内容:
写一个代码打印1-100之间所有3的倍数的数字
二.题目名称:
从大到小输出
题目内容:
写代码将三个整数数按从大到小输出。
例如:
输入:2 3 1
输出:3 2 1
三.题目名称:
打印素数
题目内容:
写一个代码:打印100~200之间的素数
四.题目名称:
打印闰年
题目内容:
打印1000年到2000年之间的闰年
五.题目名称:
最大公约数
题目内容:
给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20
六.在屏幕上输出9*9乘法口诀表
#include<stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 9; i++) //表示1-9行
{
int j = 0;
for (j = 1; j <= i; j++)//表示列,第一行,有一列
{
//printf("%d*%d=%d ", i, j, i * j);
printf("%d*%d=%2d ", i, j, i * j); //2d表示2个空位,右对齐
//printf("%d*%d=%-2d ", i, j,i * j); //-2d表示2个空位,左对齐
}
printf("\n"); //打印完一行换行
}
return 0;
}
七.求10 个整数中最大值
#include<stdio.h>
//打擂台法,擂主需要是元素本身;
//用一个数挨个和其他元素比较,每一次比较都把较大值赋给一个第三方
int main()
{
int arr[10] = {0};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i <sz; i++) //输入数组元素
{
scanf("%d", &arr[i]); //元素名不是地址
//循环输入控制台:写一个 空格,所有写完,回车
}
//int max = 0; //如果都小于0,不对,错误定义
int max = arr[0];
for (i = 1; i <sz; i++) //第二个数和第一个比较
{
if (arr[i] > max)
{
max = arr[i]; //将2个数中的较大值赋给max
}
}
printf("%d\n", max);
return 0;
}
八.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
#include<stdio.h>
int main()
{
int j = 0;
int flag = 1;
double ret=0; //所求值是小数
for (j = 1; j <= 100; j++)
{
ret = ret+(flag)*1.0 / j; //用falg表示正负,也可以用pow,也可以条件判断分母
//1.0 是因为需要执行浮点数除法
flag = -flag;
}
printf("%lf\n", ret);
return 0;
}
九.编写程序数一下 1到 100 的所有整数中出现多少个数字9
//9 19 29 39 49 59 69 79 %
//90...99 / 99有2个9
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
{
//printf("%d ", i);
count++;
}
if ( i / 10 == 9)
{
//printf("%d ", i);
count++;
}
}
//printf("\n");
printf("%d", count); //20
return 0;
}
十.编写代码在一个整形有序数组中查找具体的某个数(二分查找)重点
要求:找到了就打印数字所在的下标,找不到则输出:找不到。
#include<stdio.h>
int main()
{
//数组如果有n个元素,最坏的情况下要找n次
int arr[10] = { 1,2,3,4,5,6,7,18,19,110 };
int k = 7;//查找7
int left= 0;
int right = 9;
int flag = 0;
while(left<= right)
{
int mid = (left+ right) / 2;//求出中间元素的下标
if(arr[mid] > k)
{
right = mid - 1;
}
else if(arr[mid] < k)
{
left= mid+ 1;
}
else
{
printf("找到了,下标是:%d\n", mid);
flag= 1;
break;
}
}
if(flag == 0)
printf("找不到\n");
return 0;
}
十一.猜数字游戏
要求:
1.程序会生成一个1-100的随机数
2.猜数字
1)猜小了,程序会告诉你猜小了,继续猜
2)猜大了,程序会告诉你猜大了。继续猜
3)猜对了,程序会告诉你:恭喜你,猜对了。结束
3.游戏可以反复玩
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**************************\n");
printf("****** 1. play ******\n");
printf("****** 0. exit ******\n");
printf("**************************\n");
}
//rand函数是专门用来生成随机数的
//rand函数返回的是0~RAND_MAX(32767)之间的一个随机数
//#define RAND_MAX 0x7fff
//
//
//
//rand函数在使用之前要使用一个srand函数来设置随机数的生成器
//srand函数在程序中只要调用一次就可以了,不需要频繁调用
//
//
//
//时间戳
//C语言中,time函数会返回时间戳
//
//NULL - 空指针
void game()
{
int num = 0;
//1. 生成随机数
int ret= rand() % 100 + 1;
//printf("%d\n", ret);
//2. 猜数字
while (1)//一直猜,一部分一部分写
{
printf("请猜数字:>");
scanf("%d", &num);
if(num < ret)
{
printf("猜小了\n");
}
else if (num> ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();//game函数中是猜数字的整个路基逻辑
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (input);
return 0;
}
十二.
描述
小乐乐最近接触了求和符号Σ,他想计算(1*i)的结果。但是小乐乐很笨,请你帮助他解答。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一个值,为求和结果。
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
long long sum = 0;
for (i = 1; i <= n; i++)
{
sum = sum + i;
}
//sum = (n = 1) * n / 2; 等差数列 通项公式
printf("%lld", sum); //long long用lld输出
return 0;
}
十三.描述
小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐到达楼上需要的时间。
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d", (n / 12) * 4 + 2);
return 0;
}