c语言程序设计50例(经典收藏),C语言程序设计50例(经典收藏)
C語(yǔ)言程序設(shè)計(jì)50例(經(jīng)典收藏)
本篇文章是對(duì)C語(yǔ)言程序設(shè)計(jì)的50個(gè)小案例進(jìn)行了詳細(xì)的分析介紹 需要的朋友參考下
【程序1】
題目 有1、2、3、4個(gè)數(shù)字 能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù) 都是多少
1.程序分析 可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去
掉不滿足條件的排列。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i,j,k;
printf( \n
for(i i i ) /*以下為三重循環(huán)*/
for(j j j )
for (k k k )
if (i! k i! j j! k) /*確保i、j、k三位互不相同*/
printf( %d,%d,%d\n ,i,j,k);
return 0;
【程序2】
題目 企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)(I)低于或等于10萬(wàn)元時(shí) 獎(jiǎng)金可提10% 利潤(rùn)高
于10萬(wàn)元 低于20萬(wàn)元時(shí) 低于10萬(wàn)元的部分按10%提成 高于10萬(wàn)元的部分 可可提
成7.5% 20萬(wàn)到40萬(wàn)之間時(shí) 高于20萬(wàn)元的部分 可提成5% 40萬(wàn)到60萬(wàn)之間時(shí)高于
40萬(wàn)元的部分 可提成3% 60萬(wàn)到100萬(wàn)之間時(shí) 高于60萬(wàn)元的部分 可提成1.5% 高于
100萬(wàn)元時(shí) 超過(guò)100萬(wàn)元的部分按1%提成 從鍵盤輸入當(dāng)月利潤(rùn)I 求應(yīng)發(fā)放獎(jiǎng)金總數(shù)
1.程序分析 請(qǐng)利用數(shù)軸來(lái)分界 定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf( %ld ,
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);
return 0;
【程序3】
題目 一個(gè)整數(shù) 它加上100后是一個(gè)完全平方數(shù) 再加上168又是一個(gè)完全平方數(shù) 請(qǐng)問(wèn)該數(shù)是多少
1.程序分析 在10萬(wàn)以內(nèi)判斷 先將該數(shù)加上100后再開方 再將該數(shù)加上268后再開方 如果開方后
的結(jié)果滿足如下條件 即是結(jié)果。請(qǐng)看具體分析
2.程序源代碼
代碼如下:
#include math.h
#include stdio.h
int main()
long int i,x,y,z;
for (i i 100000;i )
x sqrt(i 100); /*x為加上100后開方后的結(jié)果*/
y sqrt(i 268); /*y為再加上168后開方后的結(jié)果*/
if(x*x i 100 y*y i 268) /*如果一個(gè)數(shù)的平方根的平方等于該數(shù) 這說(shuō)明此數(shù)是完全平方數(shù)*/
printf( \n%ld\n ,i);
return 0;
【程序4】
題目 輸入某年某月某日 判斷這一天是這一年的第幾天
1.程序分析 以3月5日為例 應(yīng)該先把前兩個(gè)月的加起來(lái) 然后再加上5天即本年的第幾天 特殊
情況 閏年且輸入月份大于3時(shí)需考慮多加一天。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int day,month,year,sum,leap;
printf( please input year,month,day\n
scanf( %d,%d,%d , year, month, day);
switch(month) /*先計(jì)算某月以前月份的總天數(shù)*/
case 1:sum break;
case 2:sum break;
case 3:sum break;
case 4:sum 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; /*再加上某天的天數(shù)*/
if(year%400 0||(year%4 0 year%100! 0)) /*判斷是不是閏年*/
leap
else
leap
if(leap 1 month 2) /*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/
sum
printf( It is the %dth day. ,sum);
return 0;
【程序5】
題目 輸入三個(gè)整數(shù)x,y,z 請(qǐng)把這三個(gè)數(shù)由小到大輸出。
1.程序分析 我們想辦法把最小的數(shù)放到x上 先將x與y進(jìn)行比較 如果x y則將x與y的值進(jìn)行交換
然后再用x與z進(jìn)行比較 如果x z則將x與z的值進(jìn)行交換 這樣能使x最小。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int x,y,z,t;
scanf( %d%d%d , x, y,
if (x y)
{t x y } /*交換x,y的值*/
if(x z)
{t z x } /*交換x,z的值*/
if(y z)
{t y z } /*交換z,y的值*/
printf( small to big: %d %d %d\n ,x,y,z);
return 0;
【程序6】
題目 用號(hào)輸出字母C的圖案。
1.程序分析 可先用’ 號(hào)在紙上寫出字母C 再分行輸出。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
printf( Hello C-world!\n
printf( ****\n
printf( *\n
printf( * \n
printf( ****\n
return 0;
【程序7】
題目 輸出特殊圖案 請(qǐng)?jiān)赾環(huán)境中運(yùn)行 看一看 Very Beautiful!
1.程序分析 字符共有256個(gè)。不同字符 圖形不一樣。
2.程序源代碼
代碼如下:
#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口訣。
1.程序分析 分行與列考慮 共9行9列 i控制行 j控制列。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i,j,result;
printf( \n
for (i i i )
for(j j j )
result i*j;
printf( %d*%d %-3d ,i,j,result); /*-3d表示左對(duì)齊 占3位*/
printf( \n /*每一行后換行*/
return 0;
【程序9】
題目 要求輸出國(guó)際象棋棋盤。
1.程序分析 用i控制行 j來(lái)控制列 根據(jù)i j的和的變化來(lái)控制輸出黑方格 還是白方格。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i,j;
for(i i i )
for(j j j )
if((i j)%2 0)
printf( %c%c ,219,219);
else
printf(
printf( \n
return 0;
【程序10】
題目 打印樓梯 同時(shí)在樓梯上方打印兩個(gè)笑臉。
1.程序分析 用i控制行 j來(lái)控制列 j根據(jù)i的變化來(lái)控制輸出黑方格的個(gè)數(shù)。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i,j;
printf( \1\1\n /*輸出兩個(gè)笑臉*/
for(i i i )
for(j j j )
printf( %c%c ,219,219);
printf( \n
return 0;
【程序11】
題目 古典問(wèn)題 有一對(duì)兔子 從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子 小兔子長(zhǎng)到第三個(gè)月
后每個(gè)月又生一對(duì)兔子 假如兔子都不死 問(wèn)每個(gè)月的兔子總數(shù)為多少
1.程序分析 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21…
2.程序源代碼
代碼如下:
#include stdio.h
int main()
long f1,f2;
int i;
f1 f2
for(i i i )
printf( %12ld %12ld ,f1,f2);
if(i%2 0) printf( \n /*控制輸出 每行四個(gè)*/
f1 f1 /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/
f2 f1 /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/
return 0;
【程序12】
題目 判斷101-200之間有多少個(gè)素?cái)?shù) 并輸出所有素?cái)?shù)。
1.程序分析 判斷素?cái)?shù)的方法 用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)) 如果能被整除
則表明此數(shù)不是素?cái)?shù) 反之是素?cái)?shù)。
2.程序源代碼
代碼如下:
#include stdio.h
#include math.h
int main()
int m,i,k,h 0,leap
for(m 101;m 200;m )
k sqrt(m
for(i i i )
if(m%i 0)
leap
break;
if(leap)
printf( %-4d ,m);
if(h%10 0)
printf( \n
leap
printf( \nThe total is %d ,h);
return 0;
【程序13】
題目 打印出所有的“水仙花數(shù)” 所謂“水仙花數(shù)”是指一個(gè)三位數(shù) 其各位數(shù)字立方和等于該數(shù)
本身。例如 153是一個(gè)“水仙花數(shù)” 因?yàn)?53 1的三次方 5的三次方 3的三次方。
1.程序分析 利用for循環(huán)控制100-999個(gè)數(shù) 每個(gè)數(shù)分解出個(gè)位 十位 百位。
2.程序源代碼
代碼如下:
#include stdio.h
int 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;/*分解出個(gè)位*/
if(i*100 j*10 k i*i*i j*j*j k*k*k)
printf( %-5d ,n);
return 0;
【程序14】
題目 將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如 輸入90,打印出90 233*5。
程序分析 對(duì)n進(jìn)行分解質(zhì)因數(shù) 應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k 然后按下述步驟完成
(1)如果這個(gè)質(zhì)數(shù)恰等于n 則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束 打印出即可。
(2)如果n k 但n能被k整除 則應(yīng)打印出k的值 并用n除以k的商,作為新的正整數(shù)你n,
重復(fù)執(zhí)行第一步。
(3)如果n不能被k整除 則用k 1作為k的值,重復(fù)執(zhí)行第一步。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int n,i;
printf( \nplease input a number:\n
scanf( %d ,
printf( %d ,n);
for(i i i )
while(n! i)
if(n%i 0)
printf( %d* ,i);
n n/i;
else
break;
printf( %d ,n);
return 0;
【程序15】
題目 利用條件運(yùn)算符的嵌套來(lái)完成此題 學(xué)習(xí)成績(jī) 90分的同學(xué)用A表示 60-89分之間的用B表示
60分以下的用C表示。
1.程序分析 (a b)?a:b這是條件運(yùn)算符的基本例子。
2.程序源代碼
代碼如下:
#include stdio.h
int 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);
return 0;
【程序16】
題目 輸入兩個(gè)正整數(shù)m和n 求其最大公約數(shù)和最小公倍數(shù)。
1.程序分析 利用輾除法。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int a,b,num1,num2,temp;
printf( please input two numbers:\n
scanf( %d %d , num1, num2);
if(num1 num2)/*交換兩個(gè)數(shù) 使大數(shù)放在num1上*/
temp num1;
num1 num2;
num2 temp;
a num1;b num2;
while(b! 0)/*利用輾除法 直到b為0為止*/
temp a%b;
b temp;
printf( gongyueshu:%d\n ,a);
printf( gongbeishu:%d\n ,num1*num2/a);
return 0;
【程序17】
題目 輸入一行字符 分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)。
1.程序分析 利用while語(yǔ)句,條件為輸入的字符不為’\n’.
2.程序源代碼
代碼如下:
#include stdio.h
int main()
char c;
int letters 0,space 0,digit 0,others
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);
return 0;
【程序18】
題目 求s a aa aaa aaaa aa…a的值 其中a是一個(gè)數(shù)字。例如2 22 222 2222 22222(此時(shí)
共有5個(gè)數(shù)相加) 幾個(gè)數(shù)相加有鍵盤控制。
1.程序分析 關(guān)鍵是計(jì)算出每一項(xiàng)的值。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int a,n,count
long int sn 0,tn
printf( please input a and n\n
scanf( %d %d , a,
printf( a %d,n %d\n ,a,n);
while(count n)
tn tn
sn sn
a a*10;
count;
printf( a aa ... %ld\n ,sn);
return 0;
【程序19】
題目 一個(gè)數(shù)如果恰好等于它的因子之和 這個(gè)數(shù)就稱為“完數(shù)”。例如6 1 2 3.編程
找出1000以內(nèi)的所有完數(shù)。
程序分析 請(qǐng)參照程序 –上頁(yè)程序14.
2.程序源代碼
代碼如下:
#include stdio.h
int main()
static int k[10];
int i,j,n,s;
for(j j 1000;j )
for(i i i )
if((j%i) 0)
s s-i;
k[n]
if(s 0)
printf( %d is a wanshu ,j);
for(i i i )
printf( %d, ,k[i]);
printf( %d\n ,k[n]);
return 0;
【程序20】
題目 一球從100米高度自由落下 每次落地后反跳回原高度的一半 再落下 求它在
第10次落地時(shí) 共經(jīng)過(guò)多少米 第10次反彈多高
1.程序分析 見下面注釋
2.程序源代碼
代碼如下:
#include stdio.h
int main()
float sn 100.0,hn sn/2;
int n;
for(n n n )
sn sn 2*hn;/*第n次落地時(shí)共經(jīng)過(guò)的米數(shù)*/
hn hn/2; /*第n次反跳高度*/
printf( the total of road is %f\n ,sn);
printf( the tenth is %f meter\n ,hn);
return 0;
【程序21】
題目 猴子吃桃問(wèn)題 猴子第一天摘下若干個(gè)桃子 當(dāng)即吃了一半 還不癮 又多吃了一個(gè)
第二天早上又將剩下的桃子吃掉一半 又多吃了一個(gè)。以后每天早上都吃了前一天剩下
的一半零一個(gè)。到第10天早上想再吃時(shí) 見只剩下一個(gè)桃子了。求第一天共摘了多少。
1.程序分析 采取逆向思維的方法 從后往前推斷。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int day,x1,x2;
day
while(day 0)
x1 (x2 1)*2;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/
day--;
printf( the total is %d\n ,x1);
return 0;
【程序22】
題目 兩個(gè)乒乓球隊(duì)進(jìn)行比賽 各出三人。甲隊(duì)為a,b,c三人 乙隊(duì)為x,y,z三人。已抽簽決定
比賽名單。有人向隊(duì)員打聽比賽的名單。a說(shuō)他不和x比 c說(shuō)他不和x,z比 請(qǐng)編程序找出
三隊(duì)賽手的名單。
1.程序源代碼
代碼如下:
#include stdio.h
int main()
char i,j,k;/*i是a的對(duì)手 j是b的對(duì)手 k是c的對(duì)手*/
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);
return 0;
【程序23】
題目 打印出如下圖案 菱形
*
*****
*******
*****
1.程序分析 先把圖形分成兩部分來(lái)看待 前四行一個(gè)規(guī)律 后三行一個(gè)規(guī)律 利用雙重
for循環(huán) 第一層控制行 第二層控制列。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i,j,k;
for(i i i )
for(j j 2-i;j )
printf(
for(k k 2*i;k )
printf( *
printf( \n
for(i i i )
for(j j j )
printf(
for(k k 4-2*i;k )
printf( *
printf( \n
return 0;
【程序24】
題目 有一分?jǐn)?shù)序列 2/1 3/2 5/3 8/5 13/8 21/13…求出這個(gè)數(shù)列的前20項(xiàng)之和。
1.程序分析 請(qǐng)抓住分子與分母的變化規(guī)律。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int n,t,number
float a 2,b 1,s
for(n n number;n )
s s a/b;
t a a b /*這部分是程序的關(guān)鍵 請(qǐng)讀者猜猜t的作用*/
printf( sum is %9.6f\n ,s);
return 0;
【程序25】
題目 求1 2! 3! … 19!的和
1.程序分析 此程序只是把累加變成了累乘。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
long long s 0,n,t
for(n n n )
printf( 1 2! 3!... 19! %lld\n ,s);
return 0;
【程序26】
題目 利用遞歸方法求5!。
1.程序分析 遞歸公式 fn fn_1*4!
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i;
int fact(int j);
for(i i i )
printf( %d! %d\n ,i,fact(i));
return 0;
int fact(int j)
int sum;
if(j 0)
sum
else
sum j*fact(j-1);
return sum;
【程序27】
題目 利用遞歸函數(shù)調(diào)用方式 將所輸入的5個(gè)字符 以相反順序打印出來(lái)。
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int i
void palin(int n);
palin(i);
printf( \n
return 0;
void palin(int n)
char next;
if(n 1)
next getchar();
printf( \n\0:
putchar(next);
else
next getchar();
palin(n-1);
putchar(next);
【程序28】
題目 有5個(gè)人坐在一起 問(wèn)第五個(gè)人多少歲 他說(shuō)比第4個(gè)人大2歲。問(wèn)第4個(gè)人歲數(shù) 他說(shuō)比第
3個(gè)人大2歲。問(wèn)第三個(gè)人 又說(shuō)比第2人大兩歲。問(wèn)第2個(gè)人 說(shuō)比第一個(gè)人大兩歲。最后
問(wèn)第一個(gè)人 他說(shuō)是10歲。請(qǐng)問(wèn)第五個(gè)人多大
1.程序分析 利用遞歸的方法 遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(shù) 需知道
第四人的歲數(shù) 依次類推 推到第一人 10歲 再往回推。
2.程序源代碼
代碼如下:
#include stdio.h
age(int n)
int c;
if(n 1) c
else c age(n-1)
return(c);
int main()
printf( %d ,age(5));
return 0;
【程序29】
題目 給一個(gè)不多于5位的正整數(shù) 要求 一、求它是幾位數(shù) 二、逆序打印出各位數(shù)字。
程序分析 學(xué)會(huì)分解出每一位數(shù) 如下解釋 (這里是一種簡(jiǎn)單的算法 師專數(shù)002班趙鑫提供)
2.程序源代碼
代碼如下:
#include stdio.h
int main()
long a,b,c,d,e,x;
scanf( %ld ,
a x/10000;/*分解出萬(wàn)位*/
b x%10000/1000;/*分解出千位*/
c x%1000/100;/*分解出百位*/
d x%100/10;/*分解出十位*/
e x%10;/*分解出個(gè)位*/
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);
return 0;
【程序30】
題目 一個(gè)5位數(shù) 判斷它是不是回文數(shù)。即12321是回文數(shù) 個(gè)位與萬(wàn)位相同 十位與千位相同。
1.程序分析 同29例
2.程序源代碼
代碼如下:
#include stdio.h
int main()
long ge,shi,qian,wan,x;
scanf( %ld ,
wan x/10000;
qian x%10000/1000;
shi x%100/10;
ge x%10;
if(ge wan shi qian)/*個(gè)位等于萬(wàn)位并且十位等于千位*/
printf( this number is a huiwen\n
else
printf( this number is not a huiwen\n
return 0;
【程序31】
題目 請(qǐng)輸入星期幾的第一個(gè)字母來(lái)判斷一下是星期幾 如果第一個(gè)字母一樣 則繼續(xù)
判斷第二個(gè)字母。
1.程序分析 用情況語(yǔ)句比較好 如果第一個(gè)字母一樣 則判斷用情況語(yǔ)句或if語(yǔ)句判斷第二個(gè)字母。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
char letter;
printf( please input the first letter of someday\n
while((letter getchar())! Y )/*當(dāng)所按字母為Y時(shí)才結(jié)束*/
switch (letter)
case S :printf( please input second letter\n
if((letter getchar()) a )
printf( saturday\n
else if ((letter getchar()) 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 getchar()) u )
printf( tuesday\n
else if ((letter getchar()) h )
printf( thursday\n
else
printf( data error\n
break;
case W :printf( wednesday\n break;
default: printf( data error\n
return 0;
【程序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 color color )
textbackground(color);/*設(shè)置文本的背景顏色*/
cprintf( This is color %d\r\n , color);
cprintf( Press any key to continue\r\n
getch();/*輸入字符看不見*/
【程序33】
題目 學(xué)習(xí)gotoxy()與clrscr()函數(shù)
1.程序分析
2.程序源代碼
代碼如下:
#include conio.h
#include stdio.h
void main(void)
clrscr();/*清屏函數(shù)*/
textbackground(2);
gotoxy(1, 5);/*定位函數(shù)*/
cprintf( Output at row 5 column 1\n
textbackground(3);
gotoxy(20, 10);
cprintf( Output at row 10 column 20\n
getch();
【程序34】
題目 練習(xí)函數(shù)調(diào)用
程序分析
2.程序源代碼
代碼如下:
#include stdio.h
void hello_world(void)
printf( Hello, world!\n
void three_hellos(void)
int counter;
for (counter counter counter )
hello_world();/*調(diào)用此函數(shù)*/
int main()
three_hellos();/*調(diào)用此函數(shù)*/
return 0;
【程序35】
題目 文本顏色設(shè)置
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
void main(void)
int color;
for (color color color )
textcolor(color);/*設(shè)置文本顏色*/
cprintf( This is color %d\r\n , color);
textcolor(128 15);
cprintf( This is blinking\r\n
getch();
【程序36】
題目 求100之內(nèi)的素?cái)?shù)
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include math.h
#define N 101
int main()
int i,j,line,a[N],k;
for(k k k )
for(i i sqrt(k);i )
if(k%i 0)
break;
if(i (int)sqrt(k) 1)
printf( %d ,k);
return 0;
【程序37】
題目 對(duì)10個(gè)數(shù)進(jìn)行排序
1.程序分析 可以利用選擇法 即從后9個(gè)比較過(guò)程中 選擇一個(gè)最小的與第一個(gè)元素交換
下次類推 即用第二個(gè)元素與后8個(gè)進(jìn)行比較 并進(jìn)行交換。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int a[10],i,j,t;
printf( 請(qǐng)輸入10個(gè)數(shù)
for(i i i )
scanf( %d , a[i]);
for(i i i )
for(j j j )
if(a[j] a[j 1])
t a[j];
a[j] a[j
a[j 1]
for(i i i )
printf( %d ,a[i]);
return 0;
【程序38】
題目 求一個(gè)3*3矩陣對(duì)角線元素之和
1.程序分析 利用雙重for循環(huán)控制輸入二維數(shù)組 再將a累加后輸出。
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
/* 如果使用的是TC系列編譯器則可能需要添加下句 */
static void dummyfloat(float *x){ float y; dummyfloat( }
main()
float a[3][3],sum
int i,j;
printf( please input rectangle element:\n
for(i i i )
for(j j j )
scanf( %f , a[j]);
for(i i i )
sum sum
printf( duijiaoxian he is %6.2f ,sum);
getch();
【程序39】
題目 有一個(gè)已經(jīng)排好序的數(shù)組。現(xiàn)輸入一個(gè)數(shù) 要求按原來(lái)的規(guī)律將它插入數(shù)組中。
程序分析 首先判斷此數(shù)是否大于最后一個(gè)數(shù) 然后再考慮插入中間的數(shù)的情況 插入后
此元素之后的數(shù) 依次后移一個(gè)位置。
2.程序源代碼
代碼如下:
#include stdio.h
int main()
int a[11] {1,4,6,9,13,16,19,28,40,100},i,j,t,d;
scanf( %d , a[10]);
if(a[0] a[9])
else
for(i i i )
for(j j 10-i;j )
if(a[j] a[j 1])
t a[j];
a[j] a[j
a[j 1]
if(d 0)
for(i i i )
printf( %d ,a[i]);
else
for(i i i--)
printf( %d ,a[i]);
return 0;
【程序40】
題目 將一個(gè)數(shù)組逆序輸出。
1.程序分析 用第一個(gè)與最后一個(gè)交換。
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 i i )
printf( %4d ,a);
for(i i i )
temp
a a[N-i-1];
a[N-i-1] temp;
printf( \n sorted array:\n
for(i i i )
printf( %4d ,a);
getch();
【程序41】
題目 學(xué)習(xí)static定義靜態(tài)變量的用法
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
varfunc()
int var
static int static_var
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 i i )
varfunc();
getch();
【程序42】
題目 學(xué)習(xí)使用auto定義變量的用法
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
main()
int i,num;
num
for(i i i )
printf( \40: The num equal %d \n ,num);
num
auto int num
printf( \40: The internal block num equal %d \n ,num);
num
getch();
【程序43】
題目 學(xué)習(xí)使用static的另一用法。
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
main()
int i,num;
num
for(i i i )
printf( \40: The num equal %d \n ,num);
num
static int num
printf( \40:The internal block num equal %d\n ,num);
num
getch();
【程序44】
題目 學(xué)習(xí)使用external的用法。
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
int a,b,c;
void add()
int a;
c a
void main()
a b
add();
printf( The value of c is equal to %d\n ,c);
getch();
【程序45】
題目 學(xué)習(xí)使用register定義變量的方法。
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
void main()
register int i;
int tmp
for(i i 100;i )
tmp
printf( The sum is %d\n ,tmp);
getch();
【程序46】
題目 宏#define命令練習(xí)(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
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命令練習(xí)(2)
1.程序分析
2.程序源代碼
代碼如下:
#include stdio.h
#include conio.h
/*宏定義中允許包含兩道衣裳命令的情形 此時(shí)必須在最右邊加上 \ */
#define exchange(a,b) { \
int t;\
void main(void)
int x
int y
printf( x y %d\n ,x,y);
exchange(x,y);
printf( x y %d\n ,x,y);
getch();
【程序48】
題目 宏#define命令練習(xí)(3)
1.程序分析
2.程序源代碼
代碼如下:
#define LAG
#define SMA
#define EQ
#include stdio.h
#include conio.h
void main()
int i
int j
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的綜合應(yīng)用。
程序分析
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
#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();
很快就
責(zé)任編輯:xiaochao
總結(jié)
以上是生活随笔為你收集整理的c语言程序设计50例(经典收藏),C语言程序设计50例(经典收藏)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DIV或者DIV里面的图片水平与垂直居中
- 下一篇: python绘画音频_人工智能下的音频还