资源描述:
《C语言题库答案第6章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、参考答案:第六章一、选择题:1、D2、B3、C4、D5、B6、C7、1008、C9、C10、B11、C二、填空题:1、10242、-13、结束本次循环,后进行循环的条件判定,即不终止整个循环的执行过程终止整个循环的执行,不再进行条件判定。4、一个循环体内包括另一个完整的循环结构。5、switch-case语句循环三、编程序:1、main(){inti,s=0;for(i=1;i<=101;i+=2)if((i-1)%4==0)s+=i;elses-=i;printf(“%d”,s);}2、main(){intn,count=0;printf(“”);for(n=1800;n<2001;n+
2、+)if((n%4==0)&&(n%100!=0)
3、
4、(n%400==0)){printf(“%6d”,n);count++;if(count%3==0)printf(“”);}}3、[程序分析] 在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:[源程序]#include"math.h"main(){longinti,x,y,z;for(i=1;i<100000;i++) {x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的
5、结果*/ if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ printf("%ld",i); }}4、[程序分析] 分行与列考虑,共9行9列,i控制行,j控制列。[源程序]#include"stdio.h"main(){ inti,j,result; printf(""); for(i=1;i<10;i++) {for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
6、} printf("");/*每一行后换行*/ }}5、[程序分析] 对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。[源程序]main(){intn,i;printf("pleaseinputanumber:");scanf("%d",&n);printf("%d=",n);for(
7、i=2;i<=n;i++) { while(n!=i) { if(n%i==0) {printf("%d*",i); n=n/i; } else break; }}printf("%d",n);}6、[程序分析] 利用while语句,条件为输入的字符不为''.[源程序]#include"stdio.h"main(){charc; intletters=0,space=0,digit=0,others=0; printf("pleaseinputsomecharacters"); while((c=getchar())!='') { if(c>=
8、'a'&&c<='z'
9、
10、c>='A'&&c<='Z') letters++; elseif(c=='') space++; elseif(c>='0'&&c<='9') digit++; else others++;}printf("allinall:char=%dspace=%ddigit=%dothers=%d",letters,space,digit,others);}7、[源程序]main(){staticintk[10];inti,j,n,s;for(j=2;j<1000;j++) { n=-1; s=j; for(i=1;i<=j;i
11、++) { if((j%i)==0) { n++; s=s-i; k[n]=i;j=j/i; } } if(s==0) { printf("%disawanshu",j); for(i=0;i printf("%d,",k[i]); printf("%d",k[n]); }}}8、[程序分析] 采取逆向思维的方法,从后往前推断。[源程序]main(){intda