1、%dn,a);gongbeishu:,num1*num2/a); getch();【程序17】输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。利用while语句,条件为输入的字符不为n. char c; int letters=0,space=0,digit=0,others=0;please input some charactersn while(c=getchar()!=) if(ca&cAZ letters+; else if(c= space+; else if(c09 digit+; else others+;all in all:char=%d space=%d
2、 digit=%d others=%dn,letters, space,digit,others);76【程序18】求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。关键是计算出每一项的值。 int a,n,count=1; long int sn=0,tn=0;please input a and nna,&n);a=%d,n=%dn,a,n); while(count=n) tn=tn+a; sn=sn+tn; a=a*10; +count;a+aa+.=%ldn,sn);【程序19】一
3、个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。1. 程序分析:请参照程序-上页程序14. static int k10; int i,j,n,s; for(j=2;j1000;j+) n=-1; s=j; for(i=1;ij;i+) if(j%i)=0) n+; s=s-i; kn=i; if(s=0)%d is a wanshu,j); for(i=0;n;%d,k);,kn);【程序20】一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?见下面注释 float sn
4、=100.0,hn=sn/2; int n; for(n=2;n0) x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day-;the total is %dn,x1);【程序22】两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/ for(i=x;
5、 for(j= if(i!=j) for(k=kk+)=k&j!=k)k!order is a-%ctb-%ctc-%cn,i,j,k);【程序23】打印出如下图案(菱形) * *先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。 int i,j,k;=3; for(j=0;=2-i; for(k=0;=2*i;*=2;=i;=4-2*i;【程序24】有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。请抓住分子与分母的变化规律。 int n,t,number=20; float a=2,b=1
6、,s=0; for(n=1;=number; s=s+a/b; t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/sum is %9.6fn,s);【程序25】求1+2!+3!+.+20!的和此程序只是把累加变成了累乘。 float n,s=0,t=1;=20; t*=n; s+=t;1+2!.+20!=%en【程序26】利用递归方法求5!。递归公式:fn=fn_1*4! int i; int fact();5;40:%d!=%dn,i,fact(i);int fact(j)int j; int sum; if(j=0) sum=1; sum=j*fact(j-1);
7、return sum;【程序27】利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 int i=5; void palin(int n); palin(i);void palin(n)int n; char next; if(n=1) next=getchar();n0: putchar(next); palin(n-1);【程序28】有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?利用递归的方法,递归分为回推和递推两个阶
8、段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。age(n) int c; if(n=1) c=10; else c=age(n-1)+2; return(c);%d,age(5);【程序29】给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)main( ) long a,b,c,d,e,x;%ldx); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100
9、/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf(there are 5, %ld %ld %ld %ld %ldn,e,d,c,b,a); else if (b!there are 4, %ld %ld %ld %ldn,e,d,c,b); else if (c! there are 3,%ld %ld %ldn,e,d,c); else if (d!there are 2, %ld %ldn,e,d); else if (e! there are 1,%ldn,e);【程序30】一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相
10、同,十位与千位相同。同29例 long ge,shi,qian,wan,x; wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if(ge=wan&shi=qian)/*个位等于万位并且十位等于千位*/this number is a huiwennthis number is not a huiwenn【程序31】请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。void main() char letter;plea
11、se input the first letter of somedayn while(letter=getch()!Y)/*当所按字母为Y时才结束*/ switch (letter) case S:printf(please input second lettern if(letter=getch()=saturdayn else if (letter=getch()=usundayn else printf(data errorn break;Ffridaynbreak;MmondaynTtuesdaynhthursdaynWwednesdayn default:【程序32】Press a
12、ny key to change color, do you want to try it. Please hurry up!void main(void) int color; for (color = 0; color 8; color+) textbackground(color);/*设置文本的背景颜色*/ cprintf(This is color %drn, color);Press any key to continuern/*输入字符看不见*/【程序33】学习gotoxy()与clrscr()函数 clrscr();/*清屏函数*/ textbackground(2); gotoxy(1, 5);/*定位函数*/Output at row 5 column 1n textbackground(3); gotoxy(20, 10);Output at row 10 column 20n【程序34】练习函数调用void hello_world(void)Hello, world!void three_hellos(void)
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2