C语言10/12作业

1、 消除小数点后面的零
代码:
#include<stdio.h>

int main()
{
float a = 2*1.0/5;//若将1.0乘在分母,则需加括号
printf ("%g", a);
return 0;
}

2、 十进制转二进制
代码:#include<stdio.h>
void binary_cal(int n){
int r;
r = n % 2;
if(n >= 2)
binary_cal(n/2); //使用递归函数实现,占用较多内存,执行速度较慢
printf("%d",r);
}
int main(void){
int num;
printf(“请输入一个十进制整数:\n”);
while(scanf("%d",&num) == 1){
printf(“十进制整数转换为二进制数是:\n”);
binary_cal(num);
putchar(’\n’);
}
return 0;
}

3、 查原码、反码、补码
(1)原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
(2)正数的反码是其本身.负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反
(3)补码的表示方法是:
正数的补码就是其本身.负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

4、 单精度浮点数二进制存储
首先将一个小数如:235.725的小数部分取出,即:0.725,将其乘以进制数二进制就乘以2后得到1.45,取其整数部分1为二进制小数的第一项(十分位),在将小数部分0.45乘2得0.9,取其整数部分为二进制小数的第二位(百分位)0,在将其小数部分0.9乘2,得1.8,取其整数部分为二进制小数的第三位(千分位)1,取其小数部分0.8再乘2……以此类推,直到值为0或形成循环小数则停止。
代码://此处小数位转二进制到第八位,如果想要更多,可以设置i的大小
#include <stdio.h>
#include <math.h>
void binarycal(int n)
{
int r;
r=n%2;
if(n>=2)
binarycal(n/2);
printf("%d",r);
}
int main(void) {
float x=-6.3; //为变量赋初值
if(x<0)
{
printf("-");
x=-x;
}//判断正负
int a;
a=(int)x;
binarycal(a);
printf(".");
float b=x-a;
for(int i=0;i<8;i++)
{
float c=b*2;
int d;
d=(int)c;
printf("%d",d);
b=c-d;
}
return 0;
}

5、 二进制、十进制、八进制、十六进制相互转换
(1) 十进制转二进制前面已经给出,然后将程序里的2改为8即可得十进制转八进制的程序。至于十六进制,加入if判定r即可
(2) 下面讨论其它进制转为十进制即可,这样它们也能进一步间接借助十进制转换。
二进制转十进制代码:
#include<stdio.h>
int main(void){
int num;
printf(“请输入一个八位二进制整数:\n”);
scanf("%d",&num);
float a1=num/(10000000);
int b1;
b1=(int)a1;
float a2=num/(1000000)-b110;
int b2;
b2=(int)a2;
float a3=num/(100000)-b1
100-b210;
int b3;
b3=(int)a3;
float a4=num/(10000)-b1
1000-b2100-b310;
int b4;
b4=(int)a4;
float a5=num/(1000)-b110000-b21000-b3100-b410;
int b5;
b5=(int)a5;
float a6=num/(100)-b1100000-b210000-b31000-b4100-b510;
int b6;
b6=(int)a6;
float a7=num/(10)-b1
1000000-b2100000-b310000-b41000-b5100-b610;
int b7;
b7=(int)a7;
int b8=num-b1
10000000-b21000000-b3100000-b410000-b51000-b6100-b710;
printf("%d",b1*(20)+b2*(21)+b3*(22)+b4*(23)+b5*(24)+b6*(25)+b7*(26)+b8*(27));
return 0;
}

八进制转十进制代码:

#include<stdio.h>
int main(void){
int x=043;//前面加0即为八进制表示
printf("%d",x);
return 0;
}

十六进制转十进制代码:
#include<stdio.h>
int main(void){
int x=0xdd;//前面加0x即为十六进制表示
printf("%d",x);
return 0;
}

6、 查什么是内存溢出、内存泄露
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
7、 为什么unsigned short 定义,输出65535,加一就是零?
unsigned char 表示无符号,bai所以范围在 0-65535,加一则溢出,直接返回零。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
成绩管理系统是一个用C语言编写的程序,旨在帮助教师和学生高效管理和查询成绩。该系统具有以下功能: 1. 学生管理:教师可以录入学生的基本信息,包括学号、姓名、性别等,并分配一个唯一的学生ID。学生信息可以进行增加、修改和删除操作,方便教师及时更新学生信息。 2. 成绩录入:教师可以根据每门课的考试情况,录入学生成绩。系统会自动计算学生的总成绩,并将其存储在数据库中。 3. 成绩查询:学生可以通过输入自己的学号和密码,查询自己的成绩情况。系统会根据学生ID在数据库中查找对应的成绩信息,并显示出来。同时,教师也可以通过输入学生ID或课程ID,查询特定学生或特定课程的成绩情况。 4. 成绩统计:系统会自动统计每门课的平均成绩、最高分和最低分,并显示在教师的界面上。这样,教师可以快速了解每个班级或整个学校的成绩情况,及时发现问题并采取有效措施。 5. 成绩分析:系统还提供了成绩分布图和曲线图,教师可以通过这些图表直观地了解学生的成绩分布情况,帮助教师发现成绩偏低或成绩偏高的学生,并进行针对性的辅导。 通过使用这个成绩管理系统,教师和学生可以更加方便地管理和查询成绩,提高教学效率和学习动力。同时,系统的安全性也得到了保障,学生的个人隐私不会外泄。这个系统对于大学和中学的教育机构来说,是一种极具实用价值的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值