特别说明:此答案不是标准答案,仅供参考,如有疑问,请与老师共同商量第1章一、单项选择题1-6ACDBBD二、填空题1、机器、过程2、源、解释、编译、目标3、用某种计算机能理解并执行的计算机语言描述解决问题的方法和步骤、分写解决问题的方法步骤并将其记录下来的过程第2章一、单项选择题1-5ACCBB6-10ADDDD二、填空题1、\2、小写3、字母、下划线、32、84、P105、P10-116、函数调用、表达式7、main8、main、main9、/*、*/10、分11、略第3章一、单项选择题1-5CBABB6-10ACBAB11-15AADAD16-20CDCCB21-25CCCDB26-30ACDDC31-34CADC二、填空题1、字符、字符串2、-15、-153、0、655354、2、15、'\0'、06、#define符号常量常量7、48、数据类型符变量名1,变量名2,……9、unsignedint、double、char10、constintnn=199;11、1.012、a/(b*c)13、1、014、非0、0、1、015、116、(x20&&x30)||x-10017、x0||y0||z018、019、1111000020、5、5、321、++、&&22、算术、关系、逻辑、赋值、逗号、条件第4章一、单项选择题1-5BCBDC6-10CBCAB11-15CAADC16-18ADA二、填空题1、顺序、循环2、单分支、双分支、多分支3、直到、当4、#includestdio.h5、输出格式字符串、输出表达式表6、整、短整、无符号、字符、长整、无符号长整、单精度、双精度、单精度、双精度。7、如果e1和e2两个条件都成立,那么就执行语句s。8、如果e1条件成立执行语句s1,如果e1不成立但e2成立则执行语句s2。9、###a=26,b=13,c=19。10、if(a=b){x=1;printf(%d,x);}else{y=2;printf(%d,y);}11、先执行语句然后判断表达式,直到表达式不成立才停止执行语句。12、先判断表达式再执行语句,如果表达式不成立就停止执行语句。13、10三、阅读程序题1、A=65,A=0101,A=0x412、10,4,33、-14、0,8,-225、8,5,26、在循环语句中重复输入数值,如果输入的数值小于0就输出-1,如果输入的数大于0则输出1,如果输入的数值是0则结束循环。7、输出10个数,求这10个数中的奇数之和保存在s1中,偶数之和保存在s2中,最后分别输出s1和s2。8、输出1到99中能被3整除且被10整除余数为1的数。四、程序填空题1、if(xz)x=z2、i=3,s=03、x=14、x%i==05、t3=-t3五、程序设计题1、思路:输入f之后,按照公式计算c即可。#includestdio.hvoidmain(){floatf,c;printf(请输入华氏温度f:);scanf(%f,&f);c=(f-32)*5/9.0;printf(摄氏温度c为%f\n,c);}2、思路:输入a之后,判断如果大于等于0则输出1,否则输出-1。#includestdio.hvoidmain(){inta;scanf(%d,&a);if(a=0)printf(1\n);elseprintf(-1\n);}3、思路:输入一个数之后,先考虑x小于等于1的情况,如果不满足这个条件,则再判断是否小于10,针对每种情况进行计算即可。#includestdio.hvoidmain(){floatx,y;scanf(%f,&x);if(x=1)/*处理x小于等于1的情况*/y=x;else{if(x10)/*处理x大于1小于10的情况*/y=2*x-1;else/*处理x大于等于10的情况*/y=3*x-11;}printf(y=%f\n,y);}4、思路:输入3个数之后,如果a小于b则a为小的,否则b为小的,在这个判断中将小的值保存在min中;最后再判断c是否比min小,如果比min小则c是最小的,否则就是原来的min是最小的。#includestdio.hvoidmain(){floata,b,c,min;scanf(%f%f%f,&a,&b,&c);if(ab)/*如果a比b小则a为小的*/min=a;else/*否则b为小的*/min=b;if(cmin)/*如果c比min还小,则c是最小的*/min=c;printf(最小值为%f\n,min);}5、思路:让输入的数除以10求余得到最后一位数字,然后判断这位数字是否比当前最大的要大,如果比当前最大的要大,则更新maxnum;求得最后一位数之后,让这个数除以10则去掉它的最后一位。依次循环直到这个数变为0。#includestdio.hvoidmain(){shorta;intmaxnum=0;/*假设最大的数开始为0*/scanf(%d,&a);while(a!=0)/*只要a不等于0,表示还没有求完数中每一位的值*/{if(a%10maxnum)/*判断目前这个数的最后一位是否大于最大的*/maxnum=a%10;a=a/10;/*去掉这个数的最后1位*/}printf(最大的数字为%d\n,maxnum);}6、思路:根据题意这个数为3位的数,则本题的循环初值是100,终值是999。在循环题中,对每个i都求出它的个位、十位和百位,然后对这三个数字求他们的立方和,如果等于1099,就输出它。当循环完毕之后就能把100-999中所有满足条件的数字输出。#includestdio.hvoidmain(){intx,a,b,c,i;for(i=100;i1000;i++){x=i;/*将i复给x,下列语句中求出x的个、十、百位就等于是求i的个、十、百位*/a=x%10;/*求x的个位*/x=x/10;b=x%10;/*求x的十位*/x=x/10;c=x%10;/*求x的百位*/if(a*a*a+b*b*b+c*c*c==1099)/*如果个、十、百位的立方和等于1099则输出这个数*/printf(%d,i);}}7、思路:设置3个变量分别保存每一类数的个数,开始时这三个变量的初值均为0。然后在循环体中依次输入10个数(每次循环输入一个),输入一个数之后,判断这个数的类型并使对应类的变量加1。#includestdio.hvoidmain(){intnum,zheng,fu,ling,i;zheng=0;/*保存整数的个数*/fu=0;/*保存负数的个数*/ling=0;/*保存0的个数*/for(i=1;i=10;i++)/*在循环体中,每输入一个数,判断这个数的类型并给对应的变量增加1*/{scanf(%d,&num);if(num0)/*如果为正数*/zheng++;elseif(num0)/*如果为负数*/fu++;else/*为零*/ling++;}printf(正数%d个,负数%d个,零%d个\n,zheng,fu,ling);}8、题目中的!33应该修改为!31思路:这是一种累加运算,n从1开始,每次累加!1n,直到!1n小于10-6。#includestdio.hvoidmain(){inti=2;floate,s,n;/*e表示和,n表示每次被加数的分子,s表示每次的被加数*/e=1;/*第1个被加数1没有规律,所以初值为1*/n=1;/*第1个被加数的分子为1*/s=1;/*第1个被加数为1*/while(s1e-6){e=e+s;/*将被加数累加到e中*//*下列步骤为计算好下一个被加数*/n=n*i;s=1/n;i++;}printf(e的值为%f\n,e);}9、思路:这是一种累加运算,n从1开始,每次累加112n,直到112n小于10-6。#includestdio.hvoidmain(){intn=1;floaty,s;/*y保存累加的和,s表示每次被加的数*/y=0;s=1.0/(n*n+1);/*计算第1个被加数*/while(s1e-6){y=y+s;/*将被加数累加到y中*//*下列步骤为计算好下一个被加数*/n++;s=1.0/(n*n+1);}printf(y=%f\n,y);}10、思路:在循环体中,依次把0x30至0x5f的值用%d以及%c输出即可。#includestdio.hvoidmain(){intx;for(x=0x30;x=0x5f;x++)printf(ASCII码为%d的数值对应字符为%c\n,x,x);}11、方法1:#includestdio.hvoidmain(){inti;for(i=1;i=100;i++)printf(%d的平方为%d\n,i,i*i);}方法2:#includestdio.hvoidmain(){inti;i=1;while(i=100){printf(%d的平方为%d\n,i,i*i);i++;}}方法3:#includestdio.hvoidmain(){inti;i=1;do{printf(%d的平方为%d\n,i,i*i);i++;}while(i=100);}第5章一、单项选择题1-5DCBDA6-10CDDAC11-15ACDCA二、填空题1、0、62、0、03、floats[2][3]={{70.5,85.0,69.5},{92.5,89.5,78.0}};4、s[3][0],s[0][2],s[3][2]5、10说明:n个数用冒泡法需要比较n-1趟,第1趟需要比较n-1个数,第2趟需要比较n-2个数,依次类推。所以本体需要比较4趟,从第1趟到第4趟的比较次数分别为4、3、2、1,所以共比较了10次。6、全部、所有行的前若干个7、#includestdio.h、#includestring.h8、x1小于x2、x1等于x2、x1大于x29、4、s[0]、'\0'三、阅读程序题1、122、223、18104、说明:下列的□表示空格*****□*****□□*****□□□*****□□□□*****5、efabcd6、abcAB7、先输入9个数保存到3行3列的数组a中(程序第4、5行),然后将数组a转置的结果保存到数组b中(程序第6、7行),最后将数组b的所有元素输出(程序第8、9、10、11行)。8、先输入9个数保存到3行3列的数组a中(程序第4、5行),再输入9个数保存的3行3列的数组b中(程序第6、7行),然后将数组a和b中对应下标的元素相加并将相加的结果保存到3行3列的数组c中(程序第8、9行),最后将数组c的所有元素输出(程序第10、11、12、13行)。四、程序填空题1、k=p2、n=strlen(s1)3、s[i]+=32;、i++;4、n%base、[d]5、max_i=min_i=0、max_i=i五、程序设计题1、思路:输入10个数保存到数组a中,然后计算数组a中10个元素之和,最后让这个和除以10就得到平均值。#includestdio.hvoidmain(){floata[10],sum,avg;inti;for(i=0;i10;i++)/*输入10个单精度型数据保存到数组a中*/scanf(%f,&a[i]);sum=0;for(i=0;i10;i++)/*计算这10个元素之和*/sum=sum+a[i];avg=sum/10;/*让10个元素之和除以10即可得到平均值*/printf(所有元素的平均值为:%f\n,avg);}2、思路:先输入10个数保存到数组a中;然后通过一个循环将第一个元素与最后一个元素交换,第2个元素与倒数第2个元素交换,交换到中间即可完成逆序存放;最后输出数组a的元素即可。#includestdio.hvoidmain(){inta[10],i,temp;/*temp用来做交换两个元素的临时变量*/for(i=0;i10;i++)/*输入10个整数保