第三周作业

本文分享了C++编程中的实际案例,包括变量大小测量、布尔类型使用、赋值表达式、数据溢出处理等基础知识,同时介绍了如何编写程序来计算三角形的面积和周长,解析数学表达式,求解一元二次方程,以及实现简单的加密解密算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 实验作业

1.输入课本各个例题,调试运行程序,并分析程序,将每一个程序改写2到3个版本,自己分析程序结果,然后再调试运行,核对分析结果的对错。

2.编写程序输入一个三角形的三条边,计算其面积和周长;

3.编写程序计算并输出课本本章习题3表达式的值并分析结果。

4.编写一个程序,输入一个一元二次方程的三个系数,并计算其方程的解,然后输出。

5.编写程序,自己确定一个加密算法,将自己的音标姓名(英文)加密,并输出加密后结果,请注释你的加密算法。

6.在一个自动控制设备中,控制字位数16位,控制设备产生机械动作(如削,压等)的是指令字的低8位,其中保护强制停机动作的控制命令是低8位是全为0,控制报警声音是指令的高第1位,0为报警,1为不报警。请编写程序,在紧急状况启动时,向控制器输入控制指令。

7.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。

1.个人觉得第一题,是为了让我们自己能够举一反三,熟悉例题。上传太占页面,所以我只把例题上传,自己私下改写。

1.1为了知道pc的变量所占的内存单元的大小,本来就只有整型变量,以下我再添加几行其他的变量

/******************************************************* 
**        功能:显示输出各变量所占的字节数       ** 
*******************************************************/  
  
  
#include<iostream>  
using namespace std;  
  
  
int main()  
{  
cout<<"number of bytes in int is:"<<sizeof(int)<<endl;  
cout<<"number of bytes in long int is:"<<sizeof(long)<<endl;  
cout<<"number of bytes in short int is:"<<sizeof(short)<<endl;
cout<<"number of bytes in float is:"<<sizeof(float)<<endl;
cout<<"number of bytes in double is:"<<sizeof(double)<<endl; 
cout<<"number of bytes in long double is:"<<sizeof(long double)<<endl;
cout<<"number of bytes in char is:"<<sizeof(char)<<endl;  
  
return 0;  
}

1.2布尔类型的使用

/****************************************
**       功能:布尔类型使用实例        **
****************************************/

#include<iostream>                       //编译预处理命令
#include<iomanip>                        //使用控制符boolalpha需使用此头文件
using namespace std;                     //使用标准名空间
  
int main()                               //主函数
{  
    bool flag=true;                      //定义布尔型变量flag,并初始化为true
    cout<<flag<<endl;                    //默认情况下,为非bool字母,输出整型值1
    cout<<boolalpha<<flag<<endl;         //使用输出格式控制符boolalpha,输出布尔型值
    cout<<flag + 5<<endl;                //在算术运算中,把布尔数据当作整型数据,输出6
    flag = 0;                            //可以给bool类型的变量赋任意类型的值
    cout<<"执行语句flag=0;后flag的值为:"<<boolalpha<<flag<<endl;  
    flag = 0.0;                          //0.0为double类型的数值
    cout<<"执行语句flag=0.0;后flag的值为:"<<boolalpha<<flag<<endl;  
  
    return 0;  
}


1.3赋值表达式语句举例  我再加上了一个e的赋值表达式

#include<iostream>  
using namespace std;  
  
int main()  
{  
    int a,b,c,d,e;  
    a=4;  
    b=a;  
    a=5;  
    c=d=6;  
    c*=a;  
    d%=a+b;
	e=a*b;
    cout<<"a="<<a<<endl  
        <<"b="<<b<<endl  
        <<"c="<<c<<endl  
        <<"d="<<d<<endl
		<<"e="<<e<<endl;  
  
    return 0;  
}


1.4 数据溢出举例

#include<iostream>  
using namespace std;  
  
int main()  
{  
    long i,j,m,n;  
    i=1000;  
    j=1000;  
    m=i+j;  
    n=i*j;  
    cout<<"m="<<m<<endl;  
    cout<<"n="<<n<<endl;  
    return 0;  
} 

