① 如何用c語言輸出一個不多於5位的正整數的每一位數字
1。位操作法:
這個方法優點是空間量較小計算更大的整數時不會崩潰,大致思路是:先在宏定義中,將二進制的BCD碼設置成相應的整數值,主程序中要設置一個接受數符的字元串,設置一個掩碼MASK=1;由於正整數N在計算機中是二進製表示的,故對N進行一次N&=MASK操作可以得到N的最後一位,並且用一個循環把相應的位儲存在接受數符的字元串中,然後對N進行>>運算,再進行同樣的操作得到第二位,依次類推直到得到N的每一位,最後用PRINTF輸出,這個方法相對來說比較好點。
2。遞歸函數法:
遞歸函數應該有一個基本值和一個靠近該基本值的函數遞推結構,在這個問題中,當數字在0——9時,很容易的可以看出這些數字是0——9,可是當這些數字是兩位數時,第一位是對10的取余操作,第二位便是先把該數除十後再對10的取余操作,我們需要用一個逆序對其進行輸出,故每次進行s=N%10 N=N/10 調用函數本身的操作 PR(s);當然這個進行的條件是N不是一個個位數,故需要加上一個if(N>=10)的條件,這樣當許多次遞歸直到最後N<10時,函數會從最里一層的函數回到遞歸函數的開始處,並且同時每次處理掉每次遞歸沒有處理完的PR列印輸出項,即會按順序打出正整數的各位數字,但是由於每次遞歸,都會分配新的存儲空間,故佔用空間損耗大,數字一大便很難保正程序的正常了,故不推薦這個方法:
3.譚浩強特別法:
先來個if把這個數分成1位數,兩位數,三位數,四位數,五位數的情況,然後對每個種情況相應處理,比如這個數是五位數,就設置數符A=N\10000,B=N\1000...等等,把這五個數符弄出來列印,其他情況同樣處理。。。。不過這個方法很笨拙。。並且不適於N十分大的情況,且程序代碼是一堆廢話,頂多就是個玩具程序,不推薦用此種方法。
② c語言程序編寫:要求從鍵盤上輸入一個不多於5位數的正整數,依次輸出每一位數字
#include <stdio.h>
void main()
{
int n;
scanf("%d",&n);
if(n/100000)
printf("應輸入一個不多於5位數的正整數! ");
else
{
printf("%d",n%10);
n/=10;
while(n)
{
printf(",%d",n%10);
n/=10;
}
}
}
③ c語言 給一個不多於5位的正整數 用C語言寫出
第一種方法代碼:
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,d;
int count = 1;
printf("請輸入一個不多於5位的正整數:");
scanf("%d",&a);
c = a;
printf("逆序: ");
while(c / 10 != 0)
{
count++;
b = c % 10;
printf("%d ",b);
c = c / 10;
}
b = c % 10;
printf("%d ",b);
printf("位數是:%d ",count);
printf("順序: ");
while(a % 10 != 0)
{
d = a / (int)pow(10,(count-1));
printf("%d ",d);
a = a % (int)pow(10,count-1);
count--;
}
return 0;
}
(3)c語言怎麼表示不能超過五位數擴展閱讀:
輸入一個不多於5位的正整數,編程實現以下功能:
(1)判斷它是幾位數
(2)分別列印每一位數字
(3)按逆序輸出各位數字
(4)例如:輸入2345
(5)則輸出:2 3 4 5
5 4 3 2
編程思路:
首先用if語句判斷輸入的數是幾位數,然後分別求出每位上的數字並列印,最後將求出來的每位上的數字反序輸出。
程序相關知識點:
選擇結構中的if語句、switch語句,循環結構中的while語句、for語句。
④ C語言編程:輸入一個不超過5位的正整數,
#include<stdio.h>
void main()
{
int n,i,a[10];
printf("請輸入一個不超過5位的正整數:\n");
scanf("%d",&n);
int sum=0;
for(i=0;;i++)
{
a[i]=n%10;/*取餘存於a[i]中*/
n=n/10;
sum++;/*位數加一*/
if(n==0) break;
}
printf("它是%d位數\n",sum);
int j;
printf("它的每一位是:");
for(j=i;j>=0;j--)/*此時i的值是上個循環的值*/
printf("%d ",a[j]);
printf("\n");
printf("逆序輸出每一位:");
for(j=0;j<=i;j++)
printf("%d ",a[j]);
}
⑤ c語言編程:給一個不多於五位的正整數,用if-else語句求出它是幾位數
可以參考下面的代碼:
#include <stdio.h>
void main()
{ intnum; printf("請輸入一個不大於5位數的正整數:");
scanf("%d",&num);
if(num>99999||num<1)
printf("您的輸入有誤! ");
else { if(num<10)
printf("您輸入的是1位數! ");
else if(num<100)
printf("您輸入的是2位數! ");
else if(num<1000)
printf("您輸入的是3位數! ");
else if(num<10000) printf("您輸入的是4位數! ");
else printf("您輸入的是5位數! "); } }
(5)c語言怎麼表示不能超過五位數擴展閱讀:
if語句的一般形式如下:
if(表達式)語句1
[else語句2]
if語句中的「表達式」可以是關系表達式、邏輯表達式,甚至是數值表達式。其中最直觀、最容易理解的是關系表達式。所謂關系表達式就是兩個數值進行比較的式子
if 語句的執行流程:首先判斷關鍵詞 if 後括弧內條件表達式的值,如果該表達式的值為邏輯真(非 0),則執行 if 體,接著執行 if 體後的其他語句;否則,若該表達式的值為邏輯假(0),則不執行該 if 體,直接執行 if 體後的其他語句。
⑥ 用C語言編程:給一個不多於5位的正整數,要求如下:
不對的原因,主要是if條件語句應該是用「==」而不是「=」,這是判斷,不是賦值。其它的錯誤,scanf_s("%d",&a)改成scanf("%d",&a),printf用錯了,printf列印應該是一個佔位符對應一個要輸出的內容,就是你代碼中%d對應一個輸出。
修改後的代碼:
#include<stdio.h>
int main()
{
int a, b, c, d, e, f, w;
printf("輸入一個不多於五位的整數:");
scanf("%d",&a);
//第一問,求出它是幾位數
b = 10000 - a;
c = 1000 - a;
d = 100 - a;
e = 10 - a;
f = 0 - a;
while (a < 0 || a > 99999)
printf("輸入錯誤,請重新輸入 ");
if (b < 0)
{
printf("a是五位數 ");
w = 5;
}else if (c < 0){
printf("a是四位數 ");
w = 4;
}else if (d < 0){
printf("a是三位數 ");
w = 3;
}else if (e < 0){
printf("a是兩位數 ");
w = 2;
}else if (f < 0){
printf("a是個位數 ");
w = 1;
}else
printf("輸入錯誤,請重新輸入 ");
//第二問,分別輸出每一位數字
if (w == 5)
printf("%d %d %d %d %d ", a / 10000, a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10);
if (w == 4)
printf("%d %d %d %d ", a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10);
if (w == 3)
printf("%d %d %d ", a / 100 % 10, a / 10 % 10, a % 10);
if (w == 2)
printf("%d %d ", a / 10 % 10, a % 10);
if (w == 1)
printf("%d ", a % 10);
//第三問,按逆序輸出各位數字
if (w == 5)
printf("%d %d %d %d %d ", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10, a / 10000);
if (w == 4)
printf("%d %d %d %d ", a % 10, a / 10 % 10, a / 100 % 10, a / 1000 % 10);
if (w == 3)
printf("%d %d %d ", a % 10, a / 10 % 10, a / 100 % 10);
if (w == 2)
printf("%d %d ", a % 10, a / 10 % 10);
if (w == 1)
printf("%d ", a % 10);
}
修正後的代碼執行如下:
⑦ 用C語言編程:給一個不多於5位的正整數,要求循環嵌套實現
用一個單純的循環就可以實現這樣的功能了。下面是實現的程序源代碼。
#include<studio.h>
int main()
{int x,x1,x2=0,n=0;
scanf(「%d」,&x);
for(x1=x;x;x/=10)
{x2=x2*10+x%10;
n++;
}
printf(「%d是一個%d位數,反過來是%d\n",x1,n,x2);
return 0;
}
⑧ C語言,求一個不大於五位數的數字個位數字和能不能被五整除
演算法非常簡單,讀取數字,求得各位數之和,判斷是否能被5整除。
常式:
#include<stdio.h>
inta,val,sum=0;
intmain(){
printf("輸入一個不多於五位數的整數:");
scanf("%d",&val);
for(a=val;0<a;a/=10)
sum+=a%10;//求各位之和
printf("%d各位數字之和%s可以被5整除",val,((sum%5)?"不":""));
return0;
}
⑨ 用C語言編程:給出一個不多於5位的正整數,判斷它是幾位數
思路是:①判斷這個數是否小於10000並且大於0(檢查輸入的正確性)②假設輸入數字是a,判斷a是否等於1000、100、10。③判斷a%1000是否大於0,如果是,則這個數是四位數,如果不是,判斷a%100是否大於0,如果是,則這個數是三位數,判斷a%10是否大於0,如果是,則這個數是兩位數,如果以上情況都不是,就是一位數。
注釋:a%1000的結果表示a除以1000後的余數(小學數學里的除法余數概念),如果大於0,說明有餘數,說明a至少大於1000.如果等於0,說明a小於或等於1000
⑩ c語言編程:給一個不多於五位的正整數,用if-else語句求出它是幾位數
#include
int
main()
{
int
count;
printf("Please
input
a
number:");
scanf("%ld",&count);
if(count>=10000&&count<=99999)
printf("這是個5位數!");
else
if(count>=1000&&count<=9999)
printf("這是個4位數!");
else
if(count>=100&&count<=999)
printf("這是個3位數!");
else
if(count>=10&&count<=99)
printf("這是個2位數!");
else
if(count>=0&&count<=9)
printf("這是個1位數!");
else
printf("不在范圍內!");
return
0;
}