❶ C語言程序怎麼寫
1)第一位在最高位還是最低位?在最高位無解,在最低位的解如下——
#include"stdio.h"
intmain(intargc,char*argv[]){
inti,k;
for(i=31;i<100;i++)
if(k=i*i,k/1000+k/10%10==12&&k/100%10+k%10==10)
printf("%d",k);
printf(" ");
return0;
}
運行結果:
❷ 用C語言的遞歸解決分魚問題
下面代碼是我自己寫的,看別人代碼比較累,所以如果樓主願意,可以看看下面的代碼,我會盡量講解細致一點。
#include<stdio.h>
//sub(manth,fishleft)參數意義:manth表示第幾個人分魚,fishleft表示他分魚時獲得了多少魚
//函數的返回結果是第manth個人分魚時剩餘的條數,如manth=5,fishleft=1,則表示一共捕獲了3906條魚。
intsub(intmanth,intfishleft){
if(manth==1){
fishleft=(5*fishleft+1);
printf("manth=%d,fishleft=%d ",manth,fishleft);
returnfishleft;
}
fishleft=5*sub(--manth,fishleft)+1;
printf("manth=%d,fishleft=%d ",manth+1,fishleft);
returnfishleft;
}
intmain(void){
intmanth=5;
intfishleft=1;
printf("%d ",sub(5,1));
return0;
}
//我得到的結果和樓主所給程序運行結果不一致!樓主可以自己計算,如果最後一個人得到的是1條魚,則他分魚時應該剩餘6條,manth=2時應該剩餘6*5+1=31條,manth=3時,應該剩餘31*5+1條,最後manth=5,也就是分魚開始的時候,應該剩餘3906條魚。
//樓主可以用自己的程序測試,當調用sub(2)時得到的是21,而不是31,就能證明該程序應該是用問題的。