几道C语言的函数程序补全题,求大佬解答
首先看一下程序的逻辑(虽然貌似题主应该不是在这一块有问题:
关于ascii码的解释:
首先得知道每个字符和数值的对应关系(图不清晰可看戳这里:ascii编码对应表
好了,现在看程序中的第一个if语句,在用大于、小于这些镇绝悔运算比较符比较char的时候,会自动转换为整数比较,也就是说‘0’会转换成48,‘1’转换成49……以此类推,最后是‘9’转换成57,你会发现把这些char减去48就会得到它们各自相对应的整数数值,这就是第一个if里面减去48的目的。同理,接下来的else-if语句,‘A’到‘F’也会转换成整数数值,具体对应的数值可以参看ascii表,一样的道理减去‘A’然后加10的目的也是转换成数值,因为在大于10的进制下,A代表10,B代表11……以此类推,因为这个程序最高就16进制了,所以判断到F就可以了。
然后我们来看进制的解释:
所谓进制,其实就是组合数字的方式,理解了这一点就很好说了。比如说10进制,为什么198等于198(好像很傻一问题)?其实是因宏并为在十进制下,198 (10) = 1 * 10^2 9 * 10^1 8 * 10^0 = 198(好像是这么回事,(。ì _ í。)),同一个数字,放在不同的位置,它所代表的分量也不一样,即组合数字的方式会影响数字的值,1后面还有2个数字,所以这个1实际上是1 * 10^2 = 100,而不是1,其它位置的数字同理,然后把这些值加起来,就得到了整个数字所代表的最终的值,因此我们才有了 198 = 198(好像很有道理)。
但是,198也可能不等于198,什么时候不等于呢?在不同的进制下。比如说假如我们的这个198是在16进制下的198,那么 198 (16) = 1 * 16^2 9 * 16^1 8 * 16^0 = 408 (10) = 408。
为什么会产生这种差别呢?因为16进制下的那个1代表的分量是1 * 16^2了,而不是1 * 10^2了,同理,在其它进制下只需要把乘的数字换成对应的进制的数就好了,比如在9进制下那个1就是1 * 9^2等等。
这样一来上面程序里面的for语句就好理解了,之所以用for是因为要算出次方(这个应该不用解释),一个数要乘的次方是它后面跟着的数字的个数,所以是“j = 0; j < len - 1”。
然后把这些值加起来,就得到这个数字对应的十进制下的数值,也就完成了最终的转换。
题主可以随便写些不同进制下的数字,然后自己算出十进制下对应的数值,和网站上得出的结果比较比较,这样也可以加深对进制的理解,同时提高计算能力。
戳这里:在线进制转换
这里给出了一御正个链接,这种网页到处都是,随便搜一下就可以找到。
如果我的回答可以帮到您,请采纳哦!
求一个c语言编程大佬
include<stdio.h> int k;int sumOfFactor(int n){ int i,s=1;for(i=2; i*i<n; i++)if(n%i==0)s+=i+n\/i;if(i*i==n)s+=i;return s;} int friendNum(int n){ k=sumOfFactor(n);return k==sumOfFactor(n)&&n==sumOfFactor(k);} int main(){ int n;scanf("%d"...
【急】c语言程序设计,求大佬教教我QAQ 输入5名学生4门课的成绩,分别用...
include<stdio.h> int main(void){ int i,j;double sum[5],data;for(i=0;i<5;++i){ for(j=0,sum[i]=0;j<5;++j){ scanf("%lf",&data);sum[i]+=data;} sum[i]\/=5;} for(i=0;i<4;++i){ for(j=i;j<4-i;++j){ if(sum[j]<sum[j+1]){ double tmp = sum[...
求大佬解决C语言问题
题目要求用指针函数,既返回值为指针类型的函数。在主函数接收返回值并输出打印。从输入的学生中找出有不及格的学生,并输出其不及格的课目成绩。(在打印所有学生的同时就筛选出存在不及格的学生,可减少循环次数,本题只有3个学生,假设更多的话)。下面是代码:include <stdio.h> include <malloc.h> ...
C语言程序题:写一函数sort(int a,int n)实现对数组a的排序,求各位大佬...
函数代码如下:void sort(int a[], int n){int i, j, m;int temp; for(i = 0; i < n -1; i++){m = i;for(j = i + 1; j < n; j++){if(a[j] < a[m])m = j;}if(m != i){temp = a[i];a[i] = a[m];a[m] = temp;}}}整个测试如下:include <...
一道c语言初学者代码编写题,绝对值求和,有大佬嘛?
include<stdio.h> include<math.h> int main(){ double a,b;scanf("%lf%lf",&a,&b);printf("%.1f\\n",fabs(a)+fabs(b));return 0;}
c语言题目,求大佬赐教
include <stdio.h> include <stdlib.h> int main(){ char grade1;int ifB;printf("请输入等级:");scanf("%c",&grade1);switch(grade1){ case 'A':case 'a': \/\/如果是小写 printf("10万");break;case 'B':case 'b':printf("请再次输入等级:");scanf("%d",&ifB);switch(ifB...
C语言题目 求大佬帮看一下
2、但是需要注意的一点是,在while条件中,使用的是 K++, 而++符号在后面。3、++运算符使用有两种, 先+1在用, 和先使用在+1。而此处使用的明明是后者。4、++在后, 变量k==10时,在判断不成立后, 会在进行+1运算,所以最后结果为11。以上是我对这道题目的解析, 如果对你有帮助,请采纳...
c语言问题,求大佬帮忙
include "stdafx.h"include <stdio.h> define Sever_type 3 define Oil_type 4 int oil_type;int serve_type;double ALL_Price;struct OIL { char *type;double price;};struct SERVES { char *type;double reduce;};OIL oil[4]={ {"90号汽油",6.95},{"93号汽油",7.44},{"97号汽油...
c语言提问,大佬求解
这图看得我眼花啊;第一行的是被调函数的函数定义,括号里是形参;在main函数中的printf语句中是被调函数的实参,传过去的是一个数组和是个整数;第二行是声明一个浮点型变量用来储存计算后的结果;并在被调函数执行完毕后返回;6.2f的意思是输出为浮点型,6个占位符,精确到小数点后两位;意思就...
哪位大佬能帮看看这道c语言?
按题意,既利用指针将b中每个元素按照升序插入到a数组对应位置。思路:a,b都是默认输入升序的数(题目没要求验证,我的代码也不验证,请按升序输入,如需验证升序输入,只需定义一个变量记录输入的数字,并在下次循环输入时比大小。)所以,定义2个指针分别指向a,b最后一个输入的元素地址,嵌套循环,...