這題的關鍵在於分離數字,分離方法可以用這種方法,比如,用119來實現分離,根據題目要結果為1 1 9=11對吧,我們透過這樣來分離,(1)用119 ,就是119除以10的餘數是9對吧?聰明的你現在就應該發現9被分離出來了吧(2)接著分離十位數,119/10的結果只能為整數是11對吧,再用11 ,11除以10的餘數為1對吧?是不是又把1分離出來了(3)最後就是百位數了,11/10的結果為1對吧,百位數也分開了(4)最後我們只需要吧他們相加不就完了。
分離的結束條件是當整除結果小於10時結束。
在分離過程中我們可以使用陣列來儲存分離出來的數。
具體程式碼如下:
/*方法一為遞歸方法解答,本人覺得此方法更簡單,能理解最好*/
#include
int show(int num)
{
if(num
return num;/*遞迴出口*/
else
return num show(num/10);
}
void main()
{
int num,sum;
printf("請輸入一個整數:");
scanf("%d",&num);
sum=show(num);
printf("各位數總和的結果為:%d\n",sum);
}
/*方法二用陣列做的,做法可能過於複雜,不要建議,有好的方法大家分享*/
#include
void main()
{
int 值[10];
int num;
printf("請輸入一個整數:");
scanf("%d",&num);
while(num=10000)
{
printf("此程式碼暫時只支援10000以下的4位數的計算,輸入整數無效!請重新輸入:");
scanf("%d",&num);
}
if(num>=0&num
printf("結果為:%d\n",num);
else if(num>=10&num
{
value[0]=num ;
value[1]=num/10;
printf("結果為:%d\n",value[0] value[1]);
}
else if(num>=100&num
{
value[0]=num ; /*分離個位數*/
#value[1]=num/10; /*得出新的待分離數*/
value[2]=value[1] ; /*分離出十位數*/
value[3]=value[1]/10; /*得到百位數*/
printf("結果為:%d\n",value[0] value[2] value[3]);
}
else
{
value[0]=num ; /*分離個位數*/
#value[1]=num/10; /*得出新的待分離數*/
value[2]=value[1] ; /*分離出十位數*/
value[3]=value[1]/10; /*得出新的待分離數*/
value[4]=value[3] ; /*得出百位數*/
value[5]=value[3]/10; /*得出千位數*/
printf("結果為:%d\n",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 (“%x\n”,p); //輸出把p的位址以十六進位顯示,
printf (“%x\n”,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中文網其他相關文章!