北京大学《计算概论》讲义ch.pptVIP

  • 5
  • 0
  • 约1.11万字
  • 约 79页
  • 2019-09-01 发布于广东
  • 举报
* 大整数的加法 计算 83856 + 129476 解决输入的问题:利用字符数组接收输入; 为了进行计算:把字符数组转换成整数数组,每个元素 与字符数组中的每个字符相对应; 转换过程中可以顺便更换一下摆放顺序,以便符合我们平时的竖式计算习惯; 按照规则进行计算,用数组元素操作每一位(注意进位); 把操作结果按照“先高位再低位”的顺序输出出来; 8 3 8 5 6 1 2 9 4 7 6 83856 129476 6 5 8 3 8 6 7 4 9 2 1 2 3 3 3 1 2 213332 * #define MAX_LEN 201 #include string.h int main() { int an1[MAX_LEN] = {0}, an2[MAX_LEN] = {0}; int sum[MAX_LEN] = {0}; char seLine1[MAX_LEN], seLine2[MAX_LEN]; printf(please input two integers:\n); gets(seLine1); gets(seLine2); int nLen1 = strlen(seLine1); int nLen2 = strlen(seLine2); 使用strlen()函数: 获得字符串的长度! * int i, j; //将输入的两个字符数组变成整数数组,并倒置 for (i = nLen1-1, j=0; i=0; i--, j++){ an1[j] = seLine1[i] - 0; } for (i = nLen2-1, j=0; i=0; i--, j++){ an2[j] = seLine2[i] - 0; } 8 3 8 5 6 \0 1 2 9 4 7 6 \0 6 5 8 3 8 0 0 0 0 0 6 7 4 9 2 1 0 0 0 0 字符数组 整数数组 int carry = 0; //进位值 for (i = 0; i MAX_LEN; i++) { sum[i] = an1[i] + an2[i] + carry; if(sum[i] = 10){ sum[i] -= 10; carry = 1; } else { carry = 0; } } i = MAX_LEN -1; while(sum[i]==0) { //找到第一个不为0的位 i--; } for(;i = 0; i--){ //假设总和不为0! printf(%d, sum[i]); //输出每一位数 } printf(\n); return 0; } 6 5 8 3 8 0 0 0 0 0 6 7 4 9 2 1 0 0 0 0 2 3 3 3 1 2 0 0 0 0 213332 * carry 大数的加法 程序演示 * 思考题:求n! (32n200) 用数组来表示结果 数组长度估计? 乘法的规律? * 字符串 数组 由 字符串变量 构成 的 数组 字符串 数组 字符串变量 一维字符数组 字符串数组 二维字符数组 如何声明 字符串 数组 第一步: 确定 数组中存储的字符串 的 最大长度LEN 第二步: 确定 数组包含的字符串变量 的 最大数量N 第三步: 声明 一个 行数为N,列数为LEN+1 的 二维字符数组 char zfcsz[N][LEN+1]; 如何使用 字符串 数组 int main(){ char zfc_src[50], zfc_tgt[50]; gets(zfc_src); strcpy(zfc_tgt, zfc_src); printf(“%s\n”, zfc_tgt); return 0; } int main(){ char zfc[2][50]; gets(zfc[0]); strcpy(zfc[1], zfc[0]); printf(“%s\n”, zfc[1]); return 0; } 小明的药物动力学名词词典 * 小明的药物动力学名词词典 回顾排序:排序的基本思想 * 对数组 int sz[LEN]进行排序, 可以分为 LEN 个步骤进行。 第 k 步:把第 k 大的数放在变量 sz[LEN-k] 中; (K=1, 2, 3, 4, …, LEN-1, LEN) 小明的药物动力学名词词典 回顾排序:冒泡排序 * int e; fo

文档评论(0)

1亿VIP精品文档

相关文档