C語言經典例題(1-25)
寫在前面
你好,我是禪墨!
拖欠了很久很久的東西,如果不是有人私聊我,估計就徹底沒了。
正文開始
1.有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
#include<stdio.h>
int main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++) { // 以下爲三重循環
for(j=1;j<5;j++) {
for (k=1;k<5;k++) { // 確保i、j、k三位互不相同
if (i!=k&&i!=j&&j!=k) {
printf("%d,%d,%d\n",i,j,k);
}
}
}
}
}
#輸出
1,2,3 1,2,4 1,3,2 1,3,4 1,4,2 1,4,3
2,1,3 2,1,4 2,3,1 2,3,4 2,4,1 2,4,3
3,1,2 3,1,4 3,2,1 3,2,4 3,4,1 3,4,2
4,1,2 4,1,3 4,2,1 4,2,3 4,3,1 4,3,2
2.企業發放的獎金根據利潤提成。
- 利潤(I)低於或等於10萬元時,獎金可提10%;
- 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%;
- 20萬到40萬之間時,高於20萬元的部分,可提成5%;
- 40萬到60萬之間時高於40萬元的部分,可提成3%;
- 60萬到100萬之間時,高於60萬元的部分,可提成1.5%;
- 高於100萬元時,超過100萬元的部分按1%提成。
從鍵盤輸入當月利潤I,求應發放獎金總數?
#include<stdio.h>
int main()
{
double i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
printf("你的淨利潤是:\n");
scanf("%lf",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if(i<=100000) {
bonus=i*0.1;
} else if(i<=200000) {
bonus=bonus1+(i-100000)*0.075;
} else if(i<=400000) {
bonus=bonus2+(i-200000)*0.05;
} else if(i<=600000) {
bonus=bonus4+(i-400000)*0.03;
} else if(i<=1000000) {
bonus=bonus6+(i-600000)*0.015;
} else if(i>1000000) {
bonus=bonus10+(i-1000000)*0.01;
}
printf("提成爲:bonus=%lf",bonus);
printf("\n");
}
#輸出
你的淨利潤是:
120000
提成爲:bonus=11500.000000
3.一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
#include <stdio.h>
int main (void)
{
int i, j, m, n, x;
for (i = 1; i < 168 / 2 + 1; i++)
{
if (168 % i == 0)
{
j = 168 / i;
if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
{
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
printf ("%d + 100 = %d * %d\n", x, n, n);
printf ("%d + 268 = %d * %d\n", x, m, m);
}
}
}
return 0;
}
#輸出
-99 + 100 = 1 * 1
-99 + 268 = 13 * 13
21 + 100 = 11 * 11
21 + 268 = 17 * 17
261 + 100 = 19 * 19
261 + 268 = 23 * 23
1581 + 100 = 41 * 41
1581 + 268 = 43 * 43
4.輸入某年某月某日,判斷這一天是這一年的第幾天?
#include <stdio.h>
int main()
{
int day,month,year,sum,leap;
printf("\n請輸入年、月、日,格式爲:年,月,日(2015,12,10)\n");
scanf("%d,%d,%d",&year,&month,&day); // 格式爲:2015,12,10
switch(month) // 先計算某月以前月份的總天數
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;
}
sum=sum+day; // 再加上某天的天數
if(year%400==0||(year%4==0&&year%100!=0)) {// 判斷是不是閏年
leap=1;
} else {
leap=0;
}
if(leap==1&&month>2) { // *如果是閏年且月份大於2,總天數應該加一天
sum++;
}
printf("這是這一年的第 %d 天。",sum);
printf("\n");
}
#輸出
請輸入年、月、日,格式爲:年,月,日(2015,12,10)
2015,10,1
這是這一年的第 274 天。
5.輸入三個整數x,y,z,請把這三個數由小到大輸出。
#include <stdio.h>
int main()
{
int x,y,z,t;
printf("\n請輸入三個數字:\n");
scanf("%d%d%d",&x,&y,&z);
if (x>y) { /*交換x,y的值*/
t=x;x=y;y=t;
}
if(x>z) { /*交換x,z的值*/
t=z;z=x;x=t;
}
if(y>z) { /*交換z,y的值*/
t=y;y=z;z=t;
}
printf("從小到大排序: %d %d %d\n",x,y,z);
}
#輸出
請輸入三個數字:
1
3
2
從小到大排序: 1 2 3
6.用*號輸出字母C的圖案。
#include "stdio.h"
int main()
{
printf("用 * 號輸出字母 C!\n");
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
}
#輸出
用 * 號輸出字母 C!
****
*
*
****
7.輸出特殊圖案X,請在c環境中運行,看一看,Very Beautiful!
#include<stdio.h>
int main()
{
char a=176,b=219;
printf("%c%c%c%c%c\n",b,a,a,a,b);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",a,a,b,a,a);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",b,a,a,a,b);
return 0;
}
8.輸出9*9口訣。
#include<stdio.h>
int main()
{
int i,j,result;
printf("\n");
for (i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result); /*-3d表示左對齊,佔3位*/
}
printf("\n"); /*每一行後換行*/
}
}
9.要求輸出國際象棋棋盤。
#include<stdio.h>
int main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((i+j)%2==0)
printf("%c%c",219,219);
else printf(" ");
printf("\n");
}
return 0;
}
10.打印樓梯,同時在樓梯上方打印兩個笑臉。
#include<stdio.h>
int main()
{
int i,j;
printf("\1\1\n"); /*輸出兩個笑臉*/
for(i=1;i<11;i++)
{
for(j=1;j<=i;j++)
printf("%c%c",219,219);
printf("\n");
}
return 0;
}
11.古典問題(兔子生崽):有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數爲多少?(輸出前40個月即可)
#include<stdio.h>
int main()
{
int f1=1,f2=1,i;
for(i=1;i<=20;i++)
{
printf("%12d%12d",f1,f2);
if(i%2==0) printf("\n");
f1=f1+f2;
f2=f1+f2;
}
return 0;
}
12.判斷101到200之間的素數。
#include <stdio.h>
int main()
{
int i,j;
int count=0;
for (i=101; i<=200; i++)
{
for (j=2; j<i; j++)
{
// 如果j能被i整除在跳出循環
if (i%j==0)
break;
}
// 判斷循環是否提前跳出,如果j<i說明在2~j之間,i有可整除的數
if (j>=i)
{
count++;
printf("%d ",i);
// 換行,用count計數,每五個數換行
if (count % 5 == 0)
printf("\n");
}
}
return 0;
}
13.打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數 本身。例如:153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。
#include<stdio.h>
int main()
{
int i,x,y,z;
for(i=100;i<1000;i++)
{
x=i%10;
y=i/10%10;
z=i/100%10;
if(i==(x*x*x+y*y*y+z*z*z))
printf("%d\n",i);
}
return 0;
}
14.利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
#include<stdio.h>
int main()
{
int score;
char grade;
printf("請輸入分數: ");
scanf("%d",&score);
grade=(score>=90)?'A':((score>=60)?'B':'C');
printf("%c\n",grade);
return 0;
}
15.輸入兩個正整數m和n,求其最大公約數和最小公倍數。
#include<stdio.h>
int main()
{
int a,b,t,r,n;
printf("請輸入兩個數字:\n");
scanf("%d %d",&a,&b);
if(a<b)
{t=b;b=a;a=t;}
r=a%b;
n=a*b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("這兩個數的最大公約數是%d,最小公倍數是%d\n",b,n/b);
return 0;
}
16.將一個正整數分解質因數。例如:輸入90,打印出90=233*5。
#include<stdio.h>
int main()
{
int n,i;
printf("請輸入整數:");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n%i==0)
{
printf("%d",i);
n/=i;
if(n!=1) printf("*");
}
}
printf("\n");
return 0;
}
17.輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
#include<stdio.h>
int main()
{
char c;
int letters=0,spaces=0,digits=0,others=0;
printf("請輸入一些字母:\n");
while((c=getchar())!='\n')
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letters++;
else if(c>='0'&&c<='9')
digits++;
else if(c==' ')
spaces++;
else
others++;
}
printf("字母=%d,數字=%d,空格=%d,其他=%d\n",letters,digits,spaces,others);
return 0;
}
18.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。
#include<stdio.h>
int main()
{
int s=0,a,n,t;
printf("請輸入 a 和 n:\n");
scanf("%d%d",&a,&n);
t=a;
while(n>0)
{
s+=t;
a=a*10;
t+=a;
n--;
}
printf("a+aa+...=%d\n",s);
return 0;
}
19.一個數如果恰好等於它的因子之和,這個數就稱爲"完數"。例如6=1+2+3.編程找出1000以內的所有完數。
#include<stdio.h>
#define N 1000
int main()
{
int i,j,k,n,sum;
int a[256];
for(i=2;i<=N;i++)
{
sum=a[0]=1;
k=0;
for(j=2;j<=(i/2);j++)
{
if(i%j==0)
{
sum+=j;
a[++k]=j;
}
}
if(i==sum)
{
printf("%d=%d",i,a[0]);
for(n=1;n<=k;n++)
printf("+%d",a[n]);
printf("\n");
}
}
return 0;
}
20.一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
#include<stdio.h>
int main()
{
float h,s;
h=s=100;
h=h/2; //第一次反彈高度
for(int i=2;i<=10;i++)
{
s=s+2*h;
h=h/2;
}
printf("第10次落地時,共經過%f米,第10次反彈高%f米\n",s,h);
return 0;
}
21.猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
#include <stdio.h>
#include <stdlib.h>
int main(){
int day, x1 = 0, x2;
day=9;
x2=1;
while(day>0) {
x1=(x2+1)*2; // 第一天的桃子數是第2天桃子數加1後的2倍
x2=x1;
day--;
}
printf("總數爲 %d\n",x1);
return 0;
}
22.兩個乒乓球隊進行比賽,各出三人。甲隊爲a,b,c三人,乙隊爲x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char i,j,k;
for(i='x';i<='z';i++) {
for(j='x';j<='z';j++) {
if(i!=j) {
for(k='x';k<='z';k++) {
if(i!=k&&j!=k) {
if(i!='x'&&k!='x'&&k!='z') {
printf("順序爲:a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
}
}
}
}
23.打印出如下圖案(菱形)。
#include <stdio.h>
int main()
{
int i,j,k;
for(i=0;i<=3;i++) {
for(j=0;j<=2-i;j++) {
printf(" ");
}
for(k=0;k<=2*i;k++) {
printf("*");
}
printf("\n");
}
for(i=0;i<=2;i++) {
for(j=0;j<=i;j++) {
printf(" ");
}
for(k=0;k<=4-2*i;k++) {
printf("*");
}
printf("\n");
}
}
24.有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。
#include <stdio.h>
int main()
{
int i,t;
float sum=0;
float a=2,b=1;
for(i=1;i<=20;i++)
{
sum=sum+a/b;
t=a;
a=a+b;
b=t;
}
printf("%9.6f\n",sum);
}
25.求1+2!+3!+…+20!的和。
#include <stdio.h>
int main()
{
int i;
long double sum,mix;
sum=0,mix=1;
for(i=1;i<=20;i++)
{
mix=mix*i;
sum=sum+mix;
}
printf("%Lf\n",sum);
}
寫在後面
哈哈哈,今天沒有過多文案!
printf("\n");
}
}
24.有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
```c
#include <stdio.h>
int main()
{
int i,t;
float sum=0;
float a=2,b=1;
for(i=1;i<=20;i++)
{
sum=sum+a/b;
t=a;
a=a+b;
b=t;
}
printf("%9.6f\n",sum);
}
25.求1+2!+3!+…+20!的和。
#include <stdio.h>
int main()
{
int i;
long double sum,mix;
sum=0,mix=1;
for(i=1;i<=20;i++)
{
mix=mix*i;
sum=sum+mix;
}
printf("%Lf\n",sum);
}
寫在後面
哈哈哈,今天沒有過多文案!
歡迎關注禪墨雲!歡迎評論交流!
undefined