C說話法式設計50例(經典珍藏)。本站提示廣大學習愛好者:(C說話法式設計50例(經典珍藏))文章只能為提供參考,不一定能成為您想要的結果。以下是C說話法式設計50例(經典珍藏)正文
【法式1】
標題:有1、2、3、4個數字,能構成若干個互不雷同且無反復數字的三位數?都是若干?
1.法式剖析:可填在百位、十位、個位的數字都是1、2、3、4。構成一切的分列後再去
失落不知足前提的分列。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
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++)
{
if (i!=k&&i!=j&&j!=k) /*確保i、j、k三位互不雷同*/
printf("%d,%d,%d\n",i,j,k);
}
getch();
}
==============================================================
【法式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,求應發放獎金總數?
1.法式剖析:請應用數軸來分界,定位。留意界說時需把獎金界說生長整型。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0. 1;
bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
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
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
getch();
}
==============================================================
【法式3】
標題:一個整數,它加上100後是一個完整平方數,再加上168又是一個完整平方數,請問該數是若干?
1.法式剖析:在10萬之內斷定,先將該數加上100後再開方,再將該數加上268後再開方,假如開方後
的成果知足以下前提,等於成果。請看詳細剖析:
2.法式源代碼:
#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{
x=sqrt(i+100); /*x為加上100後開方後的成果*/
y=sqrt(i+268); /*y為再加上168後開方後的成果*/
if(x*x==i+100&&y*y==i+268) /*假如一個數的平方根的平方等於該數,這解釋此數是完整平方數*/
printf("\n%ld\n",i);
}
getch();
}
==============================================================
【法式4】
標題:輸出某年某月某日,斷定這一天是這一年的第幾天?
1.法式剖析:以3月5日為例,應當先把前兩個月的加起來,然後再加上5天即今年的第幾天,特別
情形,閏年且輸出月份年夜於3時需斟酌多加一天。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
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("It is the %dth day.",sum);
getch();
}
==============================================================
【法式5】
標題:輸出三個整數x,y,z,請把這三個數由小到年夜輸入。
1.法式剖析:我們想方法把最小的數放到x上,先將x與y停止比擬,假如x>y則將x與y的值停止交流,
然後再用x與z停止比擬,假如x>z則將x與z的值停止交流,如許能使x最小。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交流x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交流x,z的值*/
if(y>z)
{t=y;y=z;z=t;} /*交流z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
getch();
}
==============================================================
【法式6】
標題:用*號輸入字母C的圖案。
1.法式剖析:可先用'*'號在紙上寫出字母C,再分行輸入。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
printf("Hello C-world!\n");
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
getch();
}
==============================================================
【法式7】
標題:輸入特別圖案,請在c情況中運轉,看一看,Very Beautiful!
1.法式剖析:字符共有256個。分歧字符,圖形紛歧樣。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
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);
getch();
}
==============================================================
【法式8】
標題:輸入9*9口訣。
1.法式剖析:分行與列斟酌,共9行9列,i掌握行,j掌握列。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,result;
printf("\n");
for (i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result); /*-3d表現左對齊,占3位*/
}
printf("\n"); /*每行後換行*/
}
getch();
}
==============================================================
【法式9】
標題:請求輸入國際象棋棋盤。
1.法式剖析:用i掌握行,j來掌握列,依據i+j的和的變更來掌握輸入黑方格,照樣白方格。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
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");
}
getch();
}
==============================================================
【法式10】
標題:打印樓梯,同時在樓梯上方打印兩個笑容。
1.法式剖析:用i掌握行,j來掌握列,j依據i的變更來掌握輸入黑方格的個數。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
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");
}
getch();
}
【法式11】
標題:古典成績:有一對兔子,從出身後第3個月起每一個月都生一對兔子,小兔子長到第三個月
後每一個月又生一對兔子,假設兔子都不逝世,問每一個月的兔子總數為若干?
1.法式剖析: 兔子的紀律為數列1,1,2,3,5,8,13,21....
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=20;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n"); /*掌握輸入,每行四個*/
f1=f1+f2; /*前兩個月加起來賦值給第三個月*/
f2=f1+f2; /*前兩個月加起來賦值給第三個月*/
}
getch();
}
==============================================================
【法式12】
標題:斷定101-200之間有若干個素數,並輸入一切素數。
1.法式剖析:斷定素數的辦法:用一個數分離去除2到sqrt(這個數),假如能被整除,
則注解此數不是素數,反之是素數。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
#include "math.h"
main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{
k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{
leap=0;
break;
}
if(leap)
{
printf("%-4d",m);
h++;
if(h%10==0)
printf("\n");
}
leap=1;
}
printf("\nThe total is %d",h);
getch();
}
==============================================================
【法式13】
標題:打印出一切的“水仙花數”,所謂“水仙花數”是指一個三位數,其列位數字立方和等於該數
自己。例如:153是一個“水仙花數”,由於153=1的三次方+5的三次方+3的三次方。
1.法式剖析:應用for輪回掌握100-999個數,每一個數分化出個位,十位,百位。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分化出百位*/
j=n/10%10;/*分化出十位*/
k=n%10;/*分化出個位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%-5d",n);
}
getch();
}
==============================================================
【法式14】
標題:將一個正整數分化質因數。例如:輸出90,打印出90=2*3*3*5。
法式剖析:對n停止分化質因數,應先找到一個最小的質數k,然後按下述步調完成:
(1)假如這個質數恰等於n,則解釋分化質因數的進程曾經停止,打印出便可。
(2)假如n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作為新的正整數你n,
反復履行第一步。
(3)假如n不克不及被k整除,則用k+1作為k的值,反復履行第一步。
2.法式源代碼:
/* zheng int is divided yinshu*/
#include "stdio.h"
#include "conio.h"
main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
while(n!=i)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
break;
}
printf("%d",n);
getch();
}
==============================================================
【法式15】
標題:應用前提運算符的嵌套來完成此題:進修成就>=90分的同窗用A表現,60-89分之間的用B表現,
60分以下的用C表現。
1.法式剖析:(a>b)?a:b這是前提運算符的根本例子。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int score;
char grade;
printf("please input a score\n");
scanf("%d",&score);
grade=score>=90?'A':(score>=60?'B':'C');
printf("%d belongs to %c",score,grade);
getch();
}
==============================================================
【法式16】
標題:輸出兩個正整數m和n,求其最年夜條約數和最小公倍數。
1.法式剖析:應用輾除法。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)/*交流兩個數,使年夜數放在num1上*/
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*應用輾除法,直到b為0為止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
getch();
}
==============================================================
【法式17】
標題:輸出一行字符,分離統計出個中英文字母、空格、數字和其它字符的個數。
1.法式剖析:應用while語句,前提為輸出的字符不為'\n'.
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,
space,digit,others);
getch();
}
==============================================================
【法式18】
標題:求s=a+aa+aaa+aaaa+aa...a的值,個中a是一個數字。例如2+22+222+2222+22222(此時
共有5個數相加),幾個數相加有鍵盤掌握。
1.法式剖析:症結是盤算出每項的值。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int a,n,count=1;
long int sn=0,tn=0;
printf("please input a and n\n");
scanf("%d,%d",&a,&n);
printf("a=%d,n=%d\n",a,n);
while(count<=n)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
++count;
}
printf("a+aa+...=%ld\n",sn);
getch();
}
==============================================================
【法式19】
標題:一個數假如正好等於它的因子之和,這個數就稱為“完數”。例如6=1+2+3.編程
找出1000之內的一切完數。
1. 法式剖析:請參照法式<--上頁法式14.
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
static int k[10];
int i,j,n,s;
for(j=2;j<1000;j++)
{
n=-1;
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
n++;
s=s-i;
k[n]=i;
}
}
if(s==0)
{
printf("%d is a wanshu",j);
for(i=0;i<n;i++)
printf("%d,",k);
printf("%d\n",k[n]);
}
}
getch();
}
==============================================================
【法式20】
標題:一球從100米高度自在落下,每次落地後反跳回原高度的一半;再落下,求它在
第10次落地時,共經由若干米?第10次反彈多高?
1.法式剖析:見上面正文
2.法式源代碼:
#include "stdio.h"
#include "stdio.h"
main()
{
float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地時共經由的米數*/
hn=hn/2; /*第n次反跳高度*/
}
printf("the total of road is %f\n",sn);
printf("the tenth is %f meter\n",hn);
getch();
}
【法式21】
標題:山公吃桃成績:山公第一天摘下若干個桃子,立即吃了一半,還不瘾,又多吃了一個
第二天早上又將剩下的桃子吃失落一半,又多吃了一個。今後天天早上都吃了前一天剩下
的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了若干。
1.法式剖析:采用逆向思想的辦法,從後往前揣摸。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
getch();
}
==============================================================
【法式22】
標題:兩個乒乓球隊停止競賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決議
競賽名單。有人向隊員探聽競賽的名單。a說他和睦x比,c說他和睦x,z比,請編法式找出
三隊賽手的名單。
1.法式剖析:斷定素數的辦法:用一個數分離去除2到sqrt(這個數),假如能被整除,
則注解此數不是素數,反之是素數。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
char i,j,k;/*i是a的敵手,j是b的敵手,k是c的敵手*/
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("order is a--%c\tb--%c\tc--%c\n",i,j,k);
}
}
}
getch();
}
==============================================================
【法式23】
標題:打印出以下圖案(菱形)
*
***
*****
*******
*****
***
*
1.法式剖析:先把圖形分紅兩部門來對待,前四行一個紀律,後三行一個紀律,應用兩重
for輪回,第一層掌握行,第二層掌握列。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
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");
}
getch();
}
==============================================================
【法式24】
標題:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
1.法式剖析:請捉住份子與分母的變更紀律。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;/*這部門是法式的症結,請讀者猜猜t的感化*/
}
printf("sum is %9.6f\n",s);
getch();
}
==============================================================
【法式25】
標題:求1+2!+3!+...+20!的和
1.法式剖析:此法式只是把累加釀成了累乘。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!+3!...+20!=%e\n",s);
getch();
}
==============================================================
【法式26】
標題:應用遞歸辦法求5!。
1.法式剖析:遞歸公式:fn=fn_1*4!
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int i;
int fact();
for(i=0;i<5;i++)
printf("\40:%d!=%d\n",i,fact(i));
getch();
}
int fact(j)
int j;
{
int sum;
if(j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
==============================================================
【法式27】
標題:應用遞歸函數挪用方法,將所輸出的5個字符,以相反次序打印出來。
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
getch();
}
void palin(n)
int n;
{
char next;
if(n<=1)
{
next=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
==============================================================
【法式28】
標題:有5小我坐在一路,問第五小我若干歲?他說比第4小我年夜2歲。問第4小我歲數,他說比第
3小我年夜2歲。問第三小我,又說比第2人年夜兩歲。問第2小我,說比第一小我年夜兩歲。最初
問第一小我,他說是10歲。請問第五小我多年夜?
1.法式剖析:應用遞歸的辦法,遞歸分為回推和遞推兩個階段。要想曉得第五小我歲數,需曉得
第四人的歲數,順次類推,推到第一人(10歲),再往回推。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
age(n)
int n;
{
int c;
if(n==1) c=10;
else c=age(n-1)+2;
return(c);
}
main()
{
printf("%d",age(5));
getch();
}
==============================================================
【法式29】
標題:給一個不多於5位的正整數,請求:1、求它是幾位數,2、逆序打印出列位數字。
1. 法式剖析:學會分化出每位數,以下說明:(這裡是一種簡略的算法,師專數002班趙鑫供給)
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分化出萬位*/
b=x%10000/1000;/*分化出千位*/
c=x%1000/100;/*分化出百位*/
d=x%100/10;/*分化出十位*/
e=x%10;/*分化出個位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) printf(" there are 1,%ld\n",e);
getch();
}
==============================================================
【法式30】
標題:一個5位數,斷定它是否是回文數。即12321是回文數,個位與萬位雷同,十位與千位雷同。
1.法式剖析:同29例
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main( )
{
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*個位等於萬位而且十位等於千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
getch();
}
【法式31】
標題:請輸出禮拜幾的第一個字母來斷定一下是禮拜幾,假如第一個字母一樣,則持續
斷定第二個字母。
1.法式剖析:用情形語句比擬好,假如第一個字母一樣,則斷定用情形語句或if語句斷定第二個字母。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
void main()
{
char letter;
printf("please input the first letter of someday\n");
while((letter=getch())!='Y')/*當所按字母為Y時才停止*/
{
switch (letter)
{
case 'S':printf("please input second letter\n");
if((letter=getch())=='a')
printf("saturday\n");
else if ((letter=getch())=='u')
printf("sunday\n");
else printf("data error\n");
break;
case 'F':printf("friday\n");break;
case 'M':printf("monday\n");break;
case 'T':printf("please input second letter\n");
if((letter=getch())=='u')
printf("tuesday\n");
else if ((letter=getch())=='h')
printf("thursday\n");
else printf("data error\n");
break;
case 'W':printf("wednesday\n");break;
default: printf("data error\n");
}
}
getch();
}
==============================================================
【法式32】
標題:Press any key to change color, do you want to try it. Please hurry up!
1.法式剖析:
2.法式源代碼:
#include "conio.h"
#include "stdio.h"
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*設置文本的配景色彩*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();/*輸出字符看不見*/
}
}
==============================================================
【法式33】
標題:進修gotoxy()與clrscr()函數
1.法式剖析:
2.法式源代碼:
#include "conio.h"
#include "stdio.h"
void main(void)
{
clrscr();/*清屏函數*/
textbackground(2);
gotoxy(1, 5);/*定位函數*/
cprintf("Output at row 5 column 1\n");
textbackground(3);
gotoxy(20, 10);
cprintf("Output at row 10 column 20\n");
getch();
}
==============================================================
【法式34】
標題:演習函數挪用
1. 法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
void hello_world(void)
{
printf("Hello, world!\n");
}
void three_hellos(void)
{
int counter;
for (counter = 1; counter <= 3; counter++)
hello_world();/*挪用此函數*/
}
void main(void)
{
three_hellos();/*挪用此函數*/
getch();
}
==============================================================
【法式35】
標題:文本色彩設置
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
void main(void)
{
int color;
for (color = 1; color < 16; color++)
{
textcolor(color);/*設置文本色彩*/
cprintf("This is color %d\r\n", color);
}
textcolor(128 + 15);
cprintf("This is blinking\r\n");
getch();
}
==============================================================
【法式36】
標題:求100以內的素數
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "math.h"
#define N 101
main()
{
int i,j,line,a[N];
for(i=2;i<N;i++) a=i;
for(i=2;i<sqrt(N);i++)
for(j=i+1;j<N;j++)
{
if(a!=0&&a[j]!=0)
if(a[j]%a==0)
a[j]=0;
}
printf("\n");
for(i=2,line=0;i<N;i++)
{
if(a!=0)
{
printf("%5d",a);
line++;
}
if(line==10)
{
printf("\n");
line=0;
}
}
getch();
}
==============================================================
【法式37】
標題:對10個數停止排序
1.法式剖析:可以應用選擇法,即從後9個比擬進程中,選擇一個最小的與第一個元故舊換,
下次類推,即用第二個元素與後8個停止比擬,並停止交流。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
#define N 10
main()
{
int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a);
}
printf("\n");
for(i=0;i<N;i++)
printf("%5d",a);
printf("\n");
/*sort ten num*/
for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j])
min=j;
tem=a;
a=a[min];
a[min]=tem;
}
/*output data*/
printf("After sorted \n");
for(i=0;i<N;i++)
printf("%5d",a);
getch();
}
==============================================================
【法式38】
標題:求一個3*3矩陣對角線元素之和
1.法式剖析:應用兩重for輪回掌握輸出二維數組,再將a累加後輸入。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
/* 假如應用的是TC系列編譯器則能夠須要添加下句 */
static void dummyfloat(float *x){ float y; dummyfloat(&y);}
main()
{
float a[3][3],sum=0;
int i,j;
printf("please input rectangle element:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&a[j]);
for(i=0;i<3;i++)
sum=sum+a;
printf("duijiaoxian he is %6.2f",sum);
getch();
}
==============================================================
【法式39】
標題:有一個曾經排好序的數組。現輸出一個數,請求按本來的紀律將它拔出數組中。
1. 法式剖析:起首斷定此數能否年夜於最初一個數,然後再斟酌拔出中央的數的情形,拔出後
此元素以後的數,順次後移一個地位。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("%5d",a);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{
for(i=0;i<10;i++)
{
if(a>number)
{
temp1=a;
a=number;
for(j=i+1;j<11;j++)
{
temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("%6d",a);
getch();
}
==============================================================
【法式40】
標題:將一個數組逆序輸入。
1.法式剖析:用第一個與最初一個交流。
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
#define N 5
main()
{
int a[N]={9,6,5,4,1},i,temp;
printf("\n original array:\n");
for(i=0;i<N;i++)
printf("%4d",a);
for(i=0;i<N/2;i++)
{
temp=a;
a=a[N-i-1];
a[N-i-1]=temp;
}
printf("\n sorted array:\n");
for(i=0;i<N;i++)
printf("%4d",a);
getch();
}
==============================================================
【法式41】
標題:進修static界說靜態變量的用法
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
varfunc()
{
int var=0;
static int static_var=0;
printf("\40:var equal %d \n",var);
printf("\40:static var equal %d \n",static_var);
printf("\n");
var++;
static_var++;
}
void main()
{
int i;
for(i=0;i<3;i++)
varfunc();
getch();
}
==============================================================
【法式42】
標題:進修應用auto界說變量的用法
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num);
num++;
{
auto int num=1;
printf("\40: The internal block num equal %d \n",num);
num++;
}
}
getch();
}
==============================================================
【法式43】
標題:進修應用static的另外一用法。
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num);
num++;
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
}
getch();
}
==============================================================
【法式44】
標題:進修應用external的用法。
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
int a,b,c;
void add()
{
int a;
a=3;
c=a+b;
}
void main()
{
a=b=4;
add();
printf("The value of c is equal to %d\n",c);
getch();
}
==============================================================
【法式45】
標題:進修應用register界說變量的辦法。
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
void main()
{
register int i;
int tmp=0;
for(i=1;i<=100;i++)
tmp+=i;
printf("The sum is %d\n",tmp);
getch();
}
==============================================================
【法式46】
標題:宏#define敕令演習(1)
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
void main()
{
int num;
int again=1;
printf("\40: Program will stop if input value less than 50.\n");
while(again)
{
printf("\40:Please input number==>");
scanf("%d",&num);
printf("\40:The square for this number is %d \n",SQ(num));
if(num>=50)
again=TRUE;
else
again=FALSE;
}
getch();
}
==============================================================
【法式47】
標題:宏#define敕令演習(2)
1.法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
/*宏界說中許可包括兩道衣裳敕令的情況,此時必需在最左邊加上"\"*/
#define exchange(a,b) { \
int t;\
t=a;\
a=b;\
b=t;\
}
void main(void)
{
int x=10;
int y=20;
printf("x=%d; y=%d\n",x,y);
exchange(x,y);
printf("x=%d; y=%d\n",x,y);
getch();
}
==============================================================
【法式48】
標題:宏#define敕令演習(3)
1.法式剖析:
2.法式源代碼:
#define LAG >
#define SMA <
#define EQ ==
#include "stdio.h"
#include "conio.h"
void main()
{
int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
getch();
}
==============================================================
【法式49】
標題:#if #ifdef和#ifndef的綜合運用。
1. 法式剖析:
2.法式源代碼:
#include "stdio.h"
#include "conio.h"
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
void main()
{
int a=10,b=20;
#ifdef MAX
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#ifndef MIN
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MIN
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
getch();
}