c语言返回一个数的任意倍数,几道基础C语言题
1.遞歸求階乘
分析:n!=1*2*...*n
那么我們有兩種方法
遞歸
思路:根據階乘的規律n!=n*(n-1)!
定義函數f(x),使函數返回x*f(x-1)的值,直到n=1。經過函數調用本身求出結果。
代碼:
#include
int cnt(int n);//調用聲明函數
int main()
{
int n;
scanf("%d",&n);
printf("%d",cnt(n));
return 0;
}
int cnt(int n)//定義聲明函數
{
if(n>0)
n*=cnt(n-1);
else n=1;
return n;
}
循環
思路:由于n!=n*(n-1)*...*1,則從a=1開始,+1之后與a相乘。
代碼:
#include
int main()
{
int n;
scanf("%d",&n);
int a=1;//a要初始化為1
for(int i=1;i<=n;i++) //注意i應從1取到n,因此判斷條件為<=
a=a*i;
printf("%d",a);
return 0;
}
2.分制轉換
題目:給出一個百分制成績,要求輸出成績等級‘A’(90分及90分以上),‘B’(80到89分),’C’(70到79分),’D’(60到69分),’E’(60分以下)。
輸入格式
百分制成績,整數,例如,100,89
輸出格式
等級制成績,例如A,B,C等等
eg85 B
分析:這道題很簡單,在我復習重寫的時候發現比以前寫的簡潔了不少,因為用到了映射的思想,使分數由5類簡化為三類:100分,60到99分,60分以下。
代碼:
#include
int main()
{
int s;
scanf("%d",&s);
s/=10;//成績映射為0-10
if(s==10)//10(滿分)的情況
printf("A");
else if(s>=6)//將6到9轉換為字母等級
printf("%c",('E'-s+5));
else printf("E");//小于6(不及格)的情況
return 0;
}
3.判斷是否為素數(<1000)
分析:素數為只能被1和自己整除的數,因此我們可以通過循環,從2開始遍歷比數小的所有數。
優化:
2的倍數非素數,因此先判斷是否為2的倍數。
判斷某個數是否為因數時,可以一起決定多個數是否為因數。
比如判斷11是否為素數,要從2到9判斷,而2非因數,同時可以確定6到10也非因數,因為2乘這些數大于11,因此不可能有比2大的數與6到10相乘得11.
代碼:
#include
int main()
{
int n;
int r=1; //用r記錄是否為素數。1為素數0非素數
scanf("%d",&n);
//大于2的偶數非素數
if((n/2>1)&&(n%2==0))
r=0;
//判斷是否為素數
for(int i=3;r==1&&i*i<=n;i+=2) //更新直接+2,因到只用判斷奇數
{
if(n%i==0)
{
r=0;
break; //跳出for循環
}
}
//通過r的值(是否為素數)進行輸出
if(r==0)
printf("NO");
else
printf("YES");
return 0;
}
4.今天是第幾天
題目:輸入三個整數為年月日 ,輸出是那一年的第幾天
eg:輸入:1990 9 20 輸出:263
#include
int main()
{
int y,m,d;
scanf("%d%d%d",&y,&m,&d);
int r=d; //結果初始化為天數d
for(int i=1;i
{
switch(i)
{
case 2:
r+=28;
break;
case 4:
case 6:
case 9:
case 11:
r+=30;
break;
default://31天的月份較多放在default中
r+=31;
}
}
//判斷平年閏年,若為閏年2月有29天,再加1
if((y%400==0)||((y%4==0)&&(y%100!=0)))
r++;
printf("%d",r);
return 0;
}
5.按要求輸出
題目:寫一程序,輸入為三行,第一行為整數a、第二行為字符c、第三行為整數b。(0
輸出共四行。第一行依次輸出a,b,c,三個值之間用一個空格分隔;第二依次輸出a+b,a-b,a* b,a/b,a%b的值,每個值之間用一個空格分隔;第三行輸出a和b的比率(浮點數,精確到小數點后兩位);第四行輸出a和b的百分比率(浮點數,精確到小數點后兩位)。具體格式見輸出樣例。
輸入樣例
12
b
234
輸出樣例
12 234 b
246 -222 2808 0 12
The ratio of 12 versus 234 is 0.05.
The ratio of 12 / 234 is 5.13%.
代碼:
#include
int main()
{
//輸出控制字符:加\;輸出%:%%
long long a,b; //整型出現乘法:用lld
char c;
scanf("%lld",&a);
scanf("\n%c",&c);
//scanf:1.按格式要求。2.輸入非c時自動忽略前導空白符號,不用加\n。
//3.輸入為c時會讀入空白符號->如何解決上一行的換行符殘留:加\n或用getchar
scanf("%lld",&b);
printf("%lld %lld %c\n",a,b,c);
printf("%lld %lld %lld %lld %lld\n",a+b,a-b,a*b,a/b,a%b);
printf("The ratio of %lld versus %lld is %.2lf.\n",a,b,(double)a/b);
printf("The ratio of %lld / %lld is %.2lf%%.",a,b,100*(double)a/b);
return 0;
}
6.按要求輸出
題目:一程序,輸入依次為一個整數a、一個浮點數f、一個整數b。(-10000
總結
以上是生活随笔為你收集整理的c语言返回一个数的任意倍数,几道基础C语言题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用c语言画滚动的圆,求__C语言实现圆球
- 下一篇: c语言放空一个数组,C++语言