这道题的关键在于分离数字,分离方法可以用这种方法,比如,用119来实现分离,根据题目要结果为1+1+9=11对吧,我们通过这样来分离,(1)用119%10,就是119除以10的余数是9对吧?聪明的你现在就应该发现9被分离出来了吧(2)接着分离十位数,119/10的结果只能为整数是11对吧,再用11%10,11除以10的余数为1对吧?是不是又把1分离出来了(3)最后就是百位数了,11/10的结果为1对吧,百位数也分离出来了(4)最后我们只需要吧他们相加不就完了。
分离的结束条件是当整除结果小于10时结束。
在分离过程中我们可以使用数组来存储分离出来的数。
具体代码如下:
/*方法一为递归方法解答,本人觉得此方法更简单,能理解最好*/
#include
int show(int num)
{
if(num
return num;/*递归出口*/
else
return num%10+show(num/10);
}
void main()
{
int num,sum;
printf("请输入一个整数:");
scanf("%d",&num);
sum=show(num);
printf("各位数之和的结果为:%dn",sum);
}
/*方法二用数组做的,做法可能过于复杂,不要建议,有好的方法大家分享*/
#include
void main()
{
int value[10];
int num;
printf("请输入一个整数:");
scanf("%d",&num);
while(num=10000)
{
printf("此代码暂时只支持10000以下的4位数的计算,输入整数无效!请重新输入:");
scanf("%d",&num);
}
if(num>=0&num
printf("结果为:%dn",num);
else if(num>=10&num
{
value[0]=num%10;
value[1]=num/10;
printf("结果为:%dn",value[0]+value[1]);
}
else if(num>=100&num
{
value[0]=num%10; /*分离个位数*/
value[1]=num/10; /*得出新的待分离数*/
value[2]=value[1]%10; /*分离出十位数*/
value[3]=value[1]/10; /*得到百位数*/
printf("结果为:%dn",value[0]+value[2]+value[3]);
}
else
{
value[0]=num%10; /*分离个位数*/
value[1]=num/10; /*得出新的待分离数*/
value[2]=value[1]%10; /*分离出十位数*/
value[3]=value[1]/10; /*得出新的待分离数*/
value[4]=value[3]%10; /*得出百位数*/
value[5]=value[3]/10; /*得出千位数*/
printf("结果为:%dn",value[0]+value[2]+value[4]+value[5]);
}
}
#include
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; //定义了一个10个元素的数组,每个元素int类型,还定义了一个p指针.
p=a; //p指针指向数组a
printf (“%xn”,p); //输出把p的地址以十六进制显示,
printf (“%xn”,p+9);//p+9表示移动9个int类型的距离的地址之后换成十六进制显示,
}
如果你的确想打印地址,使用%p 格式就行了,默认是16进制表示,效果和%x一样,但是省去了部分操作。
若一个int类型的变量占2个字节,
第一个printf语句输出的是194,则第二个printf语句的输出结果是
这个题的意思是问你第一个元素到最后一个元素总共占了多少个字节
0x194 +2* 9=
自己算吧,懒得换算了。
194表示十六进制的数组首地址,一个Int类型占用2个字节,那么移动9个元素的距离就是2*9个字节,然后显示地址就是了。
这个深入到内存里类型的表示格式,你记住+1表示移动一个元素类型的距离就行了。
第一题:
#include "stdio.h"
void main()
{int a[10];
int i,max;
for(i=0;i
scanf("%d,",&a[i]);
max=a[0];
for(i=1;i
{
if(max
max=a[i];
}
printf("最大值为:%d",max);
}
第二题:
#include "stdio.h"
void main()
{
int i,a[10];
long int sum; /*sum 是总分*/
float average; /*平均值*/
for(i=0;i
{
printf("请输入第%d学生的成绩:",(i+1));
scanf("%d",a[i]);
printf("n");
}
for(i=0;i
sum=sum+a[i];
average=sum/10.0;
printf("10位同学的平均成绩是:%f",average);
}
第三题:
#include "stdio.h"
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10]={2,4,6,8,10,12,14,16,18,20};
int c[10];
for(i=0;i
c[i]=a[i]+b[i];
for(i=0;i
printf("%d,",c[i]);
}
第四题:
#include "stdio.h"
{
int i,a[100];
int cx;
for(i=1;i
{
a[i]=i+2;
}
scanf("输入你要查询的数值:%d",cx);
for(i=0;i
if(cx==a[i])
{
printf("第%d个数是你要查询的数值!");
break;
}
else
printf("你输入的数值不在这个数组中");
}
以上是用C语言编写程序,计算一个整数各位数字的和的详细内容。更多信息请关注PHP中文网其他相关文章!