c語言中a10和b20,c語言a與b

本文目錄一覽:

求C語言題目

c語言經典100題:

【程序1】

題目:有1,2,3,4個數字,能組成多少個互不相同且無重複數字的三位數 都是多少

1.程序分析:可填在百位,十位,個位的數字都是1,2,3,4.組成所有的排列後再去

掉不滿足條件的排列.

2.程序源代碼:

main()

{

int i,j,k;

printf(“\n”);

for(i1;i5;i++) /*以下為三重循環*/

for(j1;j5;j++)

for (k1;k5;k++)

{

if (i!ki!jj!k) /*確保i,j,k三位互不相同*/

printf(“%d,%d,%d\n”,i,j,k);

}

}

【程序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.程序源代碼:

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf(“%ld”,i);

bonus1100000*0.1;bonus2bonus1+100000*0.75;

bonus4bonus2+200000*0.5;

bonus6bonus4+200000*0.3;

bonus10bonus6+400000*0.15;

if(i100000)

bonusi*0.1;

else if(i200000)

bonusbonus1+(i-100000)*0.075;

else if(i400000)

bonusbonus2+(i-200000)*0.05;

else if(i600000)

bonusbonus4+(i-400000)*0.03;

else if(i1000000)

bonusbonus6+(i-600000)*0.015;

else

bonusbonus10+(i-1000000)*0.01;

printf(“bonus%d”,bonus);

}

【程序3】

題目:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少

1.程序分析:在10萬以內判斷,先將該數加上100後再開方,再將該數加上268後再開方,如果開方後

的結果滿足如下條件,即是結果.請看具體分析:

2.程序源代碼:

#include “math.h”

main()

{

long int i,x,y,z;

for (i1;i2)/*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf(“it is the %dth day.”,sum);}

【程序4】

題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

1.程序分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊

情況,閏年且輸入月份大於3時需考慮多加一天。

2.程序源代碼:

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:sum0;break;

case 2:sum31;break;

case 3:sum59;break;

case 4:sum90;break;

case 5:sum120;break;

case 6:sum151;break;

case 7:sum181;break;

case 8:sum212;break;

case 9:sum243;break;

case 10:sum273;break;

case 11:sum304;break;

case 12:sum334;break;

default:printf(“data error”);break;

}

sumsum+day; /*再加上某天的天數*/

if(year%4000||(year%40year%100!0))/*判斷是不是閏年*/

leap1;

else

leap0;

if(leap1month2)/*如果是閏年且月份大於2,總天數應該加一天*/

sum++;

printf(“It is the %dth day.”,sum);}

【程序5】

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出.

1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果xy則將x與y的值進行交換,

然後再用x與z進行比較,如果xz則將x與z的值進行交換,這樣能使x最小.

2.程序源代碼:

main()

{

int x,y,z,t;

scanf(“%d%d%d”,x,y,z);

if (xy)

{tx;xy;yt;} /*交換x,y的值*/

if(xz)

{tz;zx;xt;}/*交換x,z的值*/

if(yz)

{ty;yz;zt;}/*交換z,y的值*/

printf(“small to big: %d %d %d\n”,x,y,z);

}

【程序6】

題目:用*號輸出字母c的圖案.

1.程序分析:可先用’*’號在紙上寫出字母c,再分行輸出.

2.程序源代碼:

#include “stdio.h”

main()

{

printf(“hello c-world!\n”);

printf(” ****\n”);

printf(” *\n”);

printf(” * \n”);

printf(” ****\n”);

}

【程序7】

題目:輸出特殊圖案,請在c環境中運行,看一看,very beautiful!

1.程序分析:字符共有256個.不同字符,圖形不一樣.

2.程序源代碼:

#include “stdio.h”

main()

{

char a176,b219;

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);}

【程序8】

題目:輸出9*9口訣.

1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列.

2.程序源代碼:

#include “stdio.h”

main()

{

int i,j,result;

printf(“\n”);

for (i1;i10;i++)

{ for(j1;j10;j++)

{

resulti*j;

printf(“%d*%d%-3d”,i,j,result);/*-3d表示左對齊,佔3位*/

}

printf(“\n”);/*每一行後換行*/

}

}

