C高级语言程序设计实验报告之选择结构程序设计

article/2025/10/19 13:32:35

文章目录

  • 实验目的
  • 题目
  • 代码
    • 题一
    • 题二
    • 题三
    • 题四

实验目的

1、了解C语言表示辑量的方法(以0代表“假”,以非0代表“真”)
2、学会正确使用遷辑运算符和遷辑表达式
3、熟掌握if语句的使用(包括if语句的嵌套)
4、熟掌握多分支选语句-——switch 语句
5、结合程序掌握一些简单的算法
6、进一步学习调试程序的方法

题目

本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。
(1)有一函数:
在这里插入图片描述

(1)写程序,输入x的值,输出y相应的值。用scanf 函数输入x的值,求y值(第 4章第6 题)。
运行程序,输入x的值(分别为x<1、1≤x<10、x≥10这3种情况),检查输出的 y值 是否正确。
(2)从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数, 则输 出其整数部分)。要求在输入数据后先对其进行检查是否小于1000的正数。若不是,则要求重新输入(第4章第5题)
(3)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,81~89分 为B,7079分为C,6069分为D,60分以下为E(第4章第8题)
①事先编好程序,要求分别用if语句和switch 语句来实现。运行程序,并检查 结果是否正确。
②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时, 通知用户“输入数据错”,程序结束。
(4)输入4个整数,要求按由小到大顺序输出(本题是教材第4章第11题)。 在得到正确结果后,修改程序使之按由大到小顺序输出。

代码

题一

