A : 实验1.1 标准数学函数使用
实验要求
1.在你所创建的工程文件中,编程熟悉C程序的基本框架,以及C语言提供的标准数学函数,并按一定的格式输出程序的执行结果;
- Tips:我该怎么输出我的结果?
- 在写完程序主题之后,使用printf()函数或cout来输出题目要求的结果。
- 注意:
- 不要在输出的结果中添加任何多余的文字,否则oj会判错!
例如:printf(“结果是%d”,outcome)是错误的! - 和浮点数(当前学习阶段可简单理解为小数)相关的题目,请使用printf()输出,使用cout会导致结果位数错误。
2.在你所创建的工程文件中,编程计算下述题目,并输出结果。
y = 1 + 1 1 + 1 1 + 1 5 y=1+\frac{1}{1+\frac{1}{1+\frac{1}{5}}} y=1+1+1+5111
- 不要在输出的结果中添加任何多余的文字,否则oj会判错!
- Tips:我该如何完成题目?
- 请在自己的开发环境中完成代码编写、测试,再将代码复制到提交框中进行提交。
3.示例:
- 请在自己的开发环境中完成代码编写、测试,再将代码复制到提交框中进行提交。
- 题目要求:请在你所创建的工程文件中,编程计算1除以2的结果并输出。
- 代码示例:
#include <stdio.h>
int main()
{
float outcome; // 声明变量,存储结果
outcome = 1.0 / 2; // 进行计算
printf("%f", outcome); // 输出结果,不要添加任何无意义的输出
}
完整答案代码
#include<stdio.h>
int main()
{
double a;
a=1+1/(1+1/(1+1/5.0));
printf("%f",a);
return 0;
}
B : 实验1.2 标准数学函数使用
实验要求
1、下载安装Dev-Cpp(Dev-C++)集成开发环境(IDE);或使用其他C语言开发环境;
2、在IDE中创建自己所需的工程文件;
3、在你所创建的工程文件中,编程熟悉C程序的基本框架,以及C语言提供的标准数学函数,并按一定的格式输出程序的执行结果;
4、在你所创建的工程文件中,编程计算下述题目,并输出结果,注意输出应为浮点数类型。
y = 3 2 + 4 2 y=\sqrt{3^2+4^2} y=32+42
完整答案代码
#include<stdio.h>
#include<math.h>
int main()
{
double a;
a=sqrt(pow(3,2)+pow(4,2));
printf("%f",a);
return 0;
}
C : 实验1.3 标准数学函数使用
实验要求
1、下载安装Dev-Cpp(Dev-C++)集成开发环境(IDE);或使用其他C语言开发环境;
2、在IDE中创建自己所需的工程文件;
3、在你所创建的工程文件中,编程熟悉C程序的基本框架,以及C语言提供的标准数学函数,并按一定的格式输出程序的执行结果;
4、在你所创建的工程文件中,编程计算下述题目,并输出结果。
y = 1 − c o s ( π / 3 ) 2 y=\sqrt{\frac{1-cos(\pi/3)}{2}} y=21−cos(π/3)
y = s i n 2 ( π / 4 ) + s i n ( π / 4 ) c o s ( π / 4 ) − c o s 2 ( π / 4 ) y=sin^2(\pi/4)+sin(\pi/4)cos(\pi/4)-cos^2(\pi/4) y=sin2(π/4)+sin(π/4)cos(π/4)−cos2(π/4)
输出格式:结果之间以换行符分隔,结果共2行
- Tips:输出多个结果请使用换行符(回车,‘\n’)分隔,不要使用空格进行分隔。
- π \pi π取值为3.1415926
完整答案代码
#include<stdio.h>
#include<math.h>
int main()
{
double a,b;
a=sqrt((1-cos(3.1415926/3))/2);
b=pow(sin(3.1415926/4),2)+sin(3.1415926/4)*cos(3.1415926/4)-pow(cos(3.1415926/4),2);
printf("%f\n",a);
printf("%f\n",b);
return 0;
}
D : 实验1.4 标准数学函数使用
实验要求
1、下载安装Dev-Cpp(Dev-C++)集成开发环境(IDE);或使用其他C语言开发环境;
2、在IDE中创建自己所需的工程文件;
3、在你所创建的工程文件中,编程熟悉C程序的基本框架,以及C语言提供的标准数学函数,并按一定的格式输出程序的执行结果;
4、在你所创建的工程文件中,编程计算下述题目,并输出结果。
y = 2 5 ( 6 + 3 ) 6 + 3 y=\frac{2\sqrt{5}(\sqrt{6}+\sqrt{3})}{6+3} y=6+325 (6 +3 )
y = ln ( 5 ( ln 3 ) ) − ln ( 2 ) s i n ( π / 3 ) y=\frac{\ln(5(\ln3))-\ln(2)}{sin(\pi/3)} y=sin(π/3)ln(5(ln3))−ln(2)
y = e 3 + log 10 105 y=e^3+\log_{10}{105} y=e3+log10105
输出格式:结果之间以换行符进行分隔,结果共3行
- Tips: π \pi π取值为3.1415926, e e e的取值建议直接使用exp函数
完整答案代码
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c;
a=(2*sqrt(5)*(sqrt(6)+sqrt(3)))/(6+3);
b=(log(5*log(3))-log(2))/sin(3.1415926/3);
c=exp(3)+log10(105);
printf("%f\n",a);
printf("%f\n",b);
printf("%f\n",c);
return 0;
}
E : 实验1.5 标准数学函数使用
实验要求
1、下载安装Dev-Cpp(Dev-C++)集成开发环境(IDE);或使用其他C语言开发环境;
2、在IDE中创建自己所需的工程文件;
3、在你所创建的工程文件中,编程熟悉C程序的基本框架,以及C语言提供的标准数学函数,并按一定的格式输出程序的执行结果;
4、在你所创建的工程文件中,编程计算下述题目,并输出结果。
y = 3 / 4 + ( 103 除以 3 的余数 ) y=3/4+(103除以3的余数) y=3/4+(103除以3的余数)
y = 不大于 3.8 的最大整数 y=不大于3.8的最大整数 y=不大于3.8的最大整数
y = 不大于 − 3.8 的最大整数 y=不大于-3.8的最大整数 y=不大于−3.8的最大整数
y = 不小于 3.2 的最小整数 y=不小于3.2的最小整数 y=不小于3.2的最小整数
y
=
不小于
−
3.2
的最小整数
y=不小于-3.2的最小整数
y=不小于−3.2的最小整数
输出格式:结果之间以换行符进行分隔,结果共5行,输出均为浮点数类型
完整答案代码
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,d,e;
a=3/4.0+103%3;
b=floor(3.8);
c=floor(-3.8);
d=ceil(3.2);
e=ceil(-3.2);
printf("%f\n",a);
printf("%f\n",b);
printf("%f\n",c);
printf("%f\n",d);
printf("%f\n",e);
return 0;
}
F : 实验2 标准输入输出及数字的机内表示 1
题目描述
- 使用C语言的标准输入函数scanf(),分别读取short, int, long, long long,unsigned int类型的几个数据
- 然后利用printf()输出:
将读取的short型数据输出为十进制数,
将读取的int型数据输出为无符号数,
将读取的long型数据输出为八进制数,
将读取的long long型数据输出为十六进制数,
将读取的unsigned int型数据输出为十六进制数. - 注意:输出不需要添加
l
或ll
修饰符。 - 根据输入、输出结果理解C语言整型符号数输入输出的形式,以及数据的机内存储格式;
输入格式
五个整数
输出格式
题目中对应的格式,用换行符分隔数字,十六进制中字母为大写。
完整答案代码
#include<stdio.h>
int main()
{
short a;
int b;
long c;
long long d;
unsigned int e;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
printf("%d\n",a);
printf("%u\n",b);
printf("%o\n",c);
printf("%X\n",d);
printf("%X\n",e);
return 0;
}
G : 实验2 标准输入输出及数字的机内表示 2
题目描述
- 分别用scanf()读取float, double类型的几个数据。
- 然后利用printf()分别输出读取的float,double类型数据的一般实数形式,指数形式。
- 根据输入、输出结果理解C语言浮点数输入输出的格式,以及数据的机内存储形式。
注意事项
因为编译器的区别,所以可能会有同学在自己电脑上测试结果和示例不同,但是不会影响对代码正确性的评测。
输入格式
两个浮点数,一个可以用float存储,一个可以用double存储。
输出格式
第一个浮点数的一般形式和指数形式。
第二个浮点数的一般形式和指数形式。
#include<stdio.h>
int main()
{
float a;
double b;
scanf("%f%lf",&a,&b);
printf("%f %e\n",a,a);
printf("%f %e\n",b,b);
return 0;
}
H : 实验2 标准输入输出及数字的机内表示 3
题目描述
- 用scanf()输入字符型数据。
- 然后利用printf()输出(字符,十进制、十六进制等)。
- 根据输入、输出结果理解C语言字符输入输出的格式,以及数据的机内存储形式,理解系统对非数值型数据的编码原理,如字符的ASCII码。
输入格式
一个字符
输出格式
题目中对应的输出格式
完整答案代码
#include<stdio.h>
int main()
{
char a;
scanf("%c",&a);
printf("%c %d %X",a,a,a);
return 0;
}
I : 实验3 今有物不知其数
题目描述
今有物,不知其数。三三数之,剩X;五五数之,剩Y;七七数之,剩Z。问:物几何?
输入
三个整数 X, Y, Z
输出
一个正整数,代表物的数量(根据题意,如有多个解则输出多个解中的最小值即可)
Hint
考点:
- 标准输入/输出
- 基本运算(取模运算、布尔运算)
- 循环语句
- 条件语句
- 枚举
完整答案代码
#include<stdio.h>
int main()
{
int a,X,Y,Z;
scanf("%d%d%d",&X,&Y,&Z);
for(a=1;;a++)
{
if(a%3==X&&a%5==Y&&a%7==Z)
{
printf("%d",a);
break;
}
}
return 0;
}
J : 实验3 喝不完的啤酒
题目描述
- 啤酒2元1瓶,2个空瓶换1瓶,4个瓶盖换1瓶,问N元钱最多可以喝几瓶,并且瓶子、瓶盖、钱分别剩余多少?(不允许赊账)
输入格式
一个整数N,为钱数
输出格式
四个整数M,X,Y,Z;M为喝的总瓶数,X为剩余瓶子数,Y为剩余瓶盖数,Z为剩余钱数。
完整代码
#include<stdio.h>
int main()
{
int n,t;
scanf("%d",&n);
int ping,kong,gai,sum;
sum=n/2;
int m=n/2;
int l=n/2;
kong=m;
gai=l;
if(n%2==0){
t=0;
}else{
t=1;
}
while(kong>=2||gai>=4){
kong=m;
gai=l;
ping=kong/2+gai/4;
m=ping+m%2;
l=ping+l%4;
sum=sum+ping;
}
printf("%d %d %d %d",sum,kong,gai,t);
return 0;
}
K : 实验3 输出乘法口诀表
题目描述
- 输出乘法口诀表,格式如下:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
…
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 … 9*9=81
- 要求:
- 使用循环结构;
- 位置对齐可在printf中使用”\t”;
输入格式
一个整数N,N<=10
输出格式
对应行数的乘法口诀表
完整答案代码
#include<stdio.h>
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
printf("%d*%d=%d\t",j,i,i*j);
if(j==i){
printf("\n");
}
}
}
return 0;
}
L : 实验3 圆周率的近似值
题目描述
- 按要求计算圆周率的近似值;
π = 4 ( 1 − 1 3 + 1 5 − 1 7 + 1 9 − 1 11 + ⋯ ) π = 4(1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \frac{1}{11} + \cdots) π=4(1−31+51−71+91−111+⋯)
- 系统会给出一个整数n(n<9),当某一项的绝对值小于等于 1 0 − n 10^{-n} 10−n时,忽略掉当前项以及以后的项。
- 提示:为提高程序的执行效率,不要使用 ( − 1 ) 2 n (-1)^{2n} (−1)2n=1这种方法(n为自然数);可以考虑:一个数n,连续乘以-1,n的符号会正负相间;
测试用例
- 当最后一项的绝对值小于等于时 1 0 − 6 10^{-6} 10−6,π=3.141591,大约循环50万次;(有的环境输出π=3.14159)
- 当最后一项的绝对值小于等于时 1 0 − 7 10^{-7} 10−7,忽略掉以后的项,则π=3.141592,大约循环500万次;
- 当最后一项的绝对值小于等于时 1 0 − 8 10^{-8} 10−8,忽略掉以后的项,则π=3.141593,大约循环5000万次;
输入格式
一个整数
输出格式
一个浮点数
输出格式
一个浮点数
完整答案代码
#include<stdio.h>
#include<math.h>
int main()
{
double pi,fm,sign;
sign=1.0;
fm=1.0;
int n;
scanf("%d",&n);
while(fabs(sign/fm)>pow(10,-n))
{
pi+=sign/fm;
sign=-sign;
fm+=2;
}
printf("%f",pi*4);
return 0;
}
M : 实验4 简单矩阵运算
题目描述
编程实现3*3矩阵A、B的加法、减法、乘法及A的转置运算并输出。
- 其中矩阵A、B将由系统给出。
- 数字位置对齐可在printf中使用”\t”。
- 输出的每个矩阵间用"\n"分隔。
输入格式
十八个整数,为两个3*3的矩阵中的元素
输出格式
输出对应操作后的矩阵
完整代码答案
#include<stdio.h>
int main()
{
int a[3][3];
int b[3][3];
int jia[3][3];
int jian[3][3];
int cheng[3][3];
int zhuan[3][3];
int i,j,m;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
cheng[i][j]=0;
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&b[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
jia[i][j]=(a[i][j]+b[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
jian[i][j]=(a[i][j]-b[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
for( m=0;m<3;m++){
cheng[i][j]=cheng[i][j]+(a[i][m]*b[m][j]);
}
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
zhuan[i][j]=a[j][i];
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",jia[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",jian[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",cheng[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d\t",zhuan[i][j]);
}
printf("\n");
}
return 0;
}
N : 实验4 简单背包问题
实验要求
给定n种物品和一背包。物品i的重量(体积)是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大。
- 形式化描述
给定 C > 0 , w i > 0 , v i > 0 , 1 ≤ i ≤ n C>0,w_i>0,v_i>0,1\le i\le n C>0,wi>0,vi>0,1≤i≤n,要求找一 n n n 元向量 X = ( x 1 , x 2 , … , x n ) , x i ∈ { 0 , 1 } X=(x_1, x_2, \dots,x_n),x_i\in\{0, 1\} X=(x1,x2,…,xn),xi∈{0,1},
即:max ∑ i = 1 n v i x i s.t { ∑ i = 1 n w i x i ≤ C x i ∈ { 0 , 1 } , 1 ≤ i ≤ n \begin{array}{l} \max \sum_{i=1}^{n} v_{i} x_{i} \\ \text { s.t }\left\{\begin{array}{c} \sum_{i=1}^{n} w_{i} x_{i} \leq C \\ x_{i} \in\{0,1\}, 1 \leq i \leq n \end{array}\right. \end{array} max∑i=1nvixi s.t {∑i=1nwixi≤Cxi∈{0,1},1≤i≤n
-
请分别利用枚举法(穷举法)解决上述问题。
-
枚举法(穷举法)肯定能找到最优解。
-
要求:
- 系统给出的第一个数字是背包容量,第二个数字是物品件数,然后分别给出每件物品的重量,再分别给出每件物品的价值。
- 请依次输出装入背包的物品序号,总重量,总价值。
-
提示:
变量定义:
设 w = ( w 1 , w 2 , … , w n ) w=(w_1,w_2,\dots,w_n) w=(w1,w2,…,wn) 表示 n n n 种物品的重量, v = ( v 1 , v 2 , … , v n ) v=(v_1,v_2,\dots,v_n) v=(v1,v2,…,vn) 表示 n n n 种物品的价值;
X = ( x 1 , x 2 , … , x n ) , x i ∈ { 0 , 1 } X=(x_1, x_2, \dots,x_n),x_i\in\{0, 1\} X=(x1,x2,…,xn),xi∈{0,1}表示问题的最优解,若 x i = 1 x_i=1 xi=1,表示将第 i i i 种物品装入背包,最优解对应的背包重量为 Weight,价值为Value;初始化 Weight=0, Value=0;
C表示背包的容量(所能容纳的重量);
Y = ( y 1 , y 2 , … , y n ) , y i ∈ { 0 , 1 } Y=(y_1, y_2, \dots,y_n),y_i\in\{0, 1\} Y=(y1,y2,…,yn),yi∈{0,1}表示目前n种物品的一种装法(解法),按该装法,背包中物品的重量为CurWeight ,背包中物品的价值为CurValue ;
算法描述(伪代码):
for (i=0 to 2 n − 1 2^n-1 2n−1) {
将 i 对应的二进制数按位存放到数组Y中;
尝试按照装包方案y进行装包,则背包中物品的重量为CurWeight, 价值为CurValue;
如果CurWeight>C,则丢弃该方案,继续尝试下一种方案;否则,若该方案优于以前的方案,即如果CurValue>Value,则暂存该方案:即X=Y,Value=CurValue, Weight= CurWeight。 继续循环;
}
输出最优解X和对应的物品的相关信息, 背包中物品的价值Value,背包中物品的重量Weight;
- 测试用例:
- 背包容量 C = 150 C=150 C=150, 7 7 7 种物品,其重量 W = ( 10 , 40 , 30 , 50 , 35 , 40 , 30 ) W=(10,40,30,50,35,40,30) W=(10,40,30,50,35,40,30),价值 V = ( 35 , 30 , 6 , 50 , 40 , 10 , 25 ) V=(35,30,6,50,40,10,25) V=(35,30,6,50,40,10,25) (W与V均为整数)
- 枚举法得到的最优解:装入物品 1 , 2 , 4 , 5 1,2,4,5 1,2,4,5,背包重量 135 135 135,最大价值 155 155 155;
数据范围
C < 1000 , n < 20 C \lt 1000,n \lt20 C<1000,n<20
完整答案代码
#include<stdio.h>
int main()
{
int n,c,i,j;
scanf("%d%d",&c,&n);
int w[n];
int v[n];
int f[c+1];
int g[n][c+1];
for(i=0;i<n;i++){
for(j=0;j<=c;j++){
g[i][j]=0;
}
}
for(i=0;i<=c;i++){
f[i]=0;
}
for(i=0;i<n;i++){
scanf("%d",&w[i]);
}
for(i=0;i<n;i++){
scanf("%d",&v[i]);
}
for(i=n-1;i>=0;i--){
for(j=c;j>=w[i];j--){
if(f[j]<f[j-w[i]]+v[i]){
f[j]=f[j-w[i]]+v[i];
g[i][j]=1;
}else{
g[i][j]=0;
}
}
}
int t=c;
for(i=0;i<n;i++){
if(g[i][t]==1){
printf("%d ",i+1);
t-=w[i];
}
}
printf("%d %d",c-t,f[c]);
return 0;
}
如能打赏,不甚感激[叩谢]。
标签:输出,int,格式,scanf,导论,printf,程序设计,include,山东大学 From: https://blog.csdn.net/Water_Star1/article/details/141126517