C语言练习题

C语言练习题

  1. 猜数字游戏:完成一个游戏,随机生成一个100以内的整数,让玩家猜这个数字,每次输入都会提醒玩家猜大了或是猜小了,直到猜出最终结果.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>//包含时间戳调用的头文件
void Interface() {
	printf("**********************\n");
	printf("********0.退出********\n");
	printf("********1.开始********\n");
	printf("**********************\n");
}//设置一个游戏界面
int game() {
	int num = rand() % 100 + 1;//随机生成一个数并存储下来
	int x;
	for (; 1 ;) {
		scanf("%d", &x);//用户根据猜测输入数字
		if (x > num)
			printf("大了\n");
		else if (x < num)
			printf("小了\n");
		else {
			printf("您猜对了\n");
			break;
		}
			
	}//无限循环,直到猜出结果
}//游戏主体函数
int main() {
	srand((unsigned)time(NULL));
	int i;
	for (i = 1; i;) {
		Interface();
		scanf("%d", &i);
		if (i == 1)
			game();
		else if (i == 0)
			break;
		else
			printf("输入有误,请重新输入\n");
	}//游戏运行逻辑顺序

	return 0;
}
  1. 写代码可以在整型有序数组中查找想要的数字,
    找到了返回下标,找不到返回-1.(折半查找)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int binary(int i[10],int num,int x,int y) {
	for (; 1;) {
		if (num == i[(x + y) / 2])
			return (x + y) / 2;//找到返回下标
		else if (num < i[(x + y) / 2])
			y = (x + y) / 2 - 1;//小了从右半部分找
		else if (num > i[(x + y) / 2])
			x = (x + y) / 2 + 1;//大了从左半部分找
		else if(x>=y)
			break;//没找到,跳出循环
	}
	return -1;//如果没找到,返回-1
}
int main() {
	int a[10] = {0,1,2,3,4,5,6,7,8,9};//定义一个有序数组
	int num;
	scanf("%d", &num);//输入一个查找的数字
	int size = sizeof(a) / sizeof(a[0])-1;
	printf("索引是%d", binary(a, num, 0, size));
	return 0;

	
}
  1. 编写代码模拟三次密码输入的场景。
    最多能输入三次密码,密码正确,提示“登录成功”,密码错误,
    可以重新输入,最多输入三次。三次均错,则提示退出程序。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
	int pin = 987654;//定义一个秘码
	int key;
	printf("请输入密码\n");
	for (int i = 0; i < 3; i++) {
		
		scanf("%d", &key);
		if (key == pin) {
			printf("输入正确\n");
			break;
		}//输入正确提示正确
		else if (i == 2) {
			printf("输入错误,程序即将退出\n");
			break;
		}//最后一次输入错误,提示退出程序
		else {
			printf("输入错误,请重试\n");
		}
	}//三次循环,最多输入三次
	return 0;
}
  1. 编写一个程序,可以一直接收键盘字符,
    如果是小写字符就输出对应的大写字符,
    如果接收的是大写字符,就输出对应的小写字符,
    如果是数字不输出。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
	char cvn;
	for (int i = 1; i;) {
		printf("请输入一个字母\n");
		scanf("%c", &cvn);
		if (cvn > 64 && cvn < 91) {
			printf("%c\n", cvn + 32);
			break;
		}//大写转换为小写
			
		else if (cvn > 96 && cvn < 123) {
			printf("%c\n", cvn - 32);
			break;
		}//小写转换为大写
		    
		else {
			printf("输入有误,输入任意数字重新或输入0退出\n");
			scanf("%d", &i);
		}//不在范围内的变量,提示输入有误
	}
	return 0;
}
一、单项选择题 1、 C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。  A).c B).obj C).exe D).bas 2、 )完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B ) A)连接、编译 B)编译、连接 C)连接、运行 D)运行 3、 关于C语言的叙述中,不正确的是( D ) A)C程序可由一个或多个函数组成 B)C程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)注释说明只能位于一条语句的后面 4、 一个C程序的执行是从( C )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 5、 以下正确的叙述是( C ) A) 在C语言中,main函数必须位于文件的开 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 6、 下列选项中,不能用作标识符的是( D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 7、 常数的书写格式决定了常数的类型和值,0x1011是( C ) A)8进制整型常量 B)字符常量 C)16进制整型常数 D)2进制整型常数 8、 以下4组用户定义标识符中,全部合法的一组是( D ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 9、 ( B )是合法的用户自定义标识符。 A) b-b B)float C)123a D) _isw 10、 以下选项中不正确的整型常量是( )。  A) 12L B) -10 C) 1,900 D) 123U 11、 表达式( C )的值是0。 A)3%5 B)3/5)0 C)3/5 D)3<5 12、 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x0||y>0) 等价于( )。 A)!x>0||!y>0 B)!(x>0)||!(y>0) C)!x>0&&!y>0 D)!(x>0)&&!(y>0) 14、 若变量已正确定义并赋值,表达式( )不符合C语言语法。 A)4&&3 B)+a C)a=b=5 D)int(3)14) 15、 C语句”x*=y+2;”还可以写作( ) A) x=x*y+2; B) x=2+y*x; C) x=x*(y+2); D) x=y+2*x; 16、 下列格式符中,可以用于以8进制形式输出整数的是( ) A) %d B) %o C) %ld D) %x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值