當前位置:首頁 » 編程語言 » c語言編程從鍵盤輸入任意個整數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編程從鍵盤輸入任意個整數

發布時間: 2022-09-09 04:55:30

Ⅰ 用c語言編寫程序從鍵盤輸入一個正整數數n,輸出n!

編程實現計算n!,也就是n*(n-1)*(n-2)*....*1,可以通過遞歸函數來實現,具體實現方法:

#include <stdio.h>

int Func(int n)
{
if(n < 2)

return 1;

else

return n*Func(n-1);

}

void main()
{
int n =0,m=0;

printf("請輸入一個正整數:")

scanf("%d",&n);

m=Func(n);

printf("%d!=%d ",n,m);
}

在以上程序代碼中,Func()為遞歸函數,主函數main()中接收鍵盤輸入整數值後,調用Func()遞歸函數,首層m=n*(n-1)!,繼續遞歸調用,m=n*(n-1)(n-2)!,這樣逐層遞歸,直到計算出N!。

程序輸出結果如下:

(1)c語言編程從鍵盤輸入任意個整數擴展閱讀:

所謂n的階乘就是從1到n的乘積,所以除了遞歸法來實現以外,其實我們也可以通過一個for循環,從1到n依次求積同樣可以達到計算n!的目地。

具體實現代碼如下:

#include <stdio.h>

int main() {
int n,i,s=1;
scanf("%d",&n);

for(i=1;i<=n;i++)//for循環求累積

s=s*i;

printf("%d ",s);

return 0;

}


/*
運行結果:(例如求5的階乘)
5
120
*/

Ⅱ c語言編程由鍵盤輸入任意一個整數,求其每位數字的平方和及平方根和。

#include
<math.h>
#include
<stdio.h>
long
main()
{
int
n;
int
ans=0;
double
ans1=0;
printf("請輸入一個整數");
scanf("%d",&n);
while(n!=0)
{
long
temp=n%10;
ans+=temp*temp;
ans1+=sqrt(temp);
n/=10;
}
printf("平方和為%d\n",ans);
printf("平方和為%f\n",ans1);
return(0);
}
已經改過可以運行,既然輸入整數,最後把n定義為整數類型,不是浮點類型。

Ⅲ C語言從鍵盤輸入任意的10個整數,從中找出最大值和最小值並輸出

1、找出最大值並輸出的源代碼如下:

#include <stdio.h>

int main() {

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

int loop, largest;

largest = array[0];

for(loop = 1; loop < 10; loop++) {

if( largest < array[loop] )

largest = array[loop];

}

printf("最大元素為 %d", largest);

return 0;

}

2、找出最小值並輸出的源代碼如下:

#include <stdio.h>

int main() {

int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};

int loop, largest;

largest = array[0];

for(loop = 1; loop < 10; loop++) {

if( largest < array[loop] )

largest = array[loop];

}

printf("最小元素為 %d", largest);

return 0;

}

(3)c語言編程從鍵盤輸入任意個整數擴展閱讀

1、#include:是包含頭文件命令,聲明在這個地方插入別的文件中的代碼。

2、#define 標識符 被標識符代表的字元串:其中,「define」為宏定義命令,「標識符」為所定義的宏名。

3、#if #else #endif:是條件編譯命令,加上符號「#」的作用是:#if是編譯器在編譯代碼時完成的,if是在程序在運行時完成的,兩者的執行時期不同。

Ⅳ 用c語言編程從鍵盤輸入任意10個正整數

定義一個變數a,接受鍵盤輸入和變數sum保存a的各位數字之和,並依次對a進行除10操作,把a除10的余數加到sum中,直到a為0為止,sum最終的值就是a個位數字之和。

#include<math.h>#include<stdio.h>intmain(){ inta,sum=0; scanf("%d",&a); while(a){ sum+=a%10; a/=10; } printf("%d ",sum); return0;}/*輸出:1234515*/

Ⅳ c語言如何實現輸入任意多個整數

