C语言题目 高手请帮忙!!!最佳答案积分送上!!!

1,若有“char c=1025;printf("%d",c);”结果为?
答案为 1
为什么呢?越详细越好!
为什么char型的1025既没有单引号又没有双引号,不是字符型也不是字 符串型的,输出为什么用“%d”,答案1又是哪来的?

2,编写程序,输入两个双精度的数,求它们的平均值,要求小数点后保留两位小数,第三位小数四舍五入
答案 #include<stdio.h>
main()
{
double f1,f2,avg;
scanf("%lf,%lf",&f1,&f2);
avg=(f1+f2)/2;
printf("avg=%3.2lf\n",avg);
}
%3.2lf 的含义是什么?可以实现保留两位小数,并对第三位实现四舍五入吗?

3,邮寄包裹,以每1KG为一个记费单位,每个邮包最多10KG,低于1KG的按一个记费单位算,每件邮包的手续费为3元,从A到B的邮寄费是3元/KG
#include<stdio.h>
main()
{
float postage;
float weight;
scanf("%f",&weight);
if(weight>10)
printf(wrong!);
postage=(int)weight*3.0+3.0;
printf("postage=%f",postage);
}

(int)weight是对重量进行取整处理,但是题目中的不足1KG按最小单位记费怎么办呢?应该怎么把那部分的费用算出来,或者这个答案为什么是对的?

4.执行下面的程序后a b k 的值分别为?
int a=0,b=0,k=0;
for(;a<=5;a++)
if(a%2)
for(;b<=3;b++)
k=a+b;

答案为6.4.4为什么?