【程序9】

題目:要求輸出國際象棋棋盤.

1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格.

2.程序源代碼:

#include “stdio.h”

main()

{

int i,j;

for(i0;i8;i++)

{

for(j0;j8;j++)

if((i+j)%20)

printf(“%c%c”,219,219);

else

printf(” “);

printf(“\n”);

}

}

【程序10】

題目:打印樓梯,同時在樓梯上方打印兩個笑臉.

1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數.

2.程序源代碼:

#include “stdio.h”

main()

{

int i,j;

printf(“\1\1\n”);/*輸出兩個笑臉*/

for(i1;i11;i++)

{

for(j1;ji;j++)

printf(“%c%c”,219,219);

printf(“\n”);

}

}

【程序11】

題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月

後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少

1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21….

2.程序源代碼:

main()

{

long f1,f2;

int i;

f1f21;

for(i1;i20;i++)

{ printf(“%12ld %12ld”,f1,f2);

if(i%20) printf(“\n”);/*控制輸出,每行四個*/

f1f1+f2; /*前兩個月加起來賦值給第三個月*/

f2f1+f2; /*前兩個月加起來賦值給第三個月*/

}

}

【程序12】

題目:判斷101-200之間有多少個素數,並輸出所有素數.

1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,

則表明此數不是素數,反之是素數.

2.程序源代碼:

#include “math.h”

main()

{

int m,i,k,h0,leap1;

printf(“\n”);

for(m101;m200;m++)

{ ksqrt(m+1);

for(i2;ik;i++)

if(m%i0)

{leap0;break;}

if(leap) {printf(“%-4d”,m);h++;

if(h%100)

printf(“\n”);

}

leap1;

}

printf(“\nthe total is %d”,h);

}

【程序13】

題目:打印出所有的”水仙花數”,所謂”水仙花數”是指一個三位數,其各位數字立方和等於該數

本身.例如:153是一個”水仙花數”,因為1531的三次方+5的三次方+3的三次方.

1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位.

2.程序源代碼:

main()

{

int i,j,k,n;

printf(“‘water flower’number is:”);

for(n100;n1000;n++)

{

in/100;/*分解出百位*/

jn/10%10;/*分解出十位*/

kn%10;/*分解出個位*/

if(i*100+j*10+ki*i*i+j*j*j+k*k*k)

{

printf(“%-5d”,n);

}

}

printf(“\n”);

}

【程序14】

題目:將一個正整數分解質因數.例如:輸入90,打印出902*3*3*5.

程序分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:

(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可.

(2)如果nk,但n能被k整除,則應打印出k的值,並用n除以k的商,作為新的正整數你n,

重複執行第一步.

(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步.

2.程序源代碼:

/* zheng int is divided yinshu*/

main()

{

int n,i;

printf(“\nplease input a number:\n”);

scanf(“%d”,n);

printf(“%d”,n);

for(i2;i90分的同學用a表示,60-89分之間的用b表示,

60分以下的用c表示.

1.程序分析:(ab) a:b這是條件運算符的基本例子.

2.程序源代碼:

main()

{

int score;

char grade;

printf(“please input a score\n”);

scanf(“%d”,score);

gradescore90 ‘a’:(score60 ‘b’:’c’);

printf(“%d belongs to %c”,score,grade);

}

【程序15】

題目:利用條件運算符的嵌套來完成此題:學習成績90分的同學用A表示,60-89分之間的用B表示,

60分以下的用C表示。

1.程序分析:(ab)?a:b這是條件運算符的基本例子。

2.程序源代碼:

main()

{

int score;

char grade;

printf(“please input a score\n”);

scanf(“%d”,score);

gradescore90?’A’:(score60?’B’:’C’);

printf(“%d belongs to %c”,score,grade);

}

【程序16】

題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數.

1.程序分析:利用輾除法.

2.程序源代碼:

main()

{

int a,b,num1,num2,temp;

printf(“please input two numbers:\n”);

scanf(“%d,%d”,num1,num2);

if(num1 { tempnum1;

num1num2;

num2temp;

}

anum1;bnum2;

while(b!0)/*利用輾除法,直到b為0為止*/

{

tempa%b;

ab;

btemp;

}

printf(“gongyueshu:%d\n”,a);

printf(“gongbeishu:%d\n”,num1*num2/a);

}

【程序17】

題目:輸入一行字符,分別統計出其中英文字母,空格,數字和其它字符的個數.

1.程序分析:利用while語句,條件為輸入的字符不為’\n’.

2.程序源代碼:

#include “stdio.h”

main()

{char c;

int letters0,space0,digit0,others0;

printf(“please input some characters\n”);

while((cgetchar())!’\n’)

{

if(c’a’c’a’c’0’c’9′)

digit++;

else

others++;

}

printf(“all in all:char%d space%d digit%d others%d\n”,letters,

space,digit,others);

}

【程序18】

題目:求sa+aa+aaa+aaaa+aa…a的值,其中a是一個數字.例如2+22+222+2222+22222(此時

共有5個數相加),幾個數相加有鍵盤控制.

1.程序分析:關鍵是計算出每一項的值.

2.程序源代碼:

main()

{

int a,n,count1;

long int sn0,tn0;

printf(“please input a and n\n”);

scanf(“%d,%d”,a,n);

printf(“a%d,n%d\n”,a,n);

while(countn)

{

tntn+a;

snsn+tn;

aa*10;

++count;

}

printf(“a+aa+…%ld\n”,sn);

}

【程序19】

題目:一個數如果恰好等於它的因子之和,這個數就稱為”完數”.例如61+2+3.編程

找出1000以內的所有完數.

1. 程序分析:請參照程序–上頁程序14.

2.程序源代碼:

main()

{

static int k[10];

int i,j,n,s;

for(j2;j1000;j++)

{

n-1;

sj;

for(i1;i {

if((j%i)0)

{ n++;

ss-i;

k[n]i;

}

}

if(s0)

{

printf(“%d is a wanshu”,j);

for(i0;i printf(“%d,”,k[i]);

printf(“%d\n”,k[n]);

}

}

}

【程序20】

題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在

第10次落地時,共經過多少米 第10次反彈多高

1.程序分析:見下面注釋

2.程序源代碼:

main()

{

float sn100.0,hnsn/2;

int n;

for(n2;n0)

{x1(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/

x2x1;

day–;

}

printf(“the total is %d\n”,x1);

}

【程序21】

題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個

第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下

的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

1.程序分析:採取逆向思維的方法,從後往前推斷。

2.程序源代碼:

main()

{

int day,x1,x2;

day9;

x21;

while(day0)

{x1(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/

x2x1;

day–;

}

printf(“the total is %d\n”,x1);

}

【程序22】

題目:兩個乒乓球隊進行比賽,各出三人.甲隊為a,b,c三人,乙隊為x,y,z三人.已抽籤決定

比賽名單.有人向隊員打聽比賽的名單.a說他不和x比,c說他不和x,z比,請編程序找出

三隊賽手的名單.

1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,

則表明此數不是素數,反之是素數.

2.程序源代碼:

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!kj!k)

{ if(i!’x’k!’x’k!’z’)

printf(“order is a–%c\tb–%c\tc–%c\n”,i,j,k);

}

}

}

}

【程序23】

題目:打印出如下圖案(菱形)

*

***

******

********

******

***

*

1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,後三行一個規律,利用雙重

for循環,第一層控制行,第二層控制列.

2.程序源代碼:

main()

{

int i,j,k;

for(i0;i3;i++)

{

for(j0;j2-i;j++)

printf(” “);

for(k0;k2*i;k++)

printf(“*”);

printf(“\n”);

}

for(i0;i2;i++)

{

for(j0;ji;j++)

printf(” “);

for(k0;k4-2*i;k++)

printf(“*”);

printf(“\n”);

}

}

【程序24】

題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和.

1.程序分析:請抓住分子與分母的變化規律.

2.程序源代碼:

main()

{

int n,t,number20;

float a2,b1,s0;

for(n1;nnumber;n++)

{

ss+a/b;

ta;aa+b;bt;/*這部分是程序的關鍵,請讀者猜猜t的作用*/

}

printf(“sum is %9.6f\n”,s);

}

【程序25】

題目:求1+2!+3!+…+20!的和

1.程序分析:此程序只是把累加變成了累乘.

2.程序源代碼:

main()

{

float n,s0,t1;

for(n1;n20;n++)

{

t*n;

s+t;

}

printf(“1+2!+3!…+20!%e\n”,s);

}

【程序26】

題目:利用遞歸方法求5!.

1.程序分析:遞歸公式:fnfn_1*4!

2.程序源代碼:

#include “stdio.h”

main()

{

int i;

int fact();

for(i0;i5;i++)

printf(“\40:%d!%d\n”,i,fact(i));

}

int fact(j)

int j;

{

int sum;

if(j0)

sum1;

else

sumj*fact(j-1);

return sum;

}

【程序27】

題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來.

程序源代碼:

#include “stdio.h”

main()

{

int i5;

void palin(int n);

printf(“\40:”);

palin(i);

printf(“\n”);

}

void palin(n)

int n;

{

char next;

if(n1)

{

nextgetchar();

printf(“\n\0:”);

putchar(next);

}

else

{

nextgetchar();

palin(n-1);

putchar(next);

}

}

【程序28】

題目:有5個人坐在一起,問第五個人多少歲 他說比第4個人大2歲.問第4個人歲數,他說比第

3個人大2歲.問第三個人,又說比第2人大兩歲.問第2個人,說比第一個人大兩歲.最後

問第一個人,他說是10歲.請問第五個人多大

1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段.要想知道第五個人歲數,需知道

第四人的歲數,依次類推,推到第一人(10歲),再往回推.

2.程序源代碼:

age(n)

int n;

{

int c;

if(n1) c10;

else cage(n-1)+2;

return(c);

}

main()

{ printf(“%d”,age(5));

}

【程序29】

題目:給一個不多於5位的正整數,要求:一,求它是幾位數,二,逆序打印出各位數字.

1. 程序分析:學會分解出每一位數,如下解釋:(這裡是一種簡單的算法,師專數002班趙鑫提供)

2.程序源代碼:

main( )

{

long a,b,c,d,e,x;

scanf(“%ld”,x);

ax/10000;/*分解出萬位*/

bx%10000/1000;/*分解出千位*/

cx%1000/100;/*分解出百位*/

dx%100/10;/*分解出十位*/

ex%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);

}

【程序30】

題目:一個5位數,判斷它是不是迴文數.即12321是迴文數,個位與萬位相同,十位與千位相同.

1.程序分析:同29例

2.程序源代碼:

main( )

{

long ge,shi,qian,wan,x;

scanf(“%ld”,x);

wanx/10000;

qianx%10000/1000;

shix%100/10;

gex%10;

if (gewanshiqian)/*個位等於萬位並且十位等於千位*/

printf(“this number is a huiwen\n”);

else

printf(“this number is not a huiwen\n”);

}

【程序31】

題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續

判斷第二個字母.

1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母.

2.程序源代碼:

#include

void main()

{

char letter;

printf(“please input the first letter of someday\n”);

while ((lettergetch())!’y’)/*當所按字母為y時才結束*/

{ switch (letter)

{case ‘s’:printf(“please input second letter\n”);

if((lettergetch())’a’)

printf(“saturday\n”);

else if ((lettergetch())’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((lettergetch())’u’)

printf(“tuesday\n”);

else if ((lettergetch())’h’)

printf(“thursday\n”);

else printf(“data error\n”);

break;

case ‘w’:printf(“wednesday\n”);break;

default: printf(“data error\n”);

}

}

}

【程序32】

題目:press any key to change color, do you want to try it. please hurry up!

程序源代碼:

#include

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()函數

程序源代碼:

#include

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”);

}

【程序34】

題目:練習函數調用

1. 程序分析:

2.程序源代碼:

#include

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();/*調用此函數*/

}

【程序35】

題目:文本顏色設置

程序源代碼:

#include

void main(void)

{

int color;

for (color 1; color a[j]) minj;

tema[i];

a[i]a[min];

a[min]tem;

}

/*output data*/

printf(“after sorted \n”);

for(i0;iprintf(“%5d”,a[i]);

}

【程序36】

題目:求100之內的素數

程序源代碼:

#include

#include “math.h”

#define N 101

main()

{

int i,j,line,a[N];

for(i2;ifor(i2;i for(ji+1;j {

if(a[i]!0a[j]!0)

if(a[j]%a[i]0)

a[j]0;}

printf(“\n”);

for(i2,line0;i{

if(a[i]!0)

{printf(“%5d”,a[i]);

line++;}

if(line10)

{printf(“\n”);

line0;}

}

}

【程序37】

題目:對10個數進行排序

1.程序分析:可以利用選擇法,即從後9個比較過程中,選擇一個最小的與第一個元素交換,

下次類推,即用第二個元素與後8個進行比較,並進行交換。

2.程序源代碼:

#define N 10

main()

{int i,j,min,tem,a[N];

/*input data*/

printf(“please input ten num:\n”);

for(i0;i{

printf(“a[%d]”,i);

scanf(“%d”,a[i]);}

printf(“\n”);

for(i0;iprintf(“%5d”,a[i]);

printf(“\n”);

/*sort ten num*/

for(i0;i{mini;

for(ji+1;jif(a[min]a[j]) minj;

tema[i];

a[i]a[min];

a[min]tem;

}

/*output data*/

printf(“After sorted \n”);

for(i0;iprintf(“%5d”,a[i]);

}

【程序38】

題目:求一個3*3矩陣對角線元素之和

1.程序分析:利用雙重for循環控制輸入二維數組,再將a[i][i]累加後輸出.

2.程序源代碼:

main()

{

float a[3][3],sum0;

int i,j;

printf(“please input rectangle element:\n”);

for(i0;i3;i++)

for(j0;j3;j++)

scanf(“%f”,a[i][j]);

for(i0;i3;i++)

sumsum+a[i][i];

printf(“duijiaoxian he is %6.2f”,sum);

}

【程序39】

題目:有一個已經排好序的數組.現輸入一個數,要求按原來的規律將它插入數組中.

1. 程序分析:首先判斷此數是否大於最後一個數,然後再考慮插入中間的數的情況,插入後

此元素之後的數,依次後移一個位置.

2.程序源代碼:

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(i0;iend)

a[10]number;

else

{for(i0;inumber)

{temp1a[i];

a[i]number;

for(ji+1;j11;j++)

{temp2a[j];

a[j]temp1;

temp1temp2;

}

break;

}

}

}

for(i0;i11;i++)

printf(“%6d”,a[i]);

}

【程序40】

題目:將一個數組逆序輸出.

1.程序分析:用第一個與最後一個交換.

2.程序源代碼:

#define n 5

main()

{ int a[n]{9,6,5,4,1},i,temp;

printf(“\n original array:\n”);

for(i0;i printf(“%4d”,a[i]);

for(i0;i {tempa[i];

a[i]a[n-i-1];

a[n-i-1]temp;

}

printf(“\n sorted array:\n”);

for(i0;i printf(“%4d”,a[i]);

}

【程序41】

題目:學習static定義靜態變量的用法

程序源代碼:

#include “stdio.h”

varfunc()

{

int var0;

static int static_var0;

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(i0;i3;i++)

varfunc();

}

【程序42】

題目:學習使用auto定義變量的用法

程序源代碼:

#include “stdio.h”

main()

{int i,num;

num2;

for (i0;i3;i++)

{ printf(“\40: the num equal %d \n”,num);

num++;

{

auto int num1;

printf(“\40: the internal block num equal %d \n”,num);

num++;

}

}

}

【程序43】

題目:學習使用static的另一用法.

程序源代碼:

#include “stdio.h”

main()

{

int i,num;

num2;

for(i0;i3;i++)

{

printf(“\40: the num equal %d \n”,num);

num++;

{

static int num1;

printf(“\40:the internal block num equal %d\n”,num);

num++;

}

}

}

【程序44】

題目:學習使用external的用法.

程序源代碼:

#include “stdio.h”

int a,b,c;

void add()

{ int a;

a3;

ca+b;

}

void main()

{ ab4;

add();

printf(“the value of c is equal to %d\n”,c);

}

【程序45】

題目:學習使用register定義變量的方法.

程序源代碼:

void main()

{

register int i;

int tmp0;

for(i1;i”);

scanf(“%d”,num);

printf(“\40:the square for this number is %d \n”,sq(num));

if(num50)

againtrue;

else

againfalse;

}

}

【程序46】

題目:宏#define命令練習(1)

程序源代碼:

#include “stdio.h”

#define TRUE 1

#define FALSE 0

#define SQ(x) (x)*(x)

void main()

{

int num;

int again1;

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(num50)

againTRUE;

else

againFALSE;

}

}

【程序47】

題目:宏#define命令練習(2)

程序源代碼:

#include “stdio.h”

#define exchange(a,b) { \ /*宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上”\”*/

int t;\

ta;\

ab;\

bt;\

}

void main(void)

{

int x10;

int y20;

printf(“x%d; y%d\n”,x,y);

exchange(x,y);

printf(“x%d; y%d\n”,x,y);

}

【程序48】

題目:宏#define命令練習(3)

程序源代碼:

#define lag

#define sma y) x:y

#define minimum(x,y) (xy) y:x

void main()

{ int a10,b20;

#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)

NOIP1996砝碼稱重問題c語言詳解 要枚舉法 要快

#includeiostream

using namespace std;

int i,a1,a2,a3,a5,a10,a20,b1,b2,b3,b5,b10,b20,h=0;

bool b[1001];

int main()

{

cina1a2a3a5a10a20;

for (i=0;i1001;++i) b[i]=false;

for (b1=0;b1=a1;++b1)

for (b2=0;b2=a2;++b2)

for (b3=0;b3=a3;++b3)

for (b5=0;b5=a5;++b5)

for (b10=0;b10=a10;++b10)

for (b20=0;b20=a20;++b20)

b[b1+b2*2+b3*3+b5*5+b10*10+b20*20]=true;

for (i=1;i1001;++i) if (b[i]==true) ++h;

couth;

return 0;

}

C語言表達式 10&20 的值是什麼?

1、數據類型、運算符與表達式,2.1 預備知識; 2.2 C語言的數據類型; 2.3 常量和變量; 2.4 整型數據; 2.5 實型數據; 2.6 字符型數據; 2.7 算術運算與算術表達式; 2.8 賦值運算與賦值表達式; 2.9 逗號運算符和逗號表達式;,2.1 預備知識,計算機中數的表示及進制轉換 二進制、八進制、十進制、十六進制 各種進制之間的轉換,各種進制之間的轉換(整數) 二進制、八進制、十六進制轉換成十進制 方法:按權相加,十進制轉換成二進制、八進制、十六進制 原理:,方法:連續除以基,從低到高記錄餘數,直至商為0,二進制與八進制之間的轉換 二進制轉換成八進制:從右向左,每3。

2、位一組(不足3位左補0),轉換成八進制 八進制轉換成二進制:用3位二進制數代替每一位八進制數,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二進制與十六進制之間的轉換 二進制轉換成十六進制:從右向左,每4位一組(不足4位左補0),轉換成十六進制 十六進制轉換成二進制:用4位二進制數代替每一位十六進制數,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,。

3、例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,字節和位 內存以字節為單元組成 每個字節有一個地址 一個字節一般由8個二進制位組成 每個二進位的值是0或1,數值的表示方法原碼、反碼和補碼 原碼:最高位為符號位,其餘各位為數值本身的絕對值 反碼: 正數:反碼與原碼相同 負數:符號位為1,其餘位對原碼取反 補碼: 正數:。

4、原碼、反碼、補碼相同 負數:最高位為1,其餘位為原碼取反,再對整個數加1,負數補碼轉換成十進制數:最高位不動,其餘位取反加1,例 補碼:11111001 取反:10000110 加1: 10000111=-7,2.2 數據類型 數據類型總表,數據類型決定: 1. 數據占內存字節數 2. 數據取值範圍 3. 其上可進行的操作,2.3 常量和變量,2.3.1 常量 1.常量的概念 在程序運行過程中,其值不能被改變的量稱為常量。 2.常量的分類 (1)整型常量 例:123 (2)實型常量 例:4.56 (3)字符常量 例:a (4)符號常量 例:PI,2.3.2 變量 1.變量的概念 在程序運行過程。

5、中,其值可以被改變的量稱為變量。 2.變量的兩個要素 (1)變量名。每個變量都必須有一個名字變量名,變量命名遵循標識符命名規則。 (2)變量值。在程序運行過程中,變量值存儲在內存中。在程序中,通過變量名來引用變量的值。,.標識符命名規則 有效字符:只能由字母、數字和下劃線組成,且以字母或下劃線開頭。 有效長度:隨系統而異,但至少前個字符有效。如果超長,則超長部分被捨棄。 例如:由於student_name和student_number的前個字符相同,有的系統認為這兩個變量,是一回事而不加區別。 在TC V2.0中,變量名(標識符)的有效長度為個字符,缺省值為。,C語言的關鍵字不能用作變量名。 。

6、注意:C語言對英文字母的大小敏感,即同一字母的大小寫,被認為是兩個不同的字符。 習慣上,變量名和函數名中的英文字母用小寫,以增加可讀性。 例:在C語言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是同一個變量嗎?,標識符命名的良好習慣見名知意: 所謂“見名知意”是指,通過變量名就知道變量值的含義。通常應選擇能表示數據含義的英文單詞(或縮寫)作變量名,或漢語拼音字頭作變量名。 例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。,4.變量的定義與初始化 在語言中,要求對所有用到的變量,必須先定義、後使用;且稱在定義變量的同時進行。

7、賦初值的操作為變量初始化。,2.4 整型數據,2.4.1 整型常量 整型常量即整常數,在語言中可用三種形式表示: (1)十進制。例如10、36。 (2)八進制(以數字開頭)。例如012。 (3)十六進制(以數字+小寫字母x開頭)。例如0 x36。,2.4.2 整型變量 1.分類 根據佔用內存字節數的不同,整型變量又分為類: (1)基本整型(類型關鍵字為int)。 (2)短整型(類型關鍵字為short int)。 (3)長整型(類型關鍵字為long int)。 (4)無符號整型。無符號型又分為無符號基本整型(unsigned int)、無符號短整型(unsigned short)和無符號長整型(。

8、unsigned long)三種,只能用來存儲無符號整數。,2.佔用內存字節數與值域 上述各類型整型變量佔用的內存字節數,隨系統而異。在16位操作系統中,一般用字節表示一個int型變量,且long型(字節)int型(字節)short型(字節)。 顯然,不同類型的整型變量,其值域不同。 例:PC機中的一個int型變量,其值域為-215(215-1),即-3276832767;一個unsigned型變量的值域為:0(216-1),即065535。 可用sizeof(類型標識符)測量。,如何定義整型變量? int i;/*定義為整型變量*/ i10; /*給i賦以整數10*/ int a10; sh。

9、ort b30; long c 20; unsigned int number20;,例:,#define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,2.5 實型數據,2.5.1 實型變量 語言的實型變量,分為兩種: (1)單精度型。類型關鍵字為float,一般占字節(位)、提供位有效數字。 (2)雙精度型。類型關鍵字為double,一般佔個字節、提供1516位有效數字。,例 float a; a=111111.111; /* a=111111.1*/ double b; b。

10、=111111.111; /* b=111111.111*/,2.5.2 實型常量 實型常量即實數,在語言中又稱浮點數,其值有兩種表達形式: (1)十進制形式。例如3.14、9.8。 (2)指數形式: (e或E之前必須有數字;指數必須為整數)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,例:,#define PRICE 30.52 main() float num,total; num=10.89; total=num*PRICE; printf(“total=%f”, total); ,2.6 字符型數據,2.6.1 字符常量 字符常量的定義 用一對單引號括。

11、起來的單個字符,稱為字符常量。 例如,如 a A ? n 101 字符常量的值:該字符的ASCII碼值 如 A65, a97, 048 , n10 轉義字符 反斜線後面跟一個字符或一個代碼值表示 如 101 -A 012 -n 376 – x61 -a 60 -0 483 -(),例: main() printf(“ ab ct derftgn”); printf(“htibbj k”); ,例 轉義字符舉例 main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); 。

12、,2.6.2 字符變量 字符變量的類型關鍵字為char,一般佔用1字節內存單元。 變量值的存儲字符變量用來存儲字符常量。將一個字符常量存儲到一個字符變量中,實際上是將該字符的ASCII碼值(無符號整數)存儲到內存單元中。 例如, char ch1, ch2; /*定義兩個字符變量:ch1,ch2*/ ch1=a; ch2=b; /*給字符變量賦值*/,一個字符型數據,既可以字符形式輸出,也可以整數形式輸出。,main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,c。

13、h1,ch2); ,main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小寫轉換*/ printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); /*用字符形式輸出一個大於256的數值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ,字符常量與字符串常量不同,字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字。

14、符串結束標誌,例: char ch; ch=“A”;,不同類型數據間的轉換,除上面講的自動轉換外,還有強制轉換。 例如, (double)a (等價於(double)(a) /*將變量a的值轉換成double型*/ (int)(x + y) /*將x+y的結果轉換成int型*/ (float)5 / 2(等價於(float)(5)/2) /*將5轉換成實型,再除以2(=2.5)*/ (float)(5 / 2) /*將5整除2的結果(2)轉換成實型(2.0)*/,2.7 算術運算與算術表達式,1.五種基本算術運算符 +、-、*、/、% (1)關於除法運算/ C語言規定:兩個整數相除,其商為整數。

15、,小數部分被捨棄。例如,5 / 2 = 2。 (2)關於求餘數運算 要求兩側的操作數均為整型數據,否則出錯。,2.運算符的優先級與結合性 1)按運算符的優先級高低次序執行。例如,先乘除後加減。 2)如果在一個運算對象(或稱操作數)兩側的運算符的優先級相同,則按語言規定的結合方向(結合性)進行。 例如,算術運算符的結合方向是“自左至右”,即:在執行“a b + c”時,變量b先與減號結合,執行“a – b”;然後再執行加c的運算。,3.自增、自減運算符+ – 作用:使變量值加1或減1 種類: 前置 +i, -i (先執行i+1或i-1,再使用i值) 後置 i+,i- (先使用i值,再執行i+1或。

16、i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,說明: + – 不能用於常量和表達式,如5+,(a+b)+ 優先級: + – -* / % -+ -,2.8 賦值運算與賦值表達式,1.賦值運算 賦值符號“=”就是賦值運算符,它的作用是將一個表達式的值賦給一個變量。,例 a=3; d=func(); c=d+2; y = (float)5 /。

17、 2;,2.複合賦值運算 C語言規定的10種複合賦值運算符如下: +=,-=,*=,/=,%=; a+b=3;,例 float f; int i; i=10; f=i; 則 f=10.0,例 int i; i=2.56; /結果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表達式值為5,a,b,c值為5,/ b=5;a=5,/表達式值11,c=6,a=11,/表達式值10,a=10,b=4,c=6,/表達式值5,a=5,b=10,c=2,2.9 逗號運算符和逗號表達式,形式:表達式1,表達式2,表達式n 結合性:從左向右 逗號表達式的值:等於表達式n的值 用途:常用於循環for語句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表達式值60,/a=15,表達式值20,/賦值表達式,表達式值18,x=18,/逗號表達式,表達式值18,x=3,/1,2,3,/3,2,3。

原創文章,作者:NAWVX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/329099.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NAWVX的頭像NAWVX
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論