一开始,n定义为短整型,超出了n=i*j的值,所以后来定义为长整型。

1.5++运算符使用举例

#include<iostream>  
using namespace std;  
  
int main()  
{  
    int i=6,j,k,temp;  
    j=++i;  
    k=i++;  
    ++i=1;  
    cout<<"i="<<i<<endl;  
    cout<<"j="<<j<<endl;  
    cout<<"k="<<k<<endl;  
  
  
    return 0;  
} 
1.6小写字母转换成大写字母

#include<iostream>  
using namespace std;  
  
int main()  
{  
    char ch;  
    cout<<"please input a character:";  
    cin>>ch;  
    ch=ch>='a'&&ch<='z'?ch-'a'+'A':ch;  
    //上述语句等价于 ch = ch >='a'&&ch<='z'?ch-32:ch;  
    cout<<"The result is:"<<ch<<endl;  
  
  
    return 0;  
}
1.7强制类型转换

#include<iostream>  
using namespace std;  
  
int main()  
{  
    int ab,ac;  
    double b= 3.14;  
    char c='A';  
    ab=int(b);  
    ac=int(c);  
    cout<<"b="<<b<<endl;  
    cout<<"ab="<<ab<<endl;  
    cout<<"c="<<c<<endl;  
    cout<<"ac="<<ac<<endl;  
  
    return 0;  
} 
2.一开始,我没有想到还要判断三角形是否成立,所以没有写上判断三边长,只是写上计算周长和面积,后来经朋友指点,才恍然大悟,经过修改后,下面是最终的程序.

#include<iostream>                                    //编译预处理命令  
#include <math.h>                                     //数学函数调用   
using namespace std;                                  //使用标准名空间 std  
  
int main()                                            //主函数  
{  
    float a,b,c;                                      //定义单精度形变量a,b,c  
    cout<<"请输入三角形的边长a:";                     //屏幕输出“请输入三角形的边长a:”  
    cin>>a;                                           //输入a的长度  
    cout<<"请输入三角形的边长b:";                     //屏幕输出“请输入三角形的边长b:”  
    cin>>b;                                           //输入b的长度  
    cout<<"请输入三角形的边长c:";                     //屏幕输出“请输入三角形的边长c:”  
    cin>>c;                                           //输入c的长度  
    while(a+b<=c||a+c<=b||b+c<=a)                     //循环结构程序  
    {  
        cout<<"输入错误,请重新输入三角形的边长\n";  
        cout<<"请输入三角形的边长a:";                 //屏幕输出“请输入三角形的边长a:”  
        cin>>a;                                       //输入a的长度  
        cout<<"请输入三角形的边长b:";                 //屏幕输出“请输入三角形的边长b:”  
        cin>>b;                                       //输入b的长度  
        cout<<"请输入三角形的边长c:";                 //屏幕输出“请输入三角形的边长c:”  
        cin>>c;                                       //输入c的长度  
    }  
    float y,p,s;                                      //定义单精度形变量y,p,s  
    y=a+b+c;                                          //y为三角形的周长  
    p=y/2;                                            //p为三角形周长的二分之一  
    s=sqrt(p*(p-a)*(p-b)*(p-c));                      //s为三角形的面积  
    cout<<"三角形的面积为:"<<s<<endl;                //屏幕显示输出三角形的面积大小  
    cout<<"三角形的周长为:"<<y<<endl;                //屏幕显示输出三角形的周长大小  
  
    return 0;  
}

3.我把课后习题两道小题合在一起,第一道题的计算结果为13.7,第二道题的计算结果为2.5.

#include<iostream>  
#include <math.h>  
using namespace std;  
  
int main()  
{  
    int e=1,f=4,g=2;  
    float m=10.5,n=4.0,k;  
    k=(e+f)/g+sqrt((double)n)*1.2/g+m;  
    cout<<k<<endl;

    float x=2.5,y=4.7,z;  
    int a=7;  
    z=x+a%3*(int(x+y)%2)/4;  
    cout<<z<<endl;
  
    return 0; 
 }