5.执行下面程序的输出结果为?
#include<stdio.h>
main()
{
int x=0,y=5,z=3;
while(z-->0&&++x<5)
y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
答案是什么?为什么?

谢谢帮忙!

1.一个char是一个字节,最大值255,你的赋值显然是越址了,1025=1024+1=2^10+1,二进制就是10000000001,截取前8位,即是10000000,在内存中低位高地址,高位低地址,所以实际上就是00000001,就是1.
2.%f 根据需要进行截尾,你可以设置需要几位小数点后面的数字:
printf “%12f\n”, 6*7 + 2/3; #输出为: ○○○42.666667
printf “%12.3f\n”, 6*7 + 2/3; #输出为: ○○○○○○42.667
printf “%12.0f\n”, 6*7 + 2/3; #输出为: ○○○○○○○○○○43
12.3f的意思就是小数总12位,其中小数部分是3位,多余位自动四舍五入
3.这道题的意思是,小数部分不为0就在整数加1,即9.1,9,4,9,9都是按照10计算,这样(int)weight*3.0+3.0,int把小数部分截掉,再加上一个1单位的,这样不就达到那样的效果了。
4.a=1,3,5的时候,执行里面的for,但第一次循环结束后,b的值为4,以后再也不会循环了,因为b不小于3,此时k=1+3=4.最后a=6,b=4,k=4.
5.最后就是考++或--放前面和放后面的区别,自己看去吧。
x=3,y=2,z=-1
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-04
没分...

1.
1025会被强制截取最低位字节的值给c.
1025的二进制是00000100 00000001,最低位字节是1.
printf是不会检查参数类型的,只根据控制符来输出,%d就是按有符号整数输出.

2.
建议你仔细看下教材上关于输出语句的控制符部分.

3.
int强制转换就是取浮点数的整数部分.不足1KG的话,weight的值小于1,那么(int)weight的值就是0,算出来的postage是3,正好是正确答案.

4.
if(a%2)表示当a为奇数时,执行后面的语句,所以a=1时执行了b的循环.
循环的最后一步是k=a+b=1+3=4;之后b++,b变成4.
之后,因为b没有重新赋值,所以值始终是4,所以,对于a=3和5的情况,b的循环都没有执行,所以k始终是4
a的循环条件是<=5,所以结束时a=6

5.
第一次:
z-->0,先取z的值3>0,然后--,z变成2,>成立
++x的值为1,1<5,成立
所以y减1变成4

第二次,循环条件依然成立,x变成2,z变成1,y变成3
第三次,x变成3,z变成0,y变成2
第四次,z=0,大于0不成立,如果&&的左边为0,那么结果肯定是0,所以右边的++x没执行,x依然是3,但z--执行了,所以z变成-1.y减1没执行,y是2
所以结果是3,2,-1
第2个回答  2008-09-04
1.
char型和int型可以互换 char型用%d输出时为ascii值,%c输出时为字符

2. %3.2lf 的含义是什么?可以实现保留两位小数,并对第三位实现四舍五入吗?
以浮点形式输出,3表示3位有效数字,但实际长度超出不会截取,.2表示保留小数点后两位
可以的

3.原来的也不对!
#include<stdio.h>
main()
{
float postage;
float weight;
scanf("%f",&weight);
if(weight>10)
{
printf("wrong!"); //少了""
}
else //不加上时,当weight>10时,输出wrong后,还会执行后面的语句
{
if(weight < 1)
postage=6.0;
else
postage=(int)weight*3.0+3.0;
printf("postage=%f",postage);
}
}

4.
for(;a<=5;a++) //a只有这里才改变它的值,所以a++直到a为6时,退出for
if(a%2) // 只在a%2等开1、3、5时进入if
for(;b<=3;b++) //当第一次a等于1时进入,b一直加到为4,在后面b没有改变值,一直没有再执行for循环
k=a+b; // 虽然循环做了四次,但是只有最后一次有效,就是a为1和b为3时有效,所以k为4

最后为6.4.4

5.

3,2,-1
答案是由于z--执行了4次(z为0时退出while循环,但是还要自减1),x++执行了3次(由于第四次比较z-->0不成立,第四次++x<5的比较没有进行,所以只做了3次比较),y=y-1;和原因的x++一样,第四次没有进入
第3个回答  2008-09-04
1。
1025 写成二进制 0100 0000 0001
char 只有8位,高位被舍弃,故 0000 0001
按10进制输出,即为 1

2.
%3.2lf 的含义是什么?
M.Nlf
M:域宽,即对应的输出项在输出设备上所占字符数

若:实际数据宽度>M,按实际数据宽度输出。

实际数据宽度<M,左边补空。

N:精度,说明输出的实型数的小数位数。

3.
(int)weight*3.0+3.0;
注意,后面加了一个3.0, 当你的weight为 0.9时,(int)weight =0
上式结果为3.0

4.
for(;a<=5;a++)

当a=6是退出循环。

if(a%2)
for(;b<=3;b++)
k=a+b;
只有当a=1时该循环才会执行
当b=3时得到最终k值 = 1+3 =4

当 b =4 时退出循环

5.

结果时 3 2 -1
while(z-->0&&++x<5)
y=y-1;
当 z=-1时这个条件不再满足。循环结束。本回答被提问者采纳

一个有关C语言(数据结构)程序设计题 高手请帮忙,高分!
include <stdio.h> include <malloc.h> define INFINITY 32767 define MAX_VEX 20 \/\/最大顶点个数 define QUEUE_SIZE (MAX_VEX+1) \/\/队列长度 bool *visited; \/\/访问标志数组 \/\/图的邻接矩阵存储结构 typedef struct{ char *vexs; \/\/顶点向量 int arcs[MAX_VEX][MAX_VEX]; \/\/邻接矩阵 ...

几道c语言题目 菜鸟望高手解答
第一道题:输出的是:0 1 3 4 \/\/因为for循环 i从0到4 但是当i等于2的时候执行了continue,也就是直接跳转到下一次循环,所以2没有输出 第二题:t为2 因为 if-else 结构中的else是和最近一个if相匹配的,又因为if(x<y)不成立,所以直接执行输出语句,即输出2 第三题:3 6 9 因为x被...

C语言高手请进啊,高分哦,详细的解释!!!
1. a = 10 2. m = 0 n = 0 k = 0 3. France r 第一题 考 -- ++ 运算符优先级,以及 c?a:b 运算 翻译成中文 a= b(9)自减 判断b(8)是否等于d(8) d自加变成9 判断成功执行前面语句 d自加变成10 所以a=10 第二题 考 条件运算 判断...

C语言高手,帮帮忙
}(3分)这个题,因为x=0,所以执行case 0 中的语句,然后在case 0中 有switch(y==2) 所以执行case 2 中的语句 显示% 然后由break返回执行下一个语句 case 1:switch(z) ,因为z=3 ,而case 语句中没有case 3,所以执行default:printf(“#”);所以显示结果是 (14) 585858 运行过的...

C语言的问题 请高手帮忙回答 谢谢~!~急···
肯定有15 while (i<15)if(++i%3!=0) continue;else printf(“%3d”,i);} 当i=14时,进入循环,先执行++i进行if判断,此时i变成15,if条件不满足(15%3==0),执行else,打印15

###C语言程序高手请回答!!!
(1)include<stdio.h> main(){ int i,n,s;printf("input n:");scanf("%d",&n);for(i=1,s=1;i<=n;i++)s*=i;printf("%d",s);} \/\/注意这个程序求阶乘只适合比较小的数,因为int数据范围的关系表示不了太大的数。(2)include<stdio.h> int *function(int a[50],int n){ in...

c语言问题,高手请进谢谢!!!
1、++i 时i加1得到i,此时的i=2;2、++i 时i加1得到i,此时的i=2+1=3;3、此时前面有两个i等待运行,即i+i--->这两个i些时都是3;而不是一个2,一个3;4。再一个++i 此时i加1得到i,i=3+1=4;由上面的理解知道i此时已经是4,5、由上面四步得到一个i=4,i+i+i的式...

C语言高手帮帮我!!!
i++=t*=i可以这样算.先算t*=i => t=(t*i); 再算 i++=t; => (i=t;i++;)第二题:第一次循环.k=1; if不运行得到a = b =s[1]-'0' 的ASC码.第二次循环k=2(也就是最后一次循环)=> a=s[1]-'0'+s[2]-'0'都用ASC码运算....

请高手用C语言帮忙做个编程的题目,谢谢了!
int IsDevided(int number,int dev){ if(number %dev == 0){ return 1;} return 0;} void EasyDone(int a){ int chose;int i,j;printf("Input your chose\\n1>能被3整除的"<Enter 1>","\\n2>能被5整除的<Enter 2>","\\n3>能被3或5整除的<Enter 3>\\n");scanf("%d",&chose)...

C语言高手请帮忙!!!
ch>='A'&&ch<='Z'?printf("%c\\n",ch+32):(ch>='a'&&ch<='z'?printf("%c\\n",ch-32):printf("%c\\n",ch));getch();} ___回复3:输入一个正整数n (1<n≤10),再输入n个整数,要求 ⑴ 求这n个数的平均值和最大值。⑵ 按逆序输出这n个数。⑶ 将最小值与第一个数交...

相似回答