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