4.这是求一元二次方程的解。由于一开始对if语句不是很熟用,对判断方程是否存在实数根,调试了很久,因为用vc编译时,没有显示错误,但是在输入几个系数时,得出的结果总是大跌眼镜。后来经过几次修改,在if语句中再嵌套一个if语句,才得以解决。
#include<iostream>
#include<math.h>
using namespace std;       
int main()       
{      
    double x1,x2,i,a,b,c;       
    cout<<"输入方程 ax2+bx+c=0 中的a:";      
    cin>>a;       
    cout<<"输入方程 ax2+bx+c=0 中的b:";       
    cin>>b;      
    cout<<"输入方程 ax2+bx+c=0 中的c:";       
    cin>>c;      
    i=sqrt(b*b-4*a*c);       
    if(i>=0)      
    {      
        x1=(-b+i)/(2*a);       
        x2=(-b-i)/(2*a);       
        cout<<"方程的两个根为:x1="<<x1<<" ,x2="<<x2<<endl;       
    }      
    else 
		cout<<"此方程无解!"<<endl;
          
      
    return 0;      
}



以上为随意输入三个系数得出的解。

5

这个为加密程序

#include<iostream>                                  //编译预处理命令
using namespace std;                                //使用标准名空间 std
/*以下是主函数*/
int main()
{
	char a[20],b[20],c[20];                         //定义数组a,数组b和数组c为字符型变量,每组数组有20个数组元素
	int i;                                          //定义整型变量i
	cout<<"请输入你的姓名拼音进行加密"<<endl;       //显示输出“请输入你的姓名拼音进行加密”
	cin.get(a,20);                                  //cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
	cout<<"加密完成"<<endl;                         //显示输出“加密完成”
	for(i=0;i<20;i++)                               //对所输入的字符串进行加密
	{
		if(a[i]==0)                                 //当数组a[i]==0时,结束循环
		{
			break;
		}
		c[i]=a[i];                                  //把数组a中的每一个元素一一赋值给相对应数组c中的元素
		c[i]=c[i]+5;                                //数组c中每个元素加上5后再一一赋值给数组c,也就是说这里就是进行加密
		b[i]=c[i];                                  //把数组c中的每一个元素一一赋值给相对应数组b中的元素
		cout<<b[i];                                 //输出数组b中的字符
	}
    cout<<endl;


	return 0;
}
这是加密后的结果

这个是解密的程序

#include<iostream>                                  //编译预处理命令
using namespace std;                                //使用标准名空间 std
/*以下是主函数*/
int main()
{
	char a[20],b[20],c[20];                         //定义数组a,数组b和数组c为字符型变量,每组数组有20个数组元素
	int i;                                          //定义整型变量i
	cout<<"请输入你所要解密的字母"<<endl;            //显示输出“请输入你所要解密的字母”
	cin.get(a,20);                                  //cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
	cout<<"解密完成"<<endl;                         //显示输出“解密完成”
	for(i=0;i<20;i++)                               //对所输入的字符串进行加密
	{
		if(a[i]==0)                                 //当数组a[i]==0时,结束循环
		{
			break;
		}
		c[i]=a[i];                                  //把数组a中的每一个元素一一赋值给相对应数组c中的元素
		c[i]=c[i]-5;                                //数组c中每个元素减去5后再一一赋值给数组c,也就是说这里就是进行解密
		b[i]=c[i];                                  //把数组c中的每一个元素一一赋值给相对应数组b中的元素
		cout<<b[i];                                 //输出数组b中的字符
	}
    cout<<endl;


	return 0;
}
解密的结果


6.暂时还没做,等周末再把第6题做好.

7.一般出现的问题是有时候语句缺少";'。其他的基本上没什么问题。


