关于C语言的几个考试编程题目
提交要求:
1:邮件名称:学号后三位-题目编号-姓名-期中考试。例如:098-1-沈苗-期中考试
2:不用附件提交,直接写邮件,内容包括编程思路(写一段自己对题目的认识、思路、技术细节等)、源代码、运行结果分析和截图
题目:
1.编程先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则结束游戏。
编程思路:
1)计算机“想”一个1-100的数,则需要程序在运行的时候随机产生一个1-100之间的自然数,需要使用rand()和srand((int)time(0))函数;
2)猜数者“猜”数:则是用户每次输入的数字与随机产生的数进行比较,使用if..else..进行判断;
3) 猜数者只有10次机会,则需要使用for或while循环进行控制次数,本程序选择使用for循环;
4)另外程序结束和程序判断,需要引入return、break、couture等配合;
源代码:
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
/*
Author:南非波波
E-mail:qingbo.song@gmail.com
github:@swht
*/ /*
*产生1-n之间的随机数
*注意:请配合srand((int)time(0));
*/
int RandNum(n)
{
return rand()%n + 1;
} int main()
{
srand((int)time(0)); //设置随机数种子
int num = RandNum(100),int_num,i,min=0,max=100;
printf("%d\n",num);
for(i=1;i<=10;i++)
{
printf("===============第%d次=======================\n",i);
printf("请输入一个幸运数字:");
scanf("%d",&int_num);
if (int_num >100 || int_num < 1)
{
printf("你输入的数为%d,不在1-100之间.请重试!\n",int_num);
continue;
}else if(int_num == num){
printf("恭喜你猜中幸运数字,你猜中的幸运数字为:%d,第%d次猜中.\n",int_num,i);
return 0;
}else{
printf("你猜的幸运数字不正确,请重试!\n");
if(int_num > num )
{
max=int_num;
printf("幸运数字范围缩小为%d-%d!\n",min,max);
}else{
min=int_num;
printf("幸运数字范围缩小为%d-%d!\n",min,max);
}
continue;
}
}
printf("你猜数字次数已达10次上限,很抱歉你未能猜中幸运数字,程序退出!\n");
return 0;
}
输出截图:


运行结果分析:
该源码程序会在第一行提示当前为第几次输入,提示用户输入的幸运数字缩小的范围,最终用户正确猜中显示用户猜中的数字和当前次数,或者用户输入达到10次,程序遗憾退出!
2.
题目描述:任意给定n个整数,求这n个整数序列的和、最小值、最大值
输入描述:输入一个整数n,代表接下来要输入的整数个数,n<=100,接着输入n个整数
输出描述:输出整数序列的和、最小值和最大值,用空格隔开,占一行
样例输入:
2
1 2
样例输出:
3 1 2
编程思路:
1)用户输入的元素个数不定,需要引入数组的概念进行实现;
2)求和,既是转变成数组元素遍历,元素值累加,求和,使用for循环进行处理;
3)求最小数,既是转变成元素遍历,比较各元素大小,求出最小值,使用for循环嵌套if判断进行处理;
4)求最大数,既是转变成元素遍历,比较各元素大小,求出最大值,使用for循环嵌套if判断进行处理;
源代码:
#include <stdio.h>
#include <stdlib.h>
/*
Author:南非波波
E-mail:qingbo.song@gmail.com
github:@swht
*/
int MaxNum(int num[],int n)
/*
*传入一个整数型数组和对应数组的长度,输出数组元素值最大的下标
*/
{
int i,maxnum=num[0],maxi=0;
for(i=0;i<n;i++)
{
if(num[i]>maxnum)
{
maxnum=num[i];
maxi=i;
}
}
return maxi;
} int MinNum(int num[],int n)
/*
*传入一个整数型数组和对应数组的长度,输出数组元素值最小的下标
*/
{
int i,minnum=num[0],mini=0;
for(i=0;i<n;i++)
{
if(num[i]<minnum)
{
minnum=num[i];
mini=i;
}
}
return mini;
} int SumNum(int num[],int n)
/*
*传入一个整数型数组和对应数组的长度,输出数组所有元素的和
*/
{
int i,sum=0;
for(i=0;i<n;i++)
{
sum +=num[i];
}
return sum;
} int main()
{
int num[100],i,n,imax,imin,sum;
printf("请输入即将要输入整数的个数(1-100):");
scanf("%d",&n);
if(n>100||n<1)
{
printf("你输入的数值不正确,整数个数数值要求在1-100以内!程序退出!");
return 0;
}
printf("请依次输入%d个整数:",n);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
imax = MaxNum(num,n);
imin = MinNum(num,n);
sum = SumNum(num,n);
printf("%d,%d,%d\n",sum,num[imin],num[imax]);
return 0;
}
截图:



运行结果分析:
在运行结果正确的情况下,对程序进行优化处理,将数组求和、求最小数、求最大数封装成函数,只要传入整数型数组和数组的长度,即可实现函数返回数据元素和、数组最小元素下标和数组最大元素下标;
增加判断用户输入即将要输入的元素个数进行判断,大于100和小于1的进行异常退出操作;
如果用户输入的元素不足,则程序不会退出,知道用户输入元素个数满足之前预定的数值,回车才能进行后续处理:

对于输入元素个数超出之前预定个数,则按照顺序仅取前n个元素值:

3.
外卖费。上了一上午的课,终于到了午饭时间,大家讨论中午吃什么,有人说吃食堂盖饭,有人说吃海底捞,最后宿舍长大人一拍桌子,说:叫外卖!于是开始打电话叫外卖,规则如下:每单少于20元(不含)不予以送餐,每单在20(含)到30(不含)元之间收取8块钱送餐费,每单在30(含)到40(不含)元之间收取5元送餐费,每单在40(含)元以上免费送餐,请你计算这顿午餐的全部费用。
输入格式:输入共2行,第一行包括一个整数n(n>=1&&n<=20),表示这一单一共要了几个菜,第2行有n个浮点数,以空格分开,表示每个菜的价格
输出格式:输出1行,包含一个浮点数,表示全部外卖费,保留小数点后面2位,当不够送餐服务时,输出error
输入样例:
3
10.5 11.5 10.5
输出样例:
37.50
编程思路:
1)分阶段收取配送费,选择使用switch..case或if..else..语句进行判断;
2)输入菜品个数不定,使用数组的概念,加入for循环遍历数组读取输入的值;
源代码:
#include <stdio.h>
#include <stdlib.h>
/*
Author:南非波波
E-mail:qingbo.song@gmail.com
github:@swht
*/
int main()
{
int n,i;
double sum,totalsum,num[100];
printf("请输入预定餐品数量:");
scanf("%d",&n);
printf("请输入每个餐品的价格:");
for(i=0;i<n;i++)
{
scanf("%lf",&num[i]);
sum += num[i];
}
if(sum >= 20 && sum < 30)
{
totalsum=sum+8;
printf("你此次外卖费(包含运费8元):%.2lf\n",totalsum);
}else if(sum>=30 && sum < 40)
{
totalsum=sum+5;
printf("你此次外卖费(包含运费5元):%.2lf\n",totalsum);
}else if(sum >= 40)
{
totalsum = sum +0;
printf("你此次外卖费(免运费):%.2lf\n",totalsum);
}else{
printf("你此次外卖费小于20元,不予配送,感谢你的支持!");
}
return 0;
}
截图:





运行结果分析:
一定要注意用户输入的个数和输入价格不符的情况,否则引起程序异常。另外需要注意在计算sum值的时候,比较sum值大小是不包含运费在内的。
关于C语言的几个考试编程题目的更多相关文章
- 中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机
期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成 ...
- C语言与VT100控制码编程
C语言与VT100控制码编程 声明: . 如果您打算阅读本文,希望您已经了解过C语言的基本语法,本文不对C语言的基本语法进行说明,因为那些东西几乎唾手可得; . 本文在vim中编辑,请尽量是用vim进 ...
- R语言基于S4的面向对象编程
前言 本文接上一篇文章 R语言基于S3的面向对象编程,本文继续介绍R语言基于S4的面向对象编程. S4对象系统具有明显的结构化特征,更适合面向对象的程序设计.Bioconductor社区,以S4对象系 ...
- Go语言面组合式向对象编程基础总结
转自:http://blog.csdn.net/yue7603835/article/details/44282823 Go语言的面向对象编程简单而干净,通过非侵入式接口模型,否定了C/C++ Jav ...
- C语言控制台窗体图形界面编程(总结)
本系列文章是笔者通过学习<C语言控制台窗体界面编程(修正版)>而写(关于此文档的很多其它信息请看本系列文章第一篇),旨在让大家更加清晰简洁easy地学习C语言控制台窗体界面的编程. 通过本 ...
- Python语言基础07-面向对象编程基础
本文收录在Python从入门到精通系列文章系列 1. 了解面对对象编程 活在当下的程序员应该都听过"面向对象编程"一词,也经常有人问能不能用一句话解释下什么是"面向对象编 ...
- 网易云课堂_C++程序设计入门(下)_期末考试_期末考试在线编程题目
期末考试在线编程题目 返回考试 本次考试题目一共两个,在考试期间可以不限制次数地提交 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间 ...
- C语言与汇编的嵌入式编程:求100以内素数
写汇编之前,需要搞清楚C语言代码的写法,这里以最简单的算法举例说明 C代码如下: #include <stdio.h> void main(){ int i,j; ; ;i<=;i+ ...
- 为什么C语言是最适合单片机编程的高级语言!
为什么还在用C语言编程?答案是:C语言是最适合单片机编程的高级语言. 这个问题的意思应该是:现在有很多很好用的高级语言,如java,python等等,为什么这些语言不能用来编写单片机程序呢?那么这个问 ...
随机推荐
- GoWeb_01:GoWeb基础之mac上mysql安装
Mac下的MySql安装与配置 1. 访问MySQL的官网 http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个 ...
- bzoj千题计划157:bzoj1220:[HNOI2002]跳蚤
扩展欧几里得:ax+by=gcd(a,b) 一定有解 能跳到左边一格,即ax+by=-1 若a,b的gcd=1,则一定有解 所以问题转化为 求n个不大于m的数,他们与m的gcd=1 的方案数 容斥原理 ...
- Coffeescript的安装与编译
安装 npm install -g coffee-script 在cmd中输入coffee可以进入coffeescript的命令行模式(REPL),然而到我写完这篇博文为止,我觉得这并没有什么卵用 C ...
- angularJS $resource
$resource是一个更方便地与RESTful服务器API进行交互,可以方便地定义一个REST资源,而不必手动所有的声明CRUD方法的Service. 使用 1.要使用$resource首先要在HT ...
- 【算法学习】有旋treap
treap是平衡树的一种.与其他平衡树一样,它也能够支持插入和删除,求第k极值等,接下来我们主要探讨有旋treap的实现过程. treap中每个节点要维护其值,左右孩子以及子树大小.父亲要不要写则看你 ...
- Linux下内存泄漏工具
概述 内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,内存泄漏是常见的问题.当以前分配的一片内存不再需要使用或无法访问时,但是却 ...
- 串口流控制详解(CTS/RTS,DTR/DSR)
1 首先看下关于流控相关的几个端口的解释如下图 除了必要的地(GND)要连接外,其它连如下 步骤阅读 2 计算机和猫(MODEM)的连接 步骤阅读 步骤阅读 3 计算机和非猫的连接(null mod ...
- Mysql_Learning_Notes_mysql系统结构_2
Mysql_Learning_Notes_mysql系统结构_2 三层体系结构,启动方式,日志类型及解析方法,mysql 升级 连接层 通信协议处理\线程处理\账号认证(用户名和密码认证)\安全检查等 ...
- python使用twisted搭建的一个socket服务
服务端 # -*- coding: utf-8 -*- # @Time : 2018/9/19 21:41 # @Author : cxa # @File : tsTservTW.py # @Soft ...
- redis学习笔记之redis简介
redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不 ...