16位加法器和字符数组调试时的一些问题
来源:互联网 发布:yy mac进入房间失败 编辑:程序博客网 时间:2024/05/29 04:33
要求:通过连接16个1位加法器而形成1个16位的加法器,我们会要求用户输入两个16进制数来验证加法器的功能。
1,我以前的答案:
#include<stdio.h>void readinput(char str_1[], char str_2[], int num_1[], int num_2[]);void operation(int num_1[],int num_2[],int outpr[]);void main(void){char str_1[17];char str_2[17];int num_1[16];int num_2[16];int outpr[16];gets_s(str_1);gets_s(str_2);readinput(str_1,str_2,num_1,num_2);operation(num_1, num_2,outpr);for (int i = 0; i <= 15; i++){printf("%d",outpr[i]);}}void readinput(char str_1[], char str_2[], int num_1[], int num_2[]){for (int i = 15; i >= 0; i--){num_1[i] = str_1[i] - '0';num_2[i] = str_2[i] - '0';}}void operation(int num_1[],int num_2[],int outpr[]){int carry = 0, standard,real_num;for (int i = 15; i >= 0; i--){real_num = num_1[i] + num_2[i] + carry;if (real_num == 0 || real_num == 1){standard = real_num;outpr[i] = standard;carry = 0;}else if (real_num == 2){standard = 0;outpr[i] = standard;carry = 1;}else{standard = 1;outpr[i] = standard;carry = 1;}}}
思想:把输入的字符型的数组转化为整数型的数组,然后对这两个个整数型的数组进行if判定,如果相加结果为0,1,2,3会怎样。
2,标准答案:
#include<stdio.h>void adder1bit(char x, char y, char carryIn, char *sum, char *carryOut);void adder16bit(char x[], char y[], char answer[]);void readinput(char in[]);void main(){int i;char dummy;char inputX[16];char inputY[16];char answer[17];printf("Enter 2 16-bit binary numbers:\n");readinput(inputX);scanf("%c", &dummy);readinput(inputY);adder16bit(inputX,inputY,answer);printf("The sum is:");for (i = 16; i >= 0; i--){printf("%d",answer[i]);}printf("\n");}void readinput(char in[]){int i;char bit;for (i = 15; i >= 0; i--){scanf("%c",&bit);in[i] = bit - '0';}}void adder16bit(char x[], char y[], char answer[]){int i;char cin, cout, sum;cin = 0;for (i = 0; i < 16; i++){//这里将子函数内的局部参数也取出指针赋到子函数里面。adder1bit(x[i], y[i], cin, &sum, &cout);cin = cout;answer[i] = sum;}answer[16] = cout;}void adder1bit(char x, char y, char carryIn, char *sum, char *carryOut){*sum = (x ^ y) ^ carryIn;*carryOut = x & y | carryIn & (x ^ y);}思想:把输入的字符型数组不转化成整数型数组,用数字逻辑的方法进行运算而不是我的那个if判断,注意其子函数里面调用子函数的方法和子函数调用子函数是指针的妙用。
3,关于调试时数组的显示。
a,首先,这子函数中调用数组的方式和它调试时的显示
执行后,
总结:数组调试时的显示方式是:地址+数组储存的内容。
b,在子函数内部数组的调用和使用方式。
执行前:
执行后:
总结:关于数组的这个调用方式也是正确的:
阅读全文
0 0
- 16位加法器和字符数组调试时的一些问题
- 位操作和字符转换的一些小问题
- 16位行波进位加法器建模和验证
- 关于字符指针和字符数组的一些错误
- 16位先行进位加法器--原理篇
- 16位2级流水灯加法器
- 关于字符串与字符数组的一些小问题
- 关于指针和函数和字符数组的一些小结
- 关于字符指针和字符数组的小问题
- 函数内返回字符数组和字符指针的问题
- 加法器 问题
- 字符数组的问题
- 指针和数组的一些问题
- 8位加法器
- printf的一些用法和64位移植性问题
- 关于一级数组和二级数组的一些问题
- 关于mysql的一些时间格式和字符的问题
- 模拟加法器的设计和仿真
- 传感器
- 团队天梯赛L1-004. 计算摄氏温度
- gradle构建样例
- Activity-setContentView(int resId)源码分析
- iOS-在UILabel中设置值,值返回UILabel
- 16位加法器和字符数组调试时的一些问题
- J2EE中容器
- MySql模糊查询
- XPath与lxml类库
- Java Web框架对比:SSH和SSM
- 在CentOS7.2中安装htop 安装 和 supervisor
- 东方贵族夫人放大招:CBK会员余额换购皮草
- python绘制散点图并标记序号
- JSTL -- 自定义标签