#include <stdio.h>
//(1)有一函数:
//
//写程序,输入x的值,输出y相应的值。用scanf 函数输入x的值,求y值(第	4章第6 题)。
int main(void){int x,y;//获取输入printf("%s","请输入x的值:");//打印提示信息scanf("%d",&x);//判断x的范围并计算x的值//在这里我尽量不要直接写“printf("%d",x)”这种代码,// 他是对的但是对我们后期的修改以及代码的阅读不友好//"y=x;"这种写法将多个入口但是它只有单一出口y,这种写法更值得提倡if(x<1){y=x;}else if(x>=1&&x<=10){y=2*x-1;}else{y=3*x-11;}//在需要执行语句只有一行时代码还可以改成//毫无疑问这更加简洁,但是他对多行语句是不适用的
//    if(x<1)
//        y=x;
//    else if(x>=1&&x<=10)
//        y=2*x-1;
//    else
//        y=3*x-11;printf("计算获得的y的值为:%d",y);return 0;}

题二


//从键盘输入一个小于1000的正数,要求输出它的平方根(如平方根不是整数,则输 出其整数部分)。
// 要求在输入数据后先对其进行检查是否小于1000的正数。
// 若不是,则要求重新输入(第4章第5题)//这个题目没有要求使用scarf和printf我们使用更加方便的std类库中的cout和cin
//题目要求求根 ,所以需要引入数学函数库<math.h> ,它为我们提供了函数sqrt()
//sqrt函数解释:
//double sqrt(double n);该函数要求传入需要求平方根的数n(double型)
//之后返回对应开根结果(double型)#include <iostream>
#include <math.h>//告诉编译器找不到函数时查找std类库
//若不加此声明则不能直接使用cout与cin函数,需要改为 std::cout 和 std::cin
using namespace std;//全局生效int main(void){//using namespace std; //可以添加到函数体内,这时只在该函数范围内生效double x;//x接受输出正数int y;//y负责储存结果//这里我们定义x为double是因为如果为int那么只能存储整数,实测输入20.5接收到的是2020,无语//而我们y的值定义为int是因为题目要求返回的平方根是整数//sqrt的返回值是double,将y定义为int系统会自动转换类型//你也可以手动转换,例如://double y;//y = sqrt(double n);//cout<<int(y);//判断x输入是否合法//获取输入
//    printf("%s","请输入需要求平方根的正数(要求小于1000):");//打印提示信息
//    cin>>x;
//    if(x>0&&x<1000){
//        合法后执行的语句
//    }else{
//        不合法执行的语句
//    }
//   上述是该程序的初步思路,但是他不能解决用户重复输入错误的情况(除非你在else块里再套一层if-else语句然后无限套娃)
//   不难发现他的逻辑都是重复的,检查是否大于零小于1000,成功执行,不成功再次输入,再检查以此循环,那么我们写一个循环就好了
//   下面是循环的思路:
//   程序开始,先进入死循环(我们不知道用户会输错几次,也就是需要循环几次)所以让循环的判断语句始终为true,之后我们在循环体中
//   获取用户输入,检查用户输入,成功跳出循环(break;),执行接下来的步骤,失败则继续循环(continue;)while (true){//获取输入cout<<"请输入需要求平方根的正数(要求小于1000):";//打印提示信息cin>>x;
//        //进行合法检查
//        if(x>0&&x<1000){
//            //合法退出循环
//            break;
//        }else{
//            //失败继续,这里我们可以使用continue(跳过本次循环,进入下一次循环)
//            //但是因为之后并没有什么语句,没什么可以跳的所以传入空语句也可以(;)
//            ;
//        }//下面是更简便的写法//进行合法检查if(x>0&&x<1000) {//合法退出循环break;}}//求平方根//先声明sqrt函数,虽然在math.h库中已为我们定义,但是我们使用前还需要对他进行声明double sqrt(double n);y = sqrt(x);cout<<x<<"的开根结果为:"<<y;}

题三

int main()
{//获取输入int m = 95;cout<<"请输入您的成绩(0-100):";//switch语句中case后需要一个具体的值,而不是判断条件//而我们将输入的m进行整除(其实就是直接除,因为m为int型,小数部分就会自己省掉了)//如果m之前在10-20之间那么整除就会只剩下10,以此类推//这里注意100时结果是10,不能和90多的数混淆//代码也就简洁明了了m = m/10;switch (m) {case 10:case 9:cout<<"A\n"; break;case 8:cout<<"B\n"; break;case 7:cout<<"C\n"; break;case 6:cout<<"D\n"; break;default:cout<<"E\n"; break;}//注意这里的写法
//    case 10:
//    case 9:
//    是简化过的,switch的机制是找到符合的那个case语句然后往下执行,也就是说
//    如果我们在每个语句后不加break;跳出的话,当m = 7后会输出D之后不会自动结束而是继续执行输出E
//    利用这个特性,因为10和9的输出情况是相同的,我们简化代码让他们共用一条输出语句即可return 0;
};
//(3)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,81~89分
// 为B,70~79分为C,60~69分为D,60分以下为E(第4章第8题)
//①事先编好程序,要求分别用if语句和switch 语句来实现。运行程序,并检查结果是否正确。
//②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级,
// 修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,	通知用户“输入数据错”,程序结束。
#include <iostream>
using namespace std;int main()
{//获取输入int m;cout<<"请输入您的成绩(0-100):";cin>>m;//只有一条语句的时候大括号可以省略让代码更简洁if(m>=90)cout << "A";else if (m >= 80)cout << "B";else if (m >= 70)cout << "C";else if (m >= 60)cout << "D";elsecout << "E";//这里的条件,比如说m>=70其实是隐含的 70<=m<=80,因为if语句是从上到下一次判断的//当其判断到m>=70就意味着着m>=80不通过,我们利用这一点简化了代码//注意这样的前提是:你必须先判断大范围然后范围依次缩小,否则会出错比如说你倒过来写,当m=90时//先判断他大于60输出D然后退出代码块,注意是直接退出而不会继续向下执行了(重点)!,观察if-else if-else的//流程图可知只有当前面条件不满足时才会继续向下判断,否则执行完对应代码块中语句会直接跳出if-else if块//另外在编写if条件代码时按照先大范围后小范围的顺序书写是一个很好的习惯return 0;
};
//(3)给出一个百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A,81~89分
// 为B,70~79分为C,60~69分为D,60分以下为E(第4章第8题)
//①事先编好程序,要求分别用if语句和switch 语句来实现。运行程序,并检查结果是否正确。
//②再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级,
// 修改程序,使之能正确处理任何数据,当输入数据大于100和小于0时,	通知用户“输入数据错”,程序结束。
#include <iostream>
using namespace std;int main()
{//获取输入int m;//和上一道题目类似,我们使用循环来一直获取用户输入,直到输入合法为止while(true){cout<<"请输入您的成绩(0-100):";cin>>m;if(m>=0&&m<=100) break;//c++是不看你的代码格式的,之前我们换行加缩进是为了让自己看的更清楚,// 这里因为只有一个break跟在后面就好,简洁又轻松}//只有一条语句的时候大括号可以省略让代码更简洁if(m>=90)cout << "A";else if (m >= 80)cout << "B";else if (m >= 70)cout << "C";else if (m >= 60)cout << "D";elsecout << "E";//这里的条件,比如说m>=70其实是隐含的 70<=m<=80,因为if语句是从上到下一次判断的//当其判断到m>=70就意味着着m>=80不通过,我们利用这一点简化了代码//注意这样的前提是:你必须先判断大范围然后范围依次缩小,否则会出错比如说你倒过来写,当m=90时//先判断他大于60输出D然后退出代码块,注意是直接退出而不会继续向下执行了(重点)!,观察if-else if-else的//流程图可知只有当前面条件不满足时才会继续向下判断,否则执行完对应代码块中语句会直接跳出if-else if块//另外在编写if条件代码时按照先大范围后小范围的顺序书写是一个很好的习惯return 0;
};

题四


//(4)输入4个整数,要求按由小到大顺序输出(本题是教材第4章第11题)。
// 在得到正确结果后,修改程序使之按由大到小顺序输出。
#include <iostream>//选择法:是第一个数逐次跟每个数比较,之后最小的放在第一位上,以此类推
//注意是从小到大排
int main(){using namespace std;//这次用过局部的换个花样int i,j,m;int numbers[4];//定义一个数组来存放输入的四个数,//这样做有两个好处,其一你不用像使用变量那样再为每一个变量起名,尤其是当需要保存的数据多了以后//其二,在获取完一个数后我们可以很方便获取它的上一个或者下一个数(遍历)//循环获取四个数,并存入数组for(i=0;i<4;i++){cout<<"请输入第"<<i+1<<"个数:";cin>>numbers[i];}//怎么判断是否从小到大排列呢?其实很简单,随便拿出一个数让它比它之后的每一个数都小就好了//所以我们需要俩个计数变量i和j//其中j始终比i至少大一,这样的话number[j]就始终是number[i]后面的数了//这时我们只需要保证number[i]<number[j]就好,如果不成立咋办,将两数互换位置呗j = 1;//外层函数是依次按数组顺序拿出数,配合内层函数实现依次拿出数组中的数和之后的每一个数相比//成功的状态是number[i]<number[j]一直成立,如果失败了那么将这两个数的位置对调for(i=0;i<4;i++){//让j初始状态始终比i大一,放到实际来说是你不用要求这个数比他之前的数小for(j=i+1;j<4;j++){if(numbers[i]>numbers[j]){//大数给中间变量mm = numbers[i];//小数给number[i]numbers[i] = numbers[j];numbers[j] = m;}}}//循环遍历输出排序结果cout<<"将您输入的四个数从小到大排列得到结果:";for(i=0;i<4;i++){cout<<numbers[i];//下面是输出一个<号,主要是输出后好看点,无关紧要的if(i==3)cout<<endl;elsecout<<" < ";}}

//(4)输入4个整数,要求按由小到大顺序输出(本题是教材第4章第11题)。
// 在得到正确结果后,修改程序使之按由大到小顺序输出。
#include <iostream>//选择法:是第一个数逐次跟每个数比较,之后最小的放在第一位上,以此类推
//注意是从大到大排
int main(){using namespace std;//这次用过局部的换个花样int i,j,m;int numbers[4];//定义一个数组来存放输入的四个数,//这样做有两个好处,其一你不用像使用变量那样再为每一个变量起名,尤其是当需要保存的数据多了以后//其二,在获取完一个数后我们可以很方便获取它的上一个或者下一个数(遍历)//循环获取四个数,并存入数组for(i=0;i<4;i++){cout<<"请输入第"<<i+1<<"个数:";cin>>numbers[i];}//这次我们修改条件为number[i]>number[j]即可//即随机拿出一个数,它都比它之后的数大j = 1;//外层函数是依次按数组顺序拿出数,配合内层函数实现依次拿出数组中的数和之后的每一个数相比//成功的状态是number[i]>number[j]一直成立,如果失败了那么将这两个数的位置对调for(i=0;i<4;i++){//让j初始状态始终比i大一,放到实际来说是你不用要求这个数比他之前的数小for(j=i+1;j<4;j++){if(numbers[i]<numbers[j]){//大数给中间变量mm = numbers[i];//小数给number[i]numbers[i] = numbers[j];numbers[j] = m;}}}//循环遍历输出排序结果cout<<"将您输入的四个数从大到小排列得到结果:";for(i=0;i<4;i++){cout<<numbers[i];//下面是输出一个>号,主要是输出后好看点,无关紧要的if(i==3)cout<<endl;elsecout<<" > ";}}

http://chatgpt.dhexx.cn/article/X2At8jZT.shtml

相关文章

给你一份满分的程序设计报告(附源码)

ATM业务模拟系统功能要求 客户端&#xff1a; 定义用户数据对象&#xff0c;并以此为参数生成用户操作对象&#xff1b; 存款操作&#xff1a;生成一条新的业务信息&#xff08;业务对象&#xff09;&#xff0c;追加到交易记录中&#xff0c;并修改账号余额&#xff1b; 取款…

C++ 会议信息管理系统 程序设计报告

C 会议信息管理系统 C 会议信息管理系统 程序设计报告 会议记录管理系统 问题描述: 定义会议信息类class Conference 会议信息包括:会议编号&#xff0c;会议名称、部门名称、会议地点&#xff0c;会议日期&#xff0c;会议主会议记录人&#xff0c;出席人员&#xff0c;会…

Java高级程序设计课程设计报告

一、基于OBE模式的实验目的和要求 要求复习课件中理论知识&#xff1b;练习课堂所讲的例子&#xff1b;编写程序完成以下实验目标并上交实验报告&#xff08;包括电子文档与纸质文档&#xff09;。 能够根据Java集合框架&#xff0c;利用迭代方法编程实现对集合的遍历操作。能…

Java面向对象程序设计实验报告(实验三 继承的练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录&#xff1a;源程序代码&#xff08;带注释&#xff09; demo3类 Person类 Student类 …

《程序设计基础课程设计》实验报告

《程序设计基础课程设计》实验报告 班 级&#xff1a; 学 号&#xff1a; 姓 名&#xff1a; 完成题目&#xff1a;1、2、3、4、5、6 概述 此次六道题目里面第四题是参考某博主的文章后实现的&#xff0c;有一些地方仍然不是特别理解&#xff0c;但是原文章里面存在一些小错…

Java面向对象程序设计实验报告(实验五 接口的练习)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录&#xff1a;源程序代码&#xff08;带注释&#xff09; demo5类 Instrument类 Piano类 …

Python程序设计实验报告【合集】

课堂作业 1、词频统计&#xff1a;输入一个文件&#xff0c;程序读取文件&#xff0c;文件内容是英文内容&#xff0c;不少于500个单词的内容&#xff0c;统计每个单词在该短文内出现的次数。 https://www.jb51.net/article/144405.htm https://www.cnblogs.com/Eudemines/p/9…

Java面向对象程序设计实验报告(实验一 面向对象基础练习)

✨作者&#xff1a;命运之光 ✨ 专栏&#xff1a;Java面向对象程序设计实验报告 目录 ✨一、需求分析 ✨二、概要设计 ✨三、详细设计 ✨四、调试分析 ✨附录&#xff1a;源代码&#xff08;带注释&#xff09; 实验一 面向对象基础练习 实验环境&#xff1a;EclipseJDK …

《C语言程序设计》课程总结报告

《C语言程序设计》课程总结报告 一、我学到的内容 二、我的收获&#xff08;包括我完成的所有作业的链接收获&#xff09; 1.PTA作业 22年秋-第1周基础作业 https://pintia.cn/problem-sets/1575138141596397568 22年秋-第2周课后作业 https://pintia.cn/problem-sets/1…

(软件工程)-- 总体设计报告

1引言 1.1编写目的 本阶段完成系统的大致设计并说明系统的数据结构与软件结构&#xff0c;本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌&#xff0c;把它加工成程序细节上非常接近与源程序开发的软件标识。 预期读者&#xff1a;软件测试人员、程序开发员…

程序设计报告模板

一、问题及代码 /* * 文件名称&#xff1a;Ex1-1.cpp * 作 者&#xff1a;曾辉 * 完成日期&#xff1a;2015 年 1 月 1 日 * 版 本 号&#xff1a;v1.0 * 对任务及求解方法的描述部分: * 输入描述&#xff1a;无 * 问题描述&#xff1a;我的第一个C程序&#xff0c;熟…

C语言程序设计期末大作业—教师工资管理系统(附程序设计报告)

C语言大作业——教师工资管理系统 主要的难点在于文件读取 数据结构用的是链表 源码放上&#xff0c;直接粘贴复制就可以&#xff0c;我的C程大作业 具体的问题不懂的可以评论和私信&#xff0c;总之还是简单的 放张图片 程序设计报告可以私信我 #include<stdio.h> …

C语言程序设计 课程设计报告

C语言程序设计课程设计报告 一、 系统简介 学生成绩管理系统简介&#xff1a;一个简易的学生成绩管理系统&#xff0c;它包括并可以实现&#xff1a;“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、退出系统 ”…

程序设计基础实训报告

一、实训目的 程序设计基础是程序设计C语言和C语言的入门课程&#xff0c;该课程兼顾基础理论和编程实践。通过学习该课程的理论知识和编程实战&#xff0c;培养学生的专业实践技能&#xff0c;学校设有专用实训周&#xff0c;帮助学生全面牢固地掌握课堂教学内容、提升实际动手…

程序设计课程设计报告(学生成绩管理系统)

程序设计课程设计报告 课程设计题目及内容 题目&#xff1a;学生成绩管理系统 设计要求及提示如下&#xff1a; &#xff08;1&#xff09;、设计一个学生类Student,包括数据成员&#xff1a;姓名、学号、二门课程(面向对象程序设计、高等数学)的成绩。 &#xff08;2&…

如何在A4相纸上打印4张5寸相片

第一步&#xff0c;打开ps&#xff0c;点击文件-新建&#xff0c;新建一个空白文档&#xff0c;宽度设置为12.7cm&#xff0c;高度设置为8.9cm&#xff0c;分辨率设置为300&#xff0c;rgb颜色设置为8位。 如下图&#xff1a; 第二步&#xff0c;设置完点确定&#xff0c;然后…

PS照片排版1寸2寸等及照片规格

我的电脑是macOS&#xff0c;为了这个文章通用win的朋友&#xff0c;尽量少用快捷键&#xff0c;多截图&#xff0c;本文以1寸为例介绍&#xff1a; 1.打开PS&#xff0c;文件-打开-选择要打印的照片 2.点裁剪-选择宽/高/分辨率-输入高度-输入宽度-输入分辨率-确定 3. 点击图像…

自制1寸照片及打印排版

1、打开Photoshop,新建一个2.5*3.5cm的图层&#xff0c;分辨率为300的文件。如果是2寸的就新建一个3.5*5.3cm的图层。&#xff08;文件----新建&#xff09; 2、打开拍摄的照片&#xff0c;使用”拖动”工具将照片拖到之前新建的1寸照片中&#xff0c;照片拖进去之后原始尺寸肯…

计算机报名照片 1寸,国考录用系统2021国家公务员考试报名照片尺寸是1寸还是2寸?...

国考录用系统2021国家公务员考试报名照片尺寸是1寸还是2寸?由国家公务员考试网其他答疑栏目提供&#xff0c;更多关于国家公务员考试,国考报名确认,国考缴费入口,国考照片,国家公务员考试其他答疑的内容&#xff0c;请关注国家公务员考试网/河北人事考试网&#xff01; 2021年…

photoshop中如何在6寸相纸上打印1寸照片10张2X5模式(自动填充模式)

如何在6寸相纸上打印1寸照片 初学photoshop&#xff0c;在ps中设置。 1.将照片拖入到ps中 2.在图像->图像大小中设置图像尺寸&#xff0c;如下图&#xff1a; 3.确认后&#xff0c;将图片另存为 4.在文件->新建 由于6寸照片是152mmX102mm 因此将1寸尺寸画布尺寸设置成3.…