当前位置:首页 > 资格考试 > 正文

一道关于c语言的编程题 如图

一道C语言编程问题如图?

错误分析

  1. if的使用结构有误,判断语句应该放在()小括号里面

  2. else与if的匹配问题,else不能单独存在,每一个else都必须要有同层次的未匹配的if与之配对,你的else是没有的

  3. 条件判断中没有连续比较这一写法,可以使用逻辑运算符&&来进行连接1

代码截图

用了另一种方法找最大值

代码截图

完整代码

#include

intmain()

{

inta,b,c;

intmax;

scanf("%d%d%d",&a,&b,&c);

max=a;//max初识赋值为a

if(b>max)//如果b比max大,max更新为更大的b

{

max=b;

}


if(c>max)//如果c比max大,max更新为更大的c

{

max=c;

}


printf("最大值是:%d",max);

return0;

}

文件链接

在知道上直接复制粘贴的话格式会有问题,可以自己手打,我也上传了一份到网盘,有需要自行获取。

链接:

https://545c.com/file/24816192-426467195 访问密码:132052

手打不易,望采纳~

求解一道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 main(){ int i,score,sum=0; float avg=0; for(i=1;i<=10;i++){ scanf("%d",&score); sum = sum+score; } avg = sum/10.0; printf("总成绩:%d,平均成绩:%.1f",sum,avg); } 第二题: main(){ int s; do{ scanf("%d",&s); }while(s<=0||s>=32768); while(s){ printf("%d,",s%10); s=s/10; } } 第三题: #include

急急急!一道有关于c语言的编程题目,希望懂得可以告诉我。关于结构和调用参数这方面的知识。

第一个问题,是输入缓冲区的问题,在你执行输入数组操作的时候,最后输入的回车符仍然保留在了冲入缓冲区中,所以在做scanf输入c的时候,就自动把回车输入了,所以出现了你理解的不灯你输入就继续执行代码的问题 解决方法;先清空缓冲区,再执行scanf printf("please input the key word:\n"); fflush(stdin);//用于清空输入缓冲区的函数 scanf("%c",&ch); 第二个问题,原因是你只有4个输出项,然而出现了5个格式控制符,所以出现了最后一个输出错误的问题 解决办法,删除一个%5d即可 你提出的问题解决了,另外,你的排序部分貌似有问题 ---

关于c语言的一道编程计算题

#include "stdio.h" void main() { int a,b,i,j,; static t[],count=0; for(a=1,a<716699,a++) {for(b=0,b<716699,b++) while(at[i+1]) j=t[i],t[i+1]=t[i],t[i+1]=j;} printf("%d",t[0]); } 很久没写了``家里也没装``想了10几分钟就这样了`` 估计错误也不少``你自己改下``上面按我的思路
展开全文阅读