用循環結構。
具體操作如下。
int a;
scanf("%d",&a);
while(a!=0)
{
scanf("%d",&a);
}

這時,你輸入任意個整數都行,兩個整數中間用任意數量空格隔開,只要最後一個整數輸入的是0就行了

Ⅵ C語言:編寫程序從鍵盤輸入不定數量的正整數

不考慮數據的存儲,直接循環累計即可。

想要數據存儲:

方法一:定義一個非常大的數組,循環輸入並檢測輸入值,累計求平均。

方法二:動態數組,根據有效輸入,實時擴展數組地址長度。

方法三:把每個數字創建成結構體,構建鏈表,實現自由擴展和刪除。

下面我的代碼是用方法二寫的:

#include <stdio.h>

#include <malloc.h>

int input(int **nsp);//輸入任意個整數,忽略負數,輸入0結束,成功返回數組長度,失敗返回-1

int main()

{

int i,len,sum=0,*nums=NULL;

len=input(&nums);

printf("輸入的正整數為: ");

for(i=0;i<len;printf("%d ",nums[i]),i++)

sum+=nums[i];

printf(" ");

printf("個數為%d,平均值為%.2f ",len,(sum*1.0)/len);

free(nums);

return 0;

}

int input(int **nsp)

{

int len=0;

int n,*nTemp=NULL,*nums=NULL;

if(*nsp) free(*nsp),nsp=NULL;

while(1)

{

scanf("%d",&n);

if(n==0) break;

if(n>0)

{

if(nums==NULL)//記錄首個數字

{

nums=(int *)malloc(sizeof(int));

if(!nums) return -1;

nums[len]=n;

len++;

}

else//非首數字,擴展內存空間

{

nTemp=realloc(nums,sizeof(int)*(len+1));

if(nTemp) nums=nTemp,nTemp=NULL;

nums[len]=n;

len++;

}

}

}

*nsp=nums;

return len;

}

Ⅶ C語言從鍵盤任意輸入一個整數n,編程計算並輸出1~n之間的所有素數之和.

#include<stdio.h>

int main()

{

int n,i,j,t,l;

int sum=0;

printf("請輸入一個大於2的整數:");

scanf("%d",&n);

l=n;

for(;n>=2;n--)

{

for(i=2;i<n;i++)

{

if(n%i!=0)//判斷其為素數

t=1;

else

{

t=2;

break;

}

}

if(t==1)

{

sum+=n;

//printf("%d ",n);//輸出1-n之間的所有素數

}

}

printf("1-%d之間的所有素數和為:%d ",l,sum);

return 0;

}

運行結果:

(7)c語言編程從鍵盤輸入任意個整數擴展閱讀:

printf()函數的調用格式為: printf("<格式化字元串>", <參量表>)。

其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出; 另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。

參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多, 各參數之間用","分開, 且順序一一對應,否則將會出現意想不到的錯誤。

比如:

inta=1234;

printf("a=%d ",a);

輸出結果為a=1234。

Ⅷ C語言編程:從鍵盤上輸入任意整數,逆序輸出其各位數字,同時求出其位數及各位數字之和。

記錄輸入內容(scanf("%d",&n);)

n%10分解出最後一位數字記錄(x = n%10)

n/10去掉最後一位(2個int型相除,結果沒有小數位)

循環執行1、2步,加入輸出(完成要求:逆序)、累和(完成要求:求和,實現:sum+=x)

直至分解出最後一位(n/10 = 0)。

(8)c語言編程從鍵盤輸入任意個整數擴展閱讀:

例如,(a+b)*(c+d)轉換為*,+,a,b,+,c,d。它的優勢在於只用兩種簡單的操作,入棧和出棧就可以解決任何中序表達式的運算。其運算方式為:如果當前字元(或字元串)為數字或變數,則壓入棧內;如果是運算符,則將棧頂兩個元素彈出棧外並作相應運算,再將結果壓入棧內。當前序表達式掃描結束時,棧里的就是中序表達式運算的最終結果。