内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
<think>好的,我现在要解决用户的问题,寻找翁恺C语言课程第三周作业的相关内容或答案。首先,我需要理清用户的具体需求。用户提到已经看到了第二周作业的引用内容,现在需要第三周作业题目和解答。但用户提供的引用内容里,引用的三个来源都是关于第二周作业、时间格式以及输入输出的例子,没有直接涉及第三周的内容。不过,可能需要根据已有的信息和一般C语言课程的安排来推断第三周可能的内容。 首先,回顾用户提供的引用内容: - 引用[1]是一个C语言程序,判断三个输入中的不同情况,可能涉及条件语句的使用。 - 引用[2]是第二周作业的代码,处理整数反转的问题,例如输入123,输出321,这涉及取余和整除操作。 - 引用[3]是关于时间格式的输出,要求两位数的小时、分钟、秒,可能需要格式化输出,如printf中使用%02d。 根据一般C语言课程的进度,第二周可能学习基本输入输出、变量、算术运算,第三周可能涉及更复杂的条件判断、循环结构,或者更深入的练习题目。例如,第三周作业可能包括判断语句、循环结构,或者更复杂的数值处理问题。 接下来,我需要查找翁恺C语言课程第三周作业的题目。但用户提供的引用中没有直接相关的信息。可能需要通过常见的题目类型来推测。例如,第三周作业可能涉及: 1. 时间转换:将秒转换为小时、分钟、秒,并格式化输出,类似于引用[3]中的内容,但需要更详细的处理。 2. 成绩分级:根据输入的分数输出等级,如A、B、C等,使用条件判断。 3. 计算分段函数:例如,根据不同的输入范围计算不同的函数值。 4. 循环练习:如求数列的和、阶乘,或者判断素数等,但第三周可能还未涉及循环,可能更偏向条件语句。 另外,根据引用[2]中的例子,第二周涉及整数处理,第三周可能继续类似的题目,但增加复杂度。例如,判断一个数是否为水仙花数,或者进行四则运算的计算器程序。 考虑到用户可能无法访问外部资源,我需要基于常见的C语言第三周作业题目来构造答案,并确保符合引用中的格式要求,比如正确的LaTeX数学公式和代码块。 现在,我需要组织这些可能的题目,并提供相应的解答示例,同时注意引用格式。例如,如果题目是关于时间转换,可以引用引用[3]中的格式要求。如果涉及条件判断,可以参考引用[1]中的代码结构。 需要注意的是,用户要求生成相关问题,所以可能需要根据推测的题目内容提出相关问题,例如优化方法、应用场景等。 总结步骤: 1. 推测翁恺C语言第三周可能的作业题目。 2. 为每个题目提供解答示例,符合C语言语法。 3. 确保代码格式正确,使用代码块。 4. 生成相关问题,帮助用户进一步理解。 5. 在回答中适当引用已有的引用内容,如时间格式化引用[3]。 可能的题目一:时间转换 题目要求输入总秒数,转换为hh:mm:ss格式,不足两位补零。例如输入3661,输出01:01:01。这可以引用[3]中的格式要求。 可能的题目二:成绩转换 输入一个百分制成绩,输出等级制,如90以上为A,80-89为B等,使用条件判断语句。 可能的题目三:四位数逆序 类似第二周的反转数字,但可能扩展到四位数,如输入1234,输出4321,处理方式类似引用[2],但需要调整位数。 可能的题目四:计算分段函数 例如,计算以下分段函数的值: 当x >= 0时,f(x) = x^0.5; 当x < 0时,f(x) = (x+1)^2 + 2x + 1/x; 需要注意输入x的处理和条件判断。 针对这些推测的题目,我需要编写解答代码,并确保正确性。例如: 题目一解答: ```c #include <stdio.h> int main() { int total; scanf("%d", &total); int hh = total / 3600; int mm = (total % 3600) / 60; int ss = total % 60; printf("%02d:%02d:%02d", hh, mm, ss); return 0; } ``` 这里引用了引用[3]中的格式要求,使用%02d来补零。 题目二解答: ```c #include <stdio.h> int main() { int score; scanf("%d", &score); if (score >= 90) { printf("A"); } else if (score >= 80) { p
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值