c语言第一次习题课
1,程序中temp表示多项式的某一项,sign代表符号,在每一次循环中,只要改变sign、i的值,就可求出temp。,P79例5-2利用公式求: 求的近似值直到最后一 项的绝对值小于10-4 为止。,#include “math.h“ #include “stdio.h“ void main() int sign=1;float i=1, sum=0,temp=1;while(fabs(temp)>=1e-4) sum=sum+temp;i=i+2;sign=-sign; temp=sign/i; sum=sum*4;printf(“pi=%fn“,sum);,2,例:求100999之间的水仙花数。水仙花数是指一个三位数的各个位数字的立方和是这个数本身,如:153135333,#include main() int a,b,c;for(a=1;a<=9;a+)for(b=0;b<=9;b+)for(c=0;c<=9;c+)if(100*a+10*b+c= =a*a*a+b*b*b+c*c*c)printf(“%d%d%dn“,a,b,c); ,3,方法二:,main() int i,a,b,c;for(i=100;i<=999;i+)if(i=a*a*a+b*b*b+c*c*c)printf(“%dt“,i);,a=i/100; b=i/10%10; c=i%10;,4,题目:输入一组学生成绩,评定其等级。方法是:90100分为“A”,8090分为“B”,7080分为“C”,6070分为“D”,60分以下为“E”,用switch语句来实现。void main() float x;printf(“Enter x=?“);scanf(“%f“, ,答案:1). (int)(x/10)或 (int)x/102). break;3). default,5,题目:下面的程序是求1!+3!+5!+n!的和,程序中有4个 空,填空使程序完整。 main() long int f,s;int i,j,n; 【?】scanf(“%d“, ,答案:1). s=0;2). i+=2 或 i=i+23). j=j4). f=f*j;,6,题目:输出9*9口诀。 main() int i,j,result; printf(“n“); for (i=1;【?】;i+) for(j=1;j<10;【?】) result=i*j; printf(“%d*%d=%-3d“,i,j,【?】); printf(“n“); ,答案:1). ii2). j+ 或 j=j+13). result,7,#include main() int i,n,sum; sum=0; 【?】 for(i=1; 【?】 ;i+) if(【?】)if(i%2= =0)sum=sum+i;n+;printf(“%6d“,i);if(【?】)printf(“n“); printf(“ntotal=%d“,sum); ,答案:1). n=0;2). i<=300 3). i%7=0|i%17=0 4). n%5=0,题目:以下程序的功能是以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。,8,题目:输入3个整数,输出最大数。 void main( ) int a,b,c, max;printf(“input three numbers: “);scanf(“%d%d%d“, ,答案:1). a>b 或 b<a2). else3). max=c;,9,题目:打印如下所示的金字塔图案(最后一行*前无空格)。* * main ( ) int i,j,k;for (i=1;i<=5;i+) for(j=1;j<=【?】;j+)printf(“ “ );for(k=1;k<=【?】;k+)printf(“*“ );【?】; ,答案:1). 5-i 2). 2*i-1 3). printf(“n“),10,题目:用辗转相除法求两个整数的最大公约数、最小公倍数。 void main() int n,m,nm,r,t;printf(“Enter m,n=?“);scanf(“%d%d“, ,答案:1). r!=02). n=r;3). r=m%n;,11,题目:求n!,n值由键盘输入。 void main() int n,i;float t;printf(“please input n(n>=0):“); /*SPACE*/scanf(“%d“,【?】);i=1;t=1.0; /*SPACE*/while(【?】) /*SPACE*/ 【?】i+;printf(“%d!=%f“,n,t); ,答案:1). scanf(“%d“,12,题目:判断一个给定的整数是否为素数。程序中共有4条错误语句,请改正错误。 #include “math.h“ void main( ) int m,i,k; /*FOUND*/scanf(“%d“,m);k=sqrt(m); /*FOUND*/for(i=1;i=k) printf(“Yesn“);elseprintf(“Non“);,答案:1). scanf(“%d“,i+) 3). if(m%i=0)4). if(i>k) 或 if(i=k+1),13,猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。,#include“stdio.h“ void main() int day,x1,x2; day=9; /*FOUND*/ x2=1; while(day>0) /*FOUND*/ x1=(x2+1)/2; x2=x1; /*FOUND*/ day+; printf(“the total is %dn“,x1);,1). x2=1;2). x1=(x2+1)*2;3). day-; 或 day-=1; 或 day=day-1;,14,题目:打印如下所示的金字塔图案。1222333334444444 555555555,答案: 1). for(j=1;j<=5-i;j+) 或 for(j=0;j<5-i;j+) 2). printf(“ “ ); 3). for(k=1;k<=2*i-1;k+) 4). printf(“%c“,48+i ); 或 printf(“%d“,i );,main( ) int i,j,k;for(i=1;i<=5;i+) /*FOUND*/for(j=1;j<=3+i;j+) /*FOUND*/printf(“n“ ); /*FOUND*/for(k=1;k<=2*i+1;k+) /*FOUND*/printf(“%d“,48+i );printf(“n“); ,15,题目:一个5位数,判断它是不是回文数。即12321是回 文数,个位与万位相同,十位与千位相同。 #include“stdio.h“ main( ) /*FOUND*/ long ge,shi,qian;wan,x; scanf(“%ld“, ,答案:1). long ge,shi,qian,wan,x;2). wan=x/10000;3). if (ge=wan&&shi=qian) 或 if (shi=qian&&ge=wan),16,题目:求100以内(包括100)的偶数之和. #include “stdio.h“ main() /*FOUND*/ int i,sum=1; /*FOUND*/ for(i=2;i<=100;i+=1) sum+=i; /*FOUND*/ printf(“Sum=%d n“;sum); getch(); ,答案:1). int i,sum=0;2). for(i=2;i<=100;i+=2)3). printf(“Sum=%d n“,sum);,17,题目:输入一行字符,分别统计出其中英文字母、空 格、数字和其它字符的个数。 main() char c; int letters=0,space=0,digit=0,others=0; printf(“please input some charactersn“); /*FOUND*/ while(c=getchar()='n') /*FOUND*/ if(c>='a',答案: 1). while(c=getchar()!='n') 2). if(c>='a'&&c='A'&&c<='Z') 3). else if(c=' '),18,实验课内容:实验指导书:实验五和实验六,