还剩121页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
经典c语言程序设计100例【程序】1题目有、、、个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1234.程序分析可填在百位、十位、个位的数字都是、、、组成所有的排列后再去掉不满足条件的11234排列•程序源代码2main{int i j k;z zprintfC^n;/*以下为三重循环*/fori=l;i5;i++forj=l;j5;j++for k=l;k5;k++{/*确保、、三位互不相同*/if i!=ki!=jj!=k i j k【程序】2题目企业发放的奖金根据利润提成利润低于或等于万元时,奖金可提;利润高于万I1010%10输出两个笑脸*/printf“\l\l\n/*fori=l;ill;i++{forj=l;j=i;j++printfH%c%cn,219,219;printfCXn;【程序11]题目古典问题有一对兔子,从出生后第个月起每个月都生一对兔子,小兔子长到第三个月3后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?.程序分析兔子的规律为数列11,1,2,3,5,8,13,
21.…•程序源代码2main{long fl,f2;int i;fl=f2=l;fori=l;i=20;i++{printfH%12ld%12ld“,fl,f2;;n++getch;【程序题目某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规89]则如下:每位数字都加上然后用和除以的余数代替该数字,再将第一位和第四位交换,第二位和5,10第三位交换程序分析:•程序源代码:L2main{int a,i,aa
[4],t;scanf,,%d,,a;,aa
[0]=a%10;aa[l]=a%100/10;aa
[2]=a%1000/100;aa
[3]=a/1000;fori=0;i=3;i++{aa[i]+=5;aa[i]%=10;fori=0;i=3/2;i++{t=aa[i];aa[i]=aa[3-i];aa[3-i]=t;fori=3;i=0;i-printfn%dn,aa[i];【程序90]题目专升本一题,读结果.程序分析1•程序源代码2#include stdio.h#define M5main;{int a[M]={l,2,3A5}inti=0;j=M-l;whileij{t=*a+i;*a+i=*a+j;*a+j=t;;;i++j--fori=0;im;i++printfn%dn,*a+i;【程序91]题目时间函数举例
1.程序分析1•程序源代码2#include stdio.h#include time.hvoid main{time_t It;/define alongint timevarible*/lt=timeNULL;/*system timeand date*/printfctime;/*english formatoutput*/printfasctimelocaltime;/*tranfer totm*/printfasctimegmtime;/*tranfer toGreenwich time*/【程序92]题目时间函数举例
2.程序分析1•程序源代码2/calculate time*/#include time.h#include stdio.hmain{time_t start,end;int i;start=timeNULL;fori=0;i3000;i++end=timeNULL;printf\l:The differentis%
6.3f\n,difftimeend,start;【程序93]题目时间函数举例3程序分析L•程序源代码3/calculate time*/#include time.h#include stdio.hmain{clock_t start,end;int i;double var;start=clock;fori=0;i10000;i++{printf\l\l\l\l\l\l\l\l\l\l\n;end=clock;printfn\l:The differentis%
6.3f\n,,,doubleend-start;【程序94]题目时间函数举例一个猜数游戏,判断一个人反应快慢版主初学时编的4,.程序分析1•程序源代码2#include time.h#include stdlib.h#include stdio.hmain{char c;clock_t start,end;time ta,b;double var;int i,guess;srandtimeNULL;printfndo youwant toplay it.y orh\n;loop:whilec=getchar==y{i=rand%100;printfn\nplease inputnumber you guess:\n;start=clock;a=timeNULL;scanf%d guess;zwhileguess!=i{ifguessi{printfplease inputa littlesmaller.\n;scanf%d,,guess;}zelse{printf”please inputa littlebigger.\nH;scanf%dn,guess;}end=clock;b=timeNULL;printfn\l:It tookyou%
6.3f seconds\nH,var=doubleend-start/
18.2;printfn\l:it tookyou%6,3f seconds\n\rT,difftimeb,a;ifvar15printfn\l\l Youare veryclever!\l\l\n\nH;else ifvar25printfn\l\l youare normal!\l\l\n\nn;elseprintfn\l\l youare stupid!\l\l\n\rT;printfn\l\l Congradulations\l\l\n\nn;printfThe numberyouguessis%dn,i;printfn\ndo youwant totry itagain\,,yy\,,.or.\,,n\l,\nH;ifc=getch==ygoto loop;【程序95]题目家庭财务管理小程序程序分析•程序源代码:L2/*money managementsystem*/#include stdio.h#include dos.hmainFILE*fp;struct date d;float sum,chm=
0.0;int len,i,j=0;int c;char ch
[4]=,,chl
[16]=,,,,chtime
[12]=,,,l chshop
[16],chmoney
[8];z z zpp:clrscr;sum=
0.0;;gotoxyl,l;printf|-------------------------------------------------------------------------------1gotoxyl,2;printfH|money managementsystemCl.O
2000.03;gotoxyl,3;printf|------------------------------------------------------------------------------1;「;gotoxyl4pnntf|-money records-|-today costlist--z;gotoxyl,5;printf|---------------------------|--------------------------------------1gotoxyl,6;printfH|date:------------------||n;;;gotoxyl7printf|||||z------------------gotoxyl,8;printf|I I;gotoxyl,9;printfH|thgs:----------------------||n;gotoxyl,10;printf||||;---------------------;gotoxyl Hprintf|||/---------------gotoxyl,12;printf|cost:|gotoxyl,13;printf|||||;--------------gotoxyl,14;printf||gotoxyl,15;printf|||;gotoxyl,16;printf|||;gotoxyl,17;printf|||;gotoxyl,18;printf|||;gotoxyl,19;printf|||;gotoxyl,20;printf||gotoxyl,21;printf|||;gotoxyl,22;printf|||;--------------------------------------------------------------------------------------;gotoxyl,23;printf|1i=0;getdated;sprintfchtime/%4d.%02d.%02dn,d.da_yeai;d.da_mon,cl.da_day;for;;{gotoxy3,24;printfn Tab_browse costlist Esc_quit;gotoxy13,10;pnntfn;gotoxy13,13;printfn n;gotoxy13,7;printf%s,,,chtime;;j=18ch[O]=getch;ifch
[0]==27break;;strcpychshop,,,Hstrcpychmoney/;ifch
[0]==9{mm:i=O;fp=fopen,home.dat,,,l,r+,;;gotoxy3,24;printfH;gotoxy6,4printf listrecords;-------------------------------------------;gotoxyl,5;printf|1gotoxy41,4;printf,H;gotoxy41,5;printf|;whilefscanffp/,%10s%14s%f\n,chtime chshop,chm!=EOFz{ifi==36{getch;i=0;}if i%3617{gotoxy4,6+i;控制输出,每行四个*/ifi%2==0printf“\n;/*前两个月加起来赋值给第三个月*/fl=fl+f2;/*前两个月加起来赋值给第三个月*/f2=fl+f2;/*【程序12]题目判断之间有多少个素数,并输出所有素数101-
200.程序分析判断素数的方法用一个数分别去除到这个数,如果能被整除,则表明此数不是素12sqrt数,反之是素数■程序源代码2#include math.hmain{int m,i,k,h=0,leap=l;printf,,\n,,;form=101;m=200;m++{k=sqrtm+l;fori=2;i=k;i++if%i==0m{leap=0;break;}printfn,f;gotoxy4,6+i;}elseifi%3616{gotoxy41,4+i-17;printfH n;gotoxy42,4+i-17;};i++sum=sum+chm;printf%10s%-14s%
6.1f\nH chtime,chshop chm;}z zgotoxyl,23;pnntf,|--------------------------------------------------------------------------------------|H;gotoxyl,24;printf|gotoxyl,25;printfH|--------------------------------------------------------------------------------------|n;gotoxy10,24;printftotaI is%
8.1f$H,sum;fclosefp;・・・・gotoxy49,24;printfpress anykey to.;getch;goto pp;else{whilech
[0]!=,\r,;{ifj10{strncatchtime,ch,lj++;}jfch
[0]==8{len=strlenchtime-l;ifj15{len=len+l;j=ll;}strcpychl/H,;;j=j-2strncatchl,chtime,len;strcpychtime,,,H;strncatchtime chl,len-l;zgotoxy13,7;printf,;}gotoxy13,7;printf%s,,,chtime;ch
[0]=getch;ifch
[0]==9goto mm;ifch
[0]==27exitl;;gotoxy3,24;printfngotoxy13,10;j=0;ch
[0]=getch;whilech[O]!=,\r,{ifj14{strncatchshop,ch,l;j++;ifch
[0]==8{len=strlenchshop-l;strcpychl/H,;;j=j-2strncatchl,chshop,len;strcpychshop/;strncatchshop,chl,len-l;gotoxy13,10;printfn;}gotoxy13,10;printf,%sn,chshop;ch
[0]=getch;}gotoxy13,13;;j=0ch[O]=getch;whilech[O]!=,\r,{if j6;{strncatchmoney,ch,lj++;}ifch
[0]==8{len=strlenchmoney-l;strcpychl/,H;;j=j-2strncatchl,chmoney,len;strcpychmoney/;strncatchmoney,chl,len-l;;gotoxy13,13pnntf;}gotoxy13,13;printfn%sn,chmoney;ch
[0]=getch;}ifstrlenchshop==0||strlenchmoney==0continue;iffp=fopenHhome.dat,,,,,a+,,!=NULL;fprintffp%10s%14s%6s,chtime chshop chmoney;z zzfputcCn:fp;fclosefp;;i++gotoxy41,5+i;printf%10s%-14s%-6s,,chtime,chshopchmoney;z}}【程序96]题目计算字符串中子串出现的次数程序分析•程序源代码:L2#include string.h#include stdio.hmain{char strl
[20],str2
[20],*pl,*p2;int sum=0;printf”please inputtwo strings\nH;scanfH%s%sn,strl,str2;pl=strl;p2=str2;while*pl!=,\01{jf*pl==*p2{while*pl==*p2*p2!=,\0,{pl++;P2++;}else;P1++if*p2==Wsum++;p2=str2;printf%cT,sum;getch;}【程序97]题目从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止.程序分析
1.程序源代码2#include stdio.hnmain{FILE*fp;char ch,filename
[10];scanf%s,,filename;iffp=fopenfilename,HwH==NULL{printfcannot openfile\n;exitO;ch=getchar;ch=getchar;whilech!=#{fputcch,fp;putcharch;ch=getchar;fclosefp;【程序98]题目从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件叶〃中保存est输入的字符串以!结束.程序分析1•程序源代码2#include stdio.hmain{FILE*fp;char str
[100],filename
[10];int i=0;;iffp=fopen,,test,,,w,,==NULL{printfncannot openthe file\nH;exitO;;printfC^lease inputa string:\nngetsstr;whilestr[i]!=,!1{ifstr[i]=,astr[i]=z,str[i]=str[i]-32;fputcstr[i],fp;i++;}fclosefp;fp=fopen“test”,T;fgetsstr;strlenstr+l,fp;printfn%s\n,str;fclosefp;【程序99]题目有两个磁盘文件和各存放一行字母,要求把这两个文件中的信息合并按字母顺序排列,A B,输出到一个新文件中C.程序分析1•程序源代码2#include stdio.hmain{FILE*fp;int i,j,n,ni;char c
[160],t,ch;;iffp=fopen,A,,,r,,==NULL{printf”file Acannot beopened\n;exitO;printfn\n Acontents are:\n;fori=0;ch=fgetcfp!=EOF;i++{c[i]=ch;putcharc[i];fclosefp;ni=i;;iffp=fopennB,,,r,,==NULL{printffile Bcannot beopened\n;exitO;printfn\n Bcontents are:\nn;fori=0;ch=fgetcfp!=EOF;i++{c[i]=ch;putcharc[i];fclosefp;n=i;fori=0;in;i++forj=i+l;jn;j++ifc[i]c[j];{t=c[i];c[i]=c[j]c[j]=t;}printfn\n Cfile is:\nn;fp=fopen,,C,,,nwn;fori=0;in;i++{putcc[i],fp;putcharc[i];fclosefp;【程序100]题目有五个学生,每个学生有门课的成绩,从键盘输入以上数据包括学生号,姓名,三门课成绩,3计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件中“stud”.程序分析
1.程序源代码2#include stdio.hnstruct student{char num
[6];char name
[8];int score
[3];float avr;}stu
[5];mainifleap{printf,%-4d,,,m;h++;ifh%10==0printfH\nn;leap=l;printf,,\nThe totalis%d,h;【程序13]题目打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身例如是一个水仙花数〃,因为的三次方+的三次方+的三次方153153=
153.程序分析利用循环控制个数,每个数分解出个位,十位,百位1for100-
999.程序源代码2main{int i,j,k,n;printf,,water flowernumber is:;forn=100;n1000;n++{分解出百位*/i=n/100;/*分解出十位*/j=n/10%10;/*FILE*fp;input*/fori=0;i5;i++{printfn\n please input No.%d score:\nH,i;printfnstuNo:;scanf%s,,,stu[i].num;printfnname:H;scanf%s,stu[i].name;sum=0;forj=0;j3;j++{printfHscore%d.n,j+l;scanf%d,,,stu[i].score[j];sum+=stu[i].score[j];stu[i].avr=sum/
3.0;;fp=fopen”stud,”w“fori=0;i5;i++iffwritestu[i],sizeofstruct student,l,fp!=lprintfnfile writeerror\n;fclosefp;分解出个位*/k=n%10;/*ifi*100+j*10+k==i*i*i+j*j*j+k*k*k{%printf”-5d”,n;printfn\nH;【程序14]题目将一个正整数分解质因数例如输入打印出90,90=2*3*3*5程序分析对进行分解质因数,应先找到一个最小的质数然后按下述步骤完成n k,如果这个质数恰等于则说明分解质因数的过程已经结束,打印出即可1n,如果但能被整除,则应打印出的值,并用除以的商,作为新的正整数你重复执行第2nvk,n kk n k n,一步如果不能被整除,则用作为的值,重复执行第一步3nkk+1k•程序源代码2/*zheng int is dividedyinshu*/mainint n,i;;printfn\nplease inputa number:\nnscanf%dH,n;printfn%d=n n;zfori=2;i=n;i++{whilen!=i{ifn%i==O{printfn%d*n,i;n=n/i;elsebreak;printfn%dn,n;}【程序15]题目利用条件运算符的嵌套来完成此题学习成绩>分的同学用表示,分之间的用表=90A60-89B示,分以下的用表示60C.程序分析这是条件运算符的基本例子1aba:b■程序源代码2main{int score;char grade;printfplease inputa score\nH;scanfH%d,,score;grade=score=90,A**score=60,B,:,C,;printf%d belongsto%cn,score,grade;【程序16]题目输入两个正整数和求其最大公约数和最小公倍数m n,.程序分析利用辗除法1■程序源代码2main{int a,b,numl,num2,temp;printfplease inputtwo numbers:\n;%scanf”d,%cT,numl,num2;ifnumlnum2{temp=numl;numl=num2;num2=temp;a=numl;b=num2;利用辗除法,直到为为止*/whileb!=O/*b0{temp=a%b;a=b;b=temp;printfgongyueshu:%d\n”,a;printfngongbeishu:%d\nn,numl*num2/a;【程序17]题目输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数.程序分析利用语句,条件为输入的字符不为1while VT.•程序源代码2#include stdio.hmain{char c;int letters=0,space=0,digit=0,others=0;printfplease inputsome characters\nn;whilec=getchar!=,\n,{ifc=,ac=,z,||c=,A,c=,Z,letters++;else ifc==f*space++;else ifc=,0,c=,9,digit++;elseothers++;pnntfall inall:char=%d space=%d digit=%d others=%d\n,I etters,space,digit,others;【程序18]题目其中是一个数字例如(止匕时^s=a+aa+aaa+aaaa+aa...a2+22+222+2222+22222a共有个数相加),几个数相加有键盘控制
5.程序分析关键是计算出每一项的值1■程序源代码2main{int a,n,count=l;long intsn=0,tn=0;printfplease inputa andn\n;scanf,,%d,%d,a,n;printfa=%d,n=%d\n,,,a,n;whilecount=n{tn=tn+a;sn=sn+tn;a=a*10;++count;printfna+aa+...=%ld\nn,sn;【程序19]题目一个数如果恰好等于它的因子之和,这个数就称为完数〃例如.编程6=1+2+3找出以内的所有完数1000•程序源代码2main{static int k
[10];int i,j,n,s;forj=2;j1000;j++{n=-l;;s=jfori=l;ij;i++{ifj%i==O{n++;s=s-i;k[n]=i;ifs==Oprintf,,%d is a wanshu,j;元,低于万元时,低于万元的部分按提成,高于万元的部分,可可提成;万到201010%1075%20万之间时,高于万元的部分,可提成;万到万之间时高于万元的部分,可提成;40205%4060403%万到万之间时,高于万元的部分,可提成高于万元时,超过万元的部分按
60100601.5%,1001001%提成,从键盘输入当月利润求应发放奖金总数?I,程序分析请利用数轴来分界,定位注意定义时需把奖金定义成长整型L•程序源代码2main{long int i;int bonusl,bonus2,bonus4,bonus6,bonusl0,bonus;%scanf“ld”,i;bonusl=100000*
0.1;bonus2=bonusl+100000*
0.75;bonus4=bonus2+200000*
0.5;bonus6=bonus4+200000*
0.3;bonusl0=bonus6+400000*
0.15;ifi=100000bonus=i*
0.1;else ifi=200000bonus=bonusl+i-100000*
0.075;else ifi=400000bonus=bonus2+i-200000*
0.05;else ifi=600000fori=0;in;i++printf,,%d/,,k[i];%printf d\n”,k[n];【程序20]题目一球从米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在100第次落地时,共经过多少米?第次反弹多高?
1010.程序分析见下面注释1•程序源代码2main{float sn=
100.0,hn=sn/2;int n;forn=2;n=10;n++{第次落地时共经过的米数*/sn=sn+2*hn;/*n第次反跳高度*/hn=hn/2;/*n printfnthe total ofroad is%f\nn,sn;printfnthe tenthis%f meter\n“,hn;【程序21]题目猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个以后每天早上都吃了前一天剩下的一半零一个到第天早上想再吃时,见只剩下一个桃子了求第一天共摘了多少10程序分析采取逆向思维的方法,从后往前推断L•程序源代码2main{int day,xl,x2;day=9;x2=l;whileday0第一天的桃子数是第天桃子数加后的倍*/{xl=x2+l*2;/*212x2=xl;day--;printfnthe totalis%d\nH,xl;题目两个乒乓球队进行比赛,各出三人甲队为三人,乙队为三人已抽签决定a,b,c x,y,z比赛名单有人向队员打听比赛的名单说他不和比,说他不和比,请编程序找出三队a xc x,z赛手的名单程序分析判断素数的方法用一个数分别去除到这个数,如果能被整除,L2sqrt则表明此数不是素数,反之是素数.程序源代码2main{是的对手,是的对手,是的对手*/char aj bk cfori=x,;i=,z,;i++forj=,x,;j=z;j++{ifi!=jfork=,x,;k=,z,;k++ifi!=kj!=k{ifi!=xk!=xk!=Nprintforder isa-%c\tb-%c\tc-%c\nn,i,j,k;【程序23]题目打印出如下图案菱形***^Ts^Ts z^x****程序分析先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重循环,第
1.for一层控制行,第二层控制列.程序源代码2main{int i,j,k;fori=0;i=3;i++{forj=0;j=2-i;j++printfn M;fork=0;k=2*i;k++printfn*H;fori=0;i=2;i++{forj=0;j=i;j++printf;fork=0;k=4-2*i;k++printf,,*H;printf,,\n,,;【程序24]题目有一分数序列:…求出这个数列的前项之和2/1,3/2,5/3,8/5,13/8,21/
1320.程序分析请抓住分子与分母的变化规律
1.程序源代码2main{int n,t,number=20;float a=2,b=l,s=0;forn=l;n=number;n++s=s+a/b;这部分是程序的关键,请读者猜猜的作用*/t=a;a=a+b;b=t;/*tprintfnsum is%
9.6f\n,s;【程序25]题目求的和1+2!+3!+…+20!程序分析此程序只是把累加变成了累乘L•程序源代码2main{float n,s=0,t=l;forn=l;n=20;n++{t*=n;s+=t;printfnl+2!+3!...+20!=%e\nH,s;题目利用递归方法求5!.程序分析递归公式1fn=fn_l*4!•程序源代码2#include stdio.hmain{int i;int fact;fori=0;i5;i++printf,,\40%d!=%d\n,,,i,facti;int factjintj;{int sum;ifj==Osum=l;elsesum=j*factj-l;return sum;【程序27]题目利用递归函数调用方式,将所输入的个字符,以相反顺序打印出来5程序分析L•程序源代码3#include stdio.hmain{int i=5;void palinint n;;printf,,\40npalini;printf\n;void palinnint n;{char next;ifn=l{next=getchar;putcharnext;else{next=getchar;palinn-l;putcharnext;【程序28]题目有个人坐在一起,问第五个人多少岁?他说比第个人大岁问第个人岁数,他说比第5424个人大岁问第三个人,又说比第人大两岁问第个人,说比第一个人大两岁最后问3222第一个人,他说是岁请问第五个人多大?
10.程序分析利用递归的方法,递归分为回推和递推两个阶段要想知道第五个人岁数,需知道1第四人的岁数,依次类推,推到第一人岁,再往回推10•程序源代码2agenint n;int c;ifn==l c=10;else c=agen-l+2;returnc;main{printf%d,,,age5;【程序29]题目给一个不多于位的正整数,要求
一、求它是儿位数,
二、逆序打印出各位数字5程序分析学会分解出每一位数,如下解释这里是一种简单的算法,师专数班赵鑫提供
1.002■程序源代码2main{long a,b,c,d,e,x;scanf,,%ld,,x;z分解出万位*/a=x/10000;/*分解出千位*/b=x%10000/1000;/*分解出百位*/c=x%1000/100;/*分解出十位*/d=x%100/10;/*e=x%10;/*分解出个位*/if a!=0printfnthere are5,%ld%ld%ld%ld%ld\n,,,e,d,c,b,a;bonus=bonus4+i-400000*
0.03;else ifi=1000000bonus=bonus6+i-600000*
0.015;elsebonus=bonusl0+i-1000000*
0.01;p^ntfbonus=%d,,,bonus;【程序】3题目一个整数,它加上后是一个完全平方数,再加上又是一个完全平方数,请问该数是多少?
100168.程序分析在万以内判断,先将该数加上后再开方,再将该数加上后再开方,如果开方后110100268的结果满足如下条件,即是结果请看具体分析•程序源代码2#include math.hmain{long int i,x,y,z;for i=l;i100000;i++为加上后开方后的结果*/{x=sqrti+100;/*x100为再加上后开方后的结果*/y=sqrti+268;/*y168else ifb!=0printfMthere are4,%ld%ld%ld%ld\n”,e,d,c,b;else ifc!=0printfn thereare3,%ld%ld%ld\n,,,ed,c;zelse ifd!=0printfHthere are2,%ld%ld\n,,,e,d;else ife!=0printfn thereare l,%ld\nH,e;【程序30]题目一个位数,判断它是不是回文数即是回文数,个位与万位相同,十位与千位相同
512321.程序分析同例129•程序源代码2main{long geshi,qian,wan x;z zscanfH%ldH,x;wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;个位等于万位并且十位等于千位*/ifge==wanshi==qian/*printfthis numberisa huiwen\n;elseprintfthis numberis notahuiwen\n;【程序31]题目请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.程序分析用情况语句比较好,如果第一个字母一样,则判断用情况语句或语句判断第二个字母1if•程序源代码2#include stdio.hvoid main{char letter;printfC^lease inputthe firstletter ofsomeday\nn;当所按字母为时才结束*/while letter=getch!=Y/*Y{switch letter{case S,:printf,,please inputsecond letter\n;ifletter=getch==,a,p^ntf,saturday\n,,;else ifletter=getch==uprintf,,sunday\nn;else printfdata error\n;break;case F:printffriday\rT;break;case,M:printfmonday\n,;break;case T:printfHplease inputsecond letter\nn;ifletter=getch==,uprintftuesday\n;else ifletter=getch==,h,printf,,thursday\n;else printfdataerror\nH;break;case W:printf”wednesday\n;break;default:printfdataerror\nH;【程序32]题目Press anykey tochange coloi;do youwant totry it.Please hurryup!.程序分析1•程序源代码2#include conio.hvoid mainvoidint color;for color=0;color8;color++设置文本的背景颜色*/textbackgroundcolor;/*cprintfThis iscolor%d\r\n\color;cprintfnPress anykey tocontinue\r\nn;;/*输入字符看不见*/getch【程序33]题目学习与函数gotoxy clrscr.程序分析
1.程序源代码2#include conio.hvoid mainvoid{;/*清屏函数*/clrscrtextbackground2;定位函数*/gotoxyl,5;/*cprintfOutput atrow5column l\n;textbackground3;gotoxy20,10;cprintfOutput atrow10column20\nn;【程序34]题目练习函数调用程序分析
1.•程序源代码2#include stdio.hvoid hello_worldvoid{printfnHello,world!\n;void three_hellosvoid{int counter;for counter=1;counter=3;counter++调用此函数*/hello_world;/*void mainvoid{调用此函数*/three_hellos;/*【程序35]题目文本颜色设置程序分析L•程序源代码2#include conio.hvoid mainvoid{int color;for color=1;color16;color++{设置文本颜色*/textcolorcolor;/*cprintfThis iscolor%d\r\n,color;textcolor128+15;cprintfThis isblinking\r\n;【程序36]题目求之内的素数100程序分析•程序源代码:L2#include stdio.h#include math.h#define N101main{int i,j,line,a[N];fori=2;iN;i++a[i]=i;fori=2;isqrtN;i++forj=i+l;jN;j++{ifa[i]!=0a[j]!=0ifa[j]%a[i]==0a[j]=0;}printf“\n“;fori=2,line=0;iN;i++{ifa[i]!=0%{printf”5cT,a[i];line++;}ifline==10{printfC^n;line=0;}【程序37]题目对个数进行排序
10.程序分析可以利用选择法,即从后个比较过程中,选择一个最小的与第一个元素交换,下次类推,19即用第二个元素与后个进行比较,并进行交换8•程序源代码2#define N10main{int i,j,min tem,a[N];z/*input data*/printfplease inputten num:\n;fori=0;iN;i++{printf,,a[%d]=,,i;zscanfn%dH,a[i];}printf“\nfori=0;iN;i++%printf“5d”,a[i];printfn\nn;/*sort tennum*/fori=0;iN-l;i++{min=i;forj=i+l;jN;j++ifa[min]a[j]min=j;tem=a[i];a[i]=a[min];a[min]=tem;/*output data*/printff,After sorted\n;fori=0;iN;i++printfn%5dn,a[i];【程序38]题目求一个矩阵对角线元素之和3*
3.程序分析利用双重循环控制输入二维数组,再将累加后输出1for•程序源代码2main{float a
[3]
[3],sum=0;int i,j;printfplease inputrectangle element:\n;fori=0;i3;i++forj=0;j3;j++scanfC^f^atiltj];fori=0;i3;i++sum=sum+a[i][i];printfnduijiaoxian heis%
6.2fn,sum;【程序39]题目有一个已经排好序的数组现输入一个数,要求按原来的规律将它插入数组中程序分析首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的
1.数,依次后移一个位置•程序源代码2main{inta[ll]={l,4,6,9,13,16,19,28,40,100};int templ,temp2,number;end,i,j;printforiginal arrayis:\nu;fori=0;i10;i++%同printf“5d’i];printfn\nH;如果一个数的平方根的平方等于该数,这说明此数是完全平ifx*x==i+100y*y==i+268/*方数*/【程序】题目输入某年某月某日,判断这一天是这一年的第几天
4.程序分析以月日为例,应该先把前两个月的加起来,然后再加上天即本年的第几天,特殊情况,1355闰年且输入月份大于时需考虑多加一天3•程序源代码:2main intday,month,year;sum leap;zprintfn\nplease inputyearmonth,day\nn;scanf%d,%d,%d,year;month,day;先计算某月以前月份的总天数*/switchmonth/*case l:sum=O;break;case2:sum=31;break;case3:sum=59;break;case4:sum=90;break;printfCInsert anew number:11;%scanf”cT,number;end=a
[9];ifnumberenda
[10]=number;else{fori=0;i10;i++{ifa[i]number{templ=a[i];a[i]=number;forj=i+l;jll;j++{temp2=a[j];a[j]=templ;templ=temp2;break;fori=0;ill;i++【程序40]题目将一个数组逆序输出.程序分析用第一个与最后一个交换1•程序源代码2#define N5main{int a[N]={9,6,5,4/l}/i/temp;printf\n originalarray:\n;fori=0;iN;i++printf,,%4d,,,a[i];fori=0;iN/2;i++{temp=a[i];a[i]=a[N-i-l];a[N-i-l]=temp;printfn\n sorted array:、、;fori=0;iN;i++printf%4dn,a[i];【程序题目学习定义静态变量的用法41]static.程序分析1•程序源代码2#include stdio.hvarfunc{int var=0;static intstatic var=0;printf\40:var equal%d\n var;zprintfn\40:static varequal%d\n,static_var;pnntfn\nH;var++;static var++;void main{int i;fori=0;i3;i++varfunc;【程序42]题目学习使用定义变量的用法aut.程序分析:1•程序源代码2#include stdio.hmain{int i,num;num=2;for i=0;i3;i++{printfn\40:The numequal%d\nn num;znum++;{auto int num=l;printf”\40:The internalblock numequal%d\n,num;num++;【程序43]题目学习使用的另一用法static.程序分析1•程序源代码2#include stdio.hmainint i,num;num=2;fori=0;i3;i++{printf\40:The numequal%d\n,num;num++;{static int num=l;printfn\40:The internalblock numequal%d\nn,num;num++;【程序44]题目学习使用的用法external.程序分析1•程序源代码2#include stdio.hint a,b,c;void add{int a;a=3;c=a+b;void main{a=b=4;add;printfThe valueof cis equalto%d\nH,c;【程序45]题目学习使用定义变量的方法register.程序分析1•程序源代码2void main{register int i;int tmp=0;fori=l;i=100;i++tmp+=i;printfThe sumis%d\nn,tmp;【程序46]题目宏#^的命令练习E1程序分析L•程序源代码3#include stdio.h#define TRUE1#define FALSE0#define SQx x*xvoid main{int num;int again=l;printfn\40:Program willstop ifinput valueless than
50.\n;whileagain{printf\40leaseinputnumber==n;%scanf”d”,num;printfn\40:The squarefor thisnumberis%d\n,,,SQnum;ifnum=50again=TRUE;elseagain=FALSE;【程序47]题目宏#画检命令练习
2.程序分析1•程序源代码2#include stdio.hn宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上、*/#define exchangea,b{\/*int t;\t=a;\a=b;\b=t;\void mainvoid{int x=10;int y=20;printf,,x=%d;y=%d\n,x,y;exchangex,y;printfnx=%d;y=%d\nn,x,y;【程序48]题目宏#^行的命令练习⑶.程序分析
1.程序源代码2#define LAG#define SMA#define EQ==#include stdio.hvoid main{int i=10;intj=20;ifi LAGjprintf\40:%d largerthan%d\nn,ij;else ifiEQ jprintfn\40:%d equalto%d\nn,i,j;else ifiSMA jprintfn\40:%d smallerthan%delseprintfH\40:No suchvalue.\n”;【程序49]题目的综合应用#if#ifdef^U#ifndef程序分析
1.•程序源代码2#include stdio.h#define MAX#define MAXIMUMx,y xyx:y#define MINIMUMx,y xyy:xvoid main{inta=10,b=20;#ifdef MAXprintf\40:The largerone is%d\n,,MAXIMUMa,b;#elseprintfn\4O:The lowerone is%d\nH,MINIMUMa,b;#endif#ifndef MINprintf\40:The lowerone is%d\n,MINIMUMa,b;#elseprintfn\4O:The largerone is%d\nH,MAXIMUMa,b;#endif#undef MAXcase5:sum=120;break;case6:sum=151;break;case7:sum=181;break;case8:sum=212;break;case9:sum=243;break;case10:sum=273;break;case ll:sum=304;break;case12:sum=334;break;default:printfC^ata errorH;break;/*再加上某天的天数*/sum=sum+day;判断是不是闰年*/ifyear%400==0||year%4==0year%100!=0/*leap=l;elseleap=O;如果是闰年且月份大于总天数应该加一天*/ifleap==lmonth2/*2,sum++;printfIt isthe%dth day.,sum;}【程序】5题目输入三个整数请把这三个数由小到大输出x,y,z,.程序分析我们想办法把最小的数放到上,先将与进行比较,如果则将与的值进行交1xx y xyx yprintfn\40:The largerone is%d\n,,,MAXIMUMa,b;#elseprintfn\40:The lowerone is%d\n”,MINIMUMS,b;#endif#define MIN#ifndef MINprintf\40:The lowerone is%d\n,,,MINIMUMa,b;#elseprintfn\4O:The largerone is%d\n,MAXIMUMa,b;#endif【程序50]题目的应用练习#include.程序分析1•程序源代码2文件如下test.h#define LAG#define SMA一个新文件包含#define EQ==#include test.h/*
50.c,test.h*/#include stdio.h void main{int i=10;int j=20;ifi LAGjprintf\40:%d largerthan%d\n”,i,j;else ifiEQ jprintfn\40:%d equalto%delse ifiSMA jprintfn\40:%d smallerthan%d\n,i,j;else;printfn\40:No suchvalue.\n”【程序51]o题目学习使用按位与程序分析L00=0;01=0;10=0;11=1•程序源代码2#include stdio.hmain{int a,b;a=077;b=a3;printfn\40:The abdecimal is%d\n”,b;b=7;printfn\40:The abdecimal is%d\nH,b;【程序52]题目学习使用按位或|.程序分析:10|0=0;0|1=1;1|0=1;1|1=1•程序源代码2#include stdio.hmain{int a,b;a=077;b=a|3;printfn\40:The abdecimal is%d\nn,b;b|=7;printfn\40:The abdecimal is%d\nn,b;【程序53]题目学习使用按位异或人O
1.程序分析0八0=0;0人1=1;1八0=1;lAl=0•程序源代码2#include stdio.hmain{int a,b;a=077;b=aA3;printfn\40:The abdecimal is%d\nn,b;bA=7;printfn\40:The abdecimal is%d\nn,b;【程序54]题目取一个整数从右端开始的〜位a47程序分析可以这样考虑先使右移位1a4设置一个低位全为其余全为的数可用<〈241,0〜〜04将上面二者进行运算3•程序源代码2mainunsigned a,b,c,d;scanf%o,a;b=a4;〜c=~Ov4;d=bc;printfn%o\n%o\n,a,d;【程序55]题目学习使用按位取反〜.程序分析〜〜10=1;1=0;•程序源代码2#include stdio.hmain{int a,b;a=234;b=~a;printfn\40:The a*s1complementdecimal is%d\nn,b;a=^a;printfn\40:The as1complementhexidecimal is%x\nn,a;【程序56]题目画图,学用画圆形circle.程序分析
1.程序源代码2/circle*/#include graphics.hmain{int driver;mode,i;float j=l,k=l;driver=VGA;mode=VGAHI;;initgraphdriver;mode,“setbkcolorYELLOW;fori=0;i=25;i++{setcolor8;;circle310,250,kk=k+j;j=j+
0.3;【程序57]题目画图,学用画直线line程序分析L•程序源代码2#include graphics.hmain{int driverjmodej;float xO,yO,yl,xl;float j=12,k;driver=VGA;mode=VGAHI;;initgraphdrivei;mode,”setbkcolorGREEN;x0=263;y0=263;yl=275;xl=275;fori=0;i=18;i++{setcolor5;linexO,yO,xO,yl;x0=x0-5;y0=y0-5;xl=xl+5;yl=yl+5;;j=j+10x0=263;yl=275;y0=263;fori=0;i=20;i++{setcolor5;linexO,yO,xO,yl;x0=x0+5;y0=y0+5;yl=yl-5;【程序58]题目画图,学用画方形rectangle程序分析利用循环控制个数,每个数分解出个位,十位,百位L for100-999■程序源代码2#include graphics.hmain{int xO,yO,yl,xl,drivei;mode,i;driver=VGA;mode=VGAHI;initgraphdrivei;mode,“;setbkcolorYELLOW;x0=263;y0=263;yl=275;xl=275;fori=0;i=18;i++{setcolorl;rectanglexO,yO,xl,yl;x0=x0-5;y0=y0-5;xl=xl+5;yl=yl+5;;settextstyleDEFAULT_FON7HORIZ_DIR2;zouttextxy150,40,How beautifulit is!;line130,60,480,60;setcolor2;circle269,269,137;【程序59]题目画图,综合例子程序分析•程序源代码:L2#define PAI
3.1415926#define B
0.809#include graphics.h#include math.h main inti,j k,xO,yO,x,y,driver;mode;zfloat a;driver=CGA;mode=CGACO;initgraphdriver;mode/,H;setcolor3;setbkcolorGREEN;x0=150;y0=100;circlex0y0,10;zcirclex0,y0,20;circlex0,y0,50;fori=0;i16;i++a=2*PAI/16*i;x=ceilx0+48*cosa;y=ceilyO+48*sina*B;setcolor2;linexO yOx,y;}z zX Z XZXZX换,然后再用与进行比较,如果则将与的值进行交换,这样能使最小■程序源代码2main{int x,y,z,t;scanf,%d%d%d,,,xy,z;zif xy交换的值*/{t=x;x=y;y=t;}/*x,yifxz交换的值*/{t=z;z=x;x=t;}/*x,zifyz交换的值*/{t=y;y=z;z=t;}/*z,yprintfnsmall tobig:%d%d%d\nn,x,y,z;【程序】6题目用*号输出字母的图案C.程序分析可先用号在纸上写出字母再分行输出1C,•程序源代码2#include stdio.hmainsetcolor3;circlex0,y0,60;/*Make0time normalsize letters*/;settextstyleDEFAULT_FON7HORIZ_DIR O;zouttextxy10,170,press akey;getch;setfillstyleHATCH_FILL,YELLOW;floodfill202,100,WHITE;getch;fork=0;k=500;k++{setcolor3;fori=0;i=16;i++{a=2*PAI/16*i+2*PAI/180*k;x=ceilx0+48*cosa;y=ceilyO+48+sina*B;setcolor2;linexO,yO,x,y;forj=l;j=50;j++{a=2*PAI/16*i+2*PAI/180*k-l;x=ceilx0+48*cosa;y=ceilyO+48*sina*B;linexO,yO,x,y;restorecrtmode;【程序60]题目画图,综合例子.程序分析1■程序源代码2#include graphics.h#define LEFT0#define TOP0#define RIGHT639#define BOTTOM479#define LINES400#define MAXCOLOR15main{int driver;mode,error;int xl,yl;int x2,y2;int dxl,dyl,dx2,dy2,i=l;int count=0;int color=0;driver=VGA;mode=VGAHI;;initgraphdriver;mode,”xl=x2=yl=y2=10;dxl=dyl=2;dx2=dy2=3;while!kbhit{Iinexl,yl,x2,y2;xl+=dxl;yl+=dyl;x2+=dx2;y2+dy2;ifxl=LEFT||xl=RIGHTdxl=-dxl;ifyl=TOP||yl=BOTTOM dyl=-dyl;ifx2=LEFT||x2=RIGHTdx2=-dx2;ify2=T0P||y2=B0TT0Mdy2=-dy2;if++countLINES{setcolorcolor;color=color=MAXCOLOR0:++color;closegraph;【程序61]题目打印出杨辉三角形要求打印出行如下图
10.程序分析111112113311464115101051■程序源代码2main{int i,j;printfC^n;fori=0;i10;i++;{a[i][O]=l;a[i][i]=l}fori=2;i10;i++forj=l;ji;j++a[i][j]=a[i-l][j-l]+a[i-l][j];fori=0;i10;i++{forj=0;j=i;j++printf%5da[i][j];zprintf\n;【程序62]题目学习画点putpixel.程序分析1•程序源代码2#include stdio.h#include graphics.h;int i,j,driver=VGA,mode=VGAHI;initgraphdrivei;mode,“setbkcolorYELLOW;fori=50;i=230;i+=20forj=50;j=230;j++;putpixeli,j,lforj=50;j=230;j+=20fori=50;i=230;i++putpixeli,j,l;【程序63]题目画椭圆ellipse.程序分析1•程序源代码2#include stdio.h#include graphics.h#include conio.hmain{int x=360,y=160,driver=VGA,mode=VGAHI;int num=20,i;int top,bottom;;initgraphdrivei;mode,“top=y-30;bottom=y-30;fori=0;inum;i++{ellipse250,250,0,360,top,bottom;top-=5;bottom+=5;getch;【程序64]题目利用画图ellipse andrectangle.程序分析1■程序源代码2#include stdio.h#include graphics.h#include conio.hint driver=VGA,mode=VGAHI;int i,num=15,top=50;int left=20,right=50;;initgraphdriver;modej”fori=0;inum;i++{ellipse250,250,0,360,right,left;ellipse250,250,0,360,20,top;rectangle20-2*i,20-2*i,10*i+2,10*i+2;right+=5;left+=5;top+=10;getch;【程序65]题目一个最优美的图案.程序分析1•程序源代码2#include graphics.h#include math.h#include dos.h#include conio.h#include stdlib.h#include stdio.h#include stdarg.h#define MAXPTS15#define PI
3.1415926struct PTS{int x,y;;double AspectRatio=
0.85;void LineTDDemovoid{struct viewporttypevp;struct PTSpoints[MAXPTS];int i,j,h,w,xcentei;ycenter;int radius,angle,step;double rads;printfn Movelb/LineTo Demonstration;getviewsettings vp;h=vp.bottom-vp.top;w=vp.right-vp.left;xcenter=w/2;/*Determine thecenter ofcircle*/ycenter=h/2;radius=h-30/AspectRatio*2;step=360/MAXPTS;/*Determine#of increments*/angle=0;/*Begin atzero degrees*/for i=0;iMAXPTS;++i{/*Determine circleintercepts*/rads=doubleangle*PI/
180.0;/*Convertangle toradians*/points[i].x=xcenter+int cosrads*radius;points[i].y=ycenter-int sinrads*radius*AspectRatio;angle+=step;/*Move tonext increment*/circle xcentei;ycenter;radius;/*Draw boundingcircle*/for i=0;iMAXPTS;++i{/*Draw thecords tothe circle*/for j=i;jMAXPTS;++j{/*For eachremainingintersect*/movetopoints[i].x,points[i],y;/*Move tobeginning ofcord*/linetopoints[j].x,points[j].y;/*Draw thecord*/}}main{int drivei;mode;driver=CGA;mode=CGAC0;;initgraphdriver;modej”setcolor3;printfnHello C-world!\nH;;printfn****\n“;pnntfn*\nnprintfn*\nn;printfn****\n【程序】7题目输出特殊图案,请在环境中运行,看一看,c VeryBeautiful!.程序分析字符共有个不同字符,图形不一样1256■程序源代码2#include stdio.hmain{char a=176,b=219;printf1,%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;printfn%c%c%c%c%c\n,,b,a,a,a,b;}setbkcolorGREEN;;}口LinelbDemo【程序66]题目输入个数按大小顺序输出3a,b,c,.程序分析利用指针方法1•程序源代码2/*pointer*/main{int nl,n2,n3;int*pointerl,*pointer2,*pointer3;printfplease input3number:nl,n2,n3:;%scanf d,%d,%cT,nl,n2,n3;pointeri=nl;pointer2=n2;pointer3=n3;ifnln2swappointerl,pointer;ifnln3swappointerl,pointer3;ifn2n3swappointer2,pointer3;printfthe sortednumbers are:%d,%d%d\n,nl,n2,n3;zswappl,p2int*pl*p2;z{int p;;p=*pl*pl=*p2;*p2=p;【程序67]题目输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组.程序分析谭浩强的书中答案有问题1•程序源代码2main{int number
[10];inputnumber;max_minnumber;outputnumber;inputnumberint number
[10];{int i;fori=0;i9;i++scanf,,%d/,number[i];zscanf,,%d,,number
[9];zmax_minarrayint array
[10];{int*max,*min,k,l;int*p,*arr_end;arr_end=array+10;max=min=array;forp=array+l;parr_end;p++if*p*max max=p;else if*p*min min=p;k=*max;l=*min;*p=array[O];array[O]=l;l=*p;*p=array
[9];array
[9]=k;k=*p;return;outputarrayint array
[10];{int*p;forp=array;parray+9;p++;pnntfn%d;*p;printf,,%d\n,,array
[9];z【程序68]题目有个整数,使其前面各数顺序向后移个位置,最后个数变成最前面的个数n m mm.程序分析1•程序源代码2main{int number
[20],n,m,i;;printfnthe totalnumbers is:%scanf”cT,n;printf”back m:;%scanf”cT,m;fori=0;in-l;i++scanfH%d,n number[i];zscanf,,%dH,number[n-l];movenumber;n,m;fori=0;in-l;i++%printf“d,\number[i];printfn%dn number[n-l];zmovearray,n,mint n,m,array
[20];{int*p,array_end;array_end=*array+n-l;forp=array+n-l;parray;p-*p=*p-l;*array=array_end;m-;ifm0movearray,n,m;【程序69]题目有个人围成一圈,顺序排号从第一个人开始报数从到报数,凡报到的人退出圈子,问n133最后留下的是原来第几号的那位程序分析
1.■程序源代码2#define nmax50main{int i,k,m,n,num[nmax],*p;printfnplease inputthetotalof numbers:1;%scanf”d”,n;p=num;fori=0;in;i++*p+i=i+l;i=0;k=0;m=0;whilemn-l{if*p+i!=O k++;ifk==3;*P+0=0k=0;m++;;i++ifi==ni=0;while*p==O p++;printfn%d isleft\n*p;z【程序70]题目写一个函数,求一个字符串的长度,在函数中输入字符串,并输出其长度main.程序分析1•程序源代码2main{int len;char*str
[20];;printfplease inputa string:\nnscanfH%sH,str;len=lengthstr;printfCthe stringhas%d characters/1,len;lengthpchar*p;{int n;n=0;while*p!=\0!{n++;;P++return n;【程序71]题目编写和函数输入,输出个学生的数据记录input output
5.程序分析1■程序源代码2#define N5struct student{char num
[6];char name
[8];int score
[4];}stu[N];inputstustruct studentstu[];{int i,j;fori=0;iN;i++{printf\n pleaseinput%d of%d\n,i+l,N;pnntfnnum:H;scanf%s,,,stu[i].num;printfC^ame:;scanfn%s,,,stu[i].name;forj=0;j3;j++{printfnscore%d.n,j+l;scanfn%dn,stu[i].score[j];;printf\nnprintstustruct studentstu[];{int i,j;;printfn\nNo.Name ScolSco2Sco3\nnfori=0;iN;i++{printfn%-6s%-10s,stu[i].num,stu[i].name;forj=0;j3;j++printfn%-8dH,stu[i].score[j];printf\n;main{input;print;【程序72]题目创建一个链表.程序分析
1.程序源代码2/*creat a list*/#include stdlib.h#include stdio.hnstruct list{int data;struct list*next;;typedef struct list node;typedef node*link;void main{link ptr;head;int num,i;ptr=linkmallocsizeofnode;ptr=head;printfplease input5numbers==\n;fori=0;i=4;i++【程序】题目输出口诀89*9程序分析分行与列考虑,共行歹控制行,控制列L99U,i j•程序源代码2#include nstdio.hmain{int i,j,result;printf\n;for i=l;i10;i++{forj=l;j10;j++{result=i*j;printf,,%d*%d=%-3d,,,i,j,result;/*-3d表示左对齐,占3位*/每一行后换行*/printf“\n”;/*【程序】9题目要求输出国际象棋棋盘.程序分析用控制行,来控制列,根据的和的变化来控制输出黑方格,还是白方格1ij i+jscanfH%d,,num;ptr-data=num;ptr-next=linkmallocsizeofnode;ifi==4ptr-next=NULL;else ptr=ptr-next;ptr=head;whileptr!=NULL{printfnThe valueis==%d\nH,ptr-data;ptr=ptr-next;【程序73]题目反向输出一个链表.程序分析1•程序源代码2reverse outputalist*/#include stdlib.h#include stdio.h struct list{int data;structlist*next;;typedef structlist node;typedef node*link;voidmain{link ptr;head,tail;int num,i;tail=linkmallocsizeofnode;tail-next=NULL;ptr=tail;printf,,\nplease input5data==\n;fori=0;i=4;i++{scanf,,%d,,num;ptr-data=num;head=linkmallocsizeofnode;head-next=ptr;ptr=head;ptr=ptr-next;whileptr!=NULL{printfnThe valueis==%d\nH,ptr-data;ptr=ptr-next;}【程序74]题目连接两个链表.程序分析1•程序源代码2#include stdlib.hn#include stdio.hstruct list{int data;structlist*next;;typedef structlist node;typedef node*link;link delete_nodelink pointei;link tmp{if tmp==NULL/delete firstnode*/return pointer-next;else{iftmp-next-next==NULL/*delete lastnode*/tmp-next=NULL;else/delete theother node*/tmp-next=tm p-next-next;return pointer;void selection_sortlink pointer;int num{link tmp,btmp;int i,min;fori=0;inum;i++{tmp=pointer;min=tmp-data;btmp=NULL;whiletmp-next{ifmintmp-next-data{min=tmp-next-data;btmp=tmp;tmp=tmp-next;printfH\40:%d\nM,min;pointer=delete_nodepointer;btmp;link create_listint array[],intnum{link tmpl,tmp2,pointer;int i;pointer=linkmallocsizeofnode;pointer-data=array
[0];tmpl=pointer;fori=l;inum;i++{tmp2=linkmallocsizeofnode;tmp2-next=NULL;tmp2-data=array[i];tmpl-next=tmp2;tmpl=tmpl-next;return pointer;link concatenatelink pointeri,linkpointer{link tmp;tmp=pointerl;whiletmp-nexttmp=tmp-next;tm p-next=pointer2;return pointeri;void mainvoid;{int arrl[]={3,12,89,ll}zlink ptr;ptr=create_listarrl,5;selection_sortptr;5;【程序75]题目放松一下,算一道简单的题目.程序分析1•程序源代码2main{int i,n;fori=l;i5;i++{n=0;ifi!=ln=n+l;ifi==3n=n+l;ifi==4n=n+l;ifi!=4n=n+l;ifn==3printfC^hu haoshi deshi:%cn,64+i;【程序76]题目编写一个函数,输入为偶数时,调用函数求当输入为奇数时,调用函数n1/2+1/4+…+l/n,n利用指针函数1/1+1/3+…+l/n.程序分析1•程序源代码2main#include stdio.hnmain{float peven,podd,dcall;float sum;intn;while1scanf%dr,,n;ifnlbreak;jfn%2==0{printfnEven=n;sum=dcallpeven,n;else{printf,,Odd=H;sum=dcallpodd,n;float pevenintn{float s;int i;;s=lfori=2;i=n;i+=2s+=l/floati;returns;float poddnintn;{float s;inti;s=0;fori=l;i=n;i+=2s+=l/floati;returns;float dcallfp,nfloat*fp;intn;{float s;s=*fpn;returns;【程序77]题目填空练习指向指针的指针.程序分析
1.程序源代码2main{char*s[]={man”JwomarTJgirFJboyJsister”};char**q;intk;fork=0;k5;k++{;/*这里填写什么语句*/printf,,%s\n,*q;【程序78]题目找到年龄最大的人,并输出请找出程序中有什么问题.程序分析1•程序源代码2#define N4#include stdio.h.程序源代码2#include stdio.hnmain{int ij;fori=0;i8;i++{forj=0;j8;j++ifi+j%2==0elsepnntfH;printfn\nn;【程序10]题目打印楼梯,同时在楼梯上方打印两个笑脸.程序分析用控制行,来控制列,根据的变化来控制输出黑方格的个数1ijji•程序源代码2#include stdio.h mainstaticstruct man{char name
[20];int age;}person[N]={,1i^l8,Hwang,,,19,,,zhang,,,20,,sunn22};z zmain{struct man*q,*p;inti,m=O;p=person;for i=0;iN;i++{ifmp-ageq=p++;m=q-age;}printf,,%s,%d,,*q.name*q.age;zz【程序79]题目字符串排序.程序分析1•程序源代码2main char*strl
[20],*str2
[20],*str3
[20];char swap;;printfnplease inputthree strings\nnscanf“%s”,strl;scanf%sH,str2;scanfH%sH,str3;ifstrcmpstrl,str20swapstrl,str2;ifstrcmpstrl,str30swapstrl,str3;ifstrcmpstr2,str30swapstr2,str3;printfC^fter beingsorted\nn;printfn%s\n%s\n%s\n,,,strl,str2,str3;char swappl,p2char*pl,*p2;{char*p
[20];strcpyp,pl;strcpypl,p2;strcpyp2,p;【程序80]题目海滩上有一堆桃子,五只猴子来分第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第
三、第
四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子.程序分析1•程序源代码2main{int count;fori=4;i10000;i+=4{count=0;m=i;fork=0;k5;k++{j=i/4*5+l;••l=j;ifj%4==0count++;elsebreak;i=m;ifcount==4{printf,,%d\n count;zbreak;}【程序题目其中代表的两位数的结果为两位数,的结果为81]809*=800*+9*+1,8*9*3位数求代表的两位数,及后的结果809*.程序分析
1.程序源代码2outputlong b,long i{printf,,\n%ld/%ld=809*%ld+%ld,,b,i ib%i;//zmain{long int a,b i;za=809;fori=10;i100;i++{b=i*a+l;ifb=1000b=100008*i1009*i=100outputb,i;}【程序82]题目八进制转换为十进制程序分析•程序源代码:L2main{char*p,s
[6];intn;;P=sgetsp;n=0;while*p!=,\O,{n=n*8+*pJ0;;P++}printfH%dn,n;【程序83]题目求所能组成的奇数个数0—
7.程序分析1•程序源代码2main{long sum=4,s=4;intj;forj=2;j=8;j++/*j isplace ofnumber*/{printfH\n%ldn,sum;s*=7;elses*=8;sum+=s;}pnntfH\nsum=%ldn,sum;【程序84]题目一个偶数总能表示为两个素数之和.程序分析1•程序源代码2#include stdio.hn#include math.hmain{inta,b,c,d;scanf%d,a;forb=3;b=a/2;b+=2{forc=2;c=sqrtb;c++ifb%c==O break;ifcsqrtbd=a-b;elsebreak;forc=2;c=sqrtd;c++ifd%c==O break;ifcsqrtdprintfn%d=%d+%d\n,,a,b,d;【程序85]题目判断一个素数能被几个整除
9.程序分析1■程序源代码2main{long intm9=9,sum=9;int zi,nl=l,c9=l;scanfn%d,zi;whilenl!=0{if!sum%zinl=0;else{m9=m9*10;sum=sum+m9;c9++;printf,,%ld,can bedivided by%d\9\H,,,sum,c9;【程序86]题目两个字符串连接程序.程序分析1•程序源代码2#include stdio.hmain{char a[]=nacegikm;char b[]=nbdfhjlnpqn;char c
[80],*p;inti=O,j=O,k=O;whilea[i]!=,\0,b[j]!=,\0,{ifa[i]b[j]{c[k]=a[i];i++;}elsec[k]=b[j++];k++;c[k]=\O;if[i]==\OaP=b+j;else;P=a+i strcatc,p;putsc;【程序87]题目回答结果结构体变量传递.程序分析
1.程序源代码2#include“stdio.h”struct student{int x;char c;;amain{a.x=3;a.c=,a,;;faprintfn%d,%cn,a.x,a.c;fstruct studentb{b.x=20;;b.c=y【程序88]题目读取个数的整数值,每读取一个值,程序打印出该值个数的*71-
50.程序分析
1.程序源代码2main{inti,a,n=l;whilen=7{do{scanf%d,a;}whileal||a50;fori=l;i=a;i++pnntf,,*H;printfn\nH;。