国二c语言题库(有图)第二题

C语言,解释一下第二题_百度知道
C语言,解释一下第二题
我有更好的答案
这道题已经有争议很长一段时间了。实际上题表达的意思是说想先算y*z的值,再被x除,即x/(y*z)。这么说的话,只有A的值算的是错的,A表示(x*z)/y。
采纳率:65%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。第二题c语言怎么做?_百度知道
第二题c语言怎么做?
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
#include&&stdio.h&#include&&math.h&#define&N&(3)int&main(void){ int&i,j; for(i=-N;i&=N;++i) {
for(j=0;j&2*(N-abs(i))+1;++j)
printf(&*&);
printf(&\n&); } return&0;}
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c语言编程。第二题怎么做?_百度知道
c语言编程。第二题怎么做?
我有更好的答案
#include&stdio.h&void sort(int arr[],int n)//快速排序(降序){ int i,j,k,t;
for(i=0;i&n-1;i++)
for(j=i+1;j&n;j++)
if (arr[k]&arr[j])
{t=arr[i];arr[i]=arr[k];arr[k]=t;}
}}void insert(int
arr[],int n,int var){ int i,j;
for(i=0;i&n;i++)
(arr[i]&var)
for(j=n-1;j&=i;j--)
arr[j+1]=arr[j];}
arr[i]=}int main(void){ int a[20],i,temp[5]; printf(&请输入10个整数:\n&); for(i=0;i&10;i++) scanf(&%d&,&a[i]); sort(a,10); printf(&从大到小排序后:\n&); for(i=0;i&10;i++) printf(&%d &,a[i]); printf(&\n请输入5个整数:\n&); for(i=0;i&5;i++) {
scanf(&%d&,&temp[i]);
insert(a,10+i,temp[i]); } printf(&插入5个数后:\n&); for(i=0;i&15;i++) printf(&%d &,a[i]); return 0;}
#includevoid sort(int arr[],int n)//快速排序(降序){ int i,j,k,t;
for(i=0;i&n-1;i++)
for(j=i+1;j&n;j++)
if (arr[k]&arr[j])
{t=arr[i];arr[i]=arr[k];arr[k]=t;}
}}void insert(int
arr[],int n,int var){ int i,j;
for(i=0;i&n;i++)
(arr[i]&var)
for(j=n-1;j>=i;j--)
arr[j+1]=arr[j];}
int main(void){ int a[20],i,temp[5]; printf("请输入10个整数:\n"); for(i=0;i&10;i++) scanf("%d",&a[i]); sort(a,10); printf("从大到小排序后:\n"); for(i=0;i&10;i++) printf("%d ",a[i]); printf("\n请输入5个整数:\n"); for(i=0;i&5;i++) {
scanf("%d",&temp[i]);
insert(a,10+i,temp[i]); } printf("插入5个数后:\n"); for(i=0;i&15;i++) printf("%d ",a[i]); return 0;}
你这个app是叫啥…手机上居然也能写程序
不过插入的程序能讲解一下吗
不太懂😣
数组是按从大到小排好的,用数组元素依次和待插数做比较,当待插数遇到第一个比它小的数时,就是它插入的位置了,但是先得把从这位置到末尾这些元素依次后移一位,滕出位置,它才能插入。移位的次序是先移最后一个元素,再末二,再末三…直到定位到的位置。这个插入程序只针对降序排序的数组,如果对于升序的数组插入,它就得把里面的比较符号改一个就行了。
#include&stdio.h&void sort(int arr[],int n)//快速排序(降序){ int i,j,k,t;
for(i=0;i&n-1;i++)
for(j=i+1;j&n;j++)
if (arr[k]&arr[j])
{t=arr[i];arr[i]=arr[k];arr[k]=t;}
}}void insert(int
arr[],int n,int var[],int m){ int i,j,k;for(k=0;k&m;k++){
for(i=0;i&n+k;i++)
(arr[i]&var[k])
for(j=n+k-1;j&=i;j--)
arr[j+1]=arr[j];}
arr[i]=var[k];
}}int main(void){ int a[20],i,temp[5]; printf(&请输入10个整数:\n&); for(i=0;i&10;i++) scanf(&%d&,&a[i]); sort(a,10); printf(&从大到小排序后:\n&); for(i=0;i&10;i++) printf(&%d &,a[i]); printf(&\n请输入5个整数:\n&); for(i=0;i&5;i++) {
scanf(&%d&,&temp[i]); } insert(a,10,temp,5); printf(&插入5个数后:\n&); for(i=0;i&15;i++) printf(&%d &,a[i]); return 0;}
采纳率:73%
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。热门搜索:
您现在的位置是: &
> 习题4第二题
习题4第二题
资 源 简 介
从键盘上输入一个字符串存放在一个字符数组中,按照以下规则对其进行加密:其中所有的大
VIP 专区(每个包含40-100个资源包)
您 可 能 感 兴 趣 的
相 关 代 码
相 关 资 源
该 用 户 还 上 传
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员
月度VIP会员您还可以使用以下方式登录
当前位置:&>&&>& > C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案(1-10 全)
C语言程序设计 (何钦铭 ) 高教版 第2版 课后习题答案(1-10 全)
1.3习题参考答案1.对C语言来说,下列标识符中哪些是合法的,哪些是不合法的?total, _debug, Large&Tall, Counter1, begin_ 解答:Large&Tall不合法,其余都合法。2.改写本章1.4节中的流程图1.2,求1~100中能被6整除的所有整数的和。 解答:图1.1 “求1~100中能被6整除的所有整数的和”的流程图11百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆3.改写本章1.4节中的程序,求1~100中能被6整除的所有整数的和,并在编程环境中验证该程序的运行结果。解答:#include &stdio.h&int main(void){int i, sum = 0;for(i = 1; i &= 100; i++)if (i%6 == 0)
sum = sum +printf("%d", sum);return 0;}运行结果:8164.对于给定的整数n(n>1),请设计一个流程图判别n是否为一个素数(只能被1和自己整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构与循环结构。解答: 在流程图中,分支结构和循环结构如图1.2所示,自上而下的2个实线框和2个虚线组成了顺序结构。百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆#include &stdio.h&
int main(void ) {printf("
A\n"); printf("A
A\n"); printf("
A\n"); return 0; } 14百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆2.3练习与习题参考答案2.3.1练习参考答案2-1编写程序,在屏幕上显示一个短句“Programming in C is fun!”。解答:#include &stdio.h&int main(void){printf("Programming in C is fun!\n");return 0;} 2-2下列语句的运行结果是什么?与例2-2的运行结果有何不同?为什么?printf("Programming is fun. And Programming in C is even more fun!\n");解答:运行结果:Programming is fun. And Programming in C is even more fun!例2-2的运行结果分2行显示。原因在于,例2-2中在每条输出语句的结尾都采用了‘\n’换行。 2-3 编写程序,在屏幕上显示如下图案。**********解答:int main(void){printf("* * * *\n * * *\n
*\n");return 0;} 18百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆2-4编写程序,求华氏温度 150°F 对应的摄氏温度(计算公式同例2-3)。解答:#include &stdio.h&int main(void){int celsius,fahr = 150;celsius = 5 * (fahr – 32) / 9;printf("fahr = %d, celsius = %d\n", fahr, celsius);return 0;} 2-5 算术表达式5*(fahr-32)/9能改写成5(fahr-32)/9吗?为什么?如果将其改写为5/9*(fahr-32),会影响运算结果吗?解答:5(fahr-32)/9不是合法的C表达式,因为不能省略运算符*;5/9*(fahr-32)的值为0。2-6 一个物体从100米的高空自由落下,编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10m/s2。解答:#include &stdio.h&int main(void){height = 0.5 * 10 * 3 * 3;printf("height = %.2f\n", height);return 0;} 2-7输入提示和输入语句的顺序应该如何安排?例2-5中,scanf("%d%d%lf", &money, &year, &rate)能改写为scanf("%d%lf%d", &money, &year, &rate)吗?为什么?能改写为scanf("%d%lf%d", &money, &rate, &year) 吗?如果可以,其对应的输入数据是什么? 解答:输入提示在前,输入语句在后。不能改写为scanf("%d%lf%d", &money, &year, &rate),因为%lf与整型变量money不匹配,%d与浮点型变量rate不匹配。与scanf("%d%lf%d", &money, &rate, &year)对应的输入数据为: 3 2-8编写程序,输入华氏温度,输出对应的摄氏温度,计算公式同例2-3。解答:#include &stdio.h&int main(void){int celsius,19百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆scanf("%d", &fahr);celsius = 5 * (fahr - 32) / 9;printf("celsius = %d\n", celsius);return 0;} 2-9编写程序,输入3个整数,计算并输出它们的平均值。解答:#include &stdio.h&int main(void){int a, b,scanf("%d%d%d", &a, &b, &c);average = (a + b + c) * 1.0 / 3;printf("average = %.2f\n", average);return 0;} 2-10编写程序,输入x,计算并输出下列分段函数f(x)的值(保留3位小数)。?1?y?f(x)??x??0x?0x?0解答:#include &stdio.h&int main(void){double x,scanf("%lf", &x);if(x != 0)y = 1 /elsey = 0;printf("f(%.2f) = %.3f\n", x, y);return 0;} 2-11编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt函数求平方根,调用pow函数求幂。 1?5x?0?x?2x?xy?f(x)???x?0?解答:#include &stdio.h&20百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆#include &math.h&int main(void){double x,scanf("%lf", &x);if(x &= 0)y = sqrt(x);elsey = pow(x,5) + 2 * x + 1 /printf("f(%.2f) = %.2f\n", x, y);return 0;} 2-12 编写程序,输入2个整数lower和 upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2°F,计算公式同例2-7。解答:#include &stdio.h&int main(void){int lower,double celsius,scanf("%d%d", &lower, &upper);printf("fahr
celsius\n");for(fahr = fahr &= fahr = fahr + 2){celsius = 5 * (fahr - 32.0)/9 ;printf("%3.0f %6.1f\n", fahr, celsius);}return 0;} 2-13 编写程序,输入一个正整数n,求i?1。 ?in1解答:#include &stdio.h&int main(void){int i,scanf("%d", &n);sum = 0;for(i = 1; i &= i++)sum = sum + 1.0 /printf("sum = %.6f\n", sum);21百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆 }return 0;2-14 编写程序,输入一个正整数n,计算1?13?15?.....的前 n 项之和。解答:#include &stdio.h&int main(void){int i,scanf("%d", &n);sum = 0;for(i = 1; i &= i++)sum = sum + 1.0/(2*i-1);printf("sum = %.6f\n", sum);return 0;} 2-15 编写程序,输入一个正整数n,计算1?14?17?11110?13?16?.....的前 n 项之和。解答:#include &stdio.h&int main(void){int flag, i, n,double item,scanf("%d", &n);sum = 0;flag = 1;denominator = 1;for(i = 1; i &= i++){item = flag * 1.0 /sum = sum +flag = -denominator = denominator + 3;}printf("sum = %.3f\n", sum);return 0;} 2-16 编写程序,输入两个正整数m和n,计算 m! + n!。 解答:#include "stdio.h"22百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆int main(void){int i, m,double fm,scanf("%d%d", &m, &n);fm = 1;for(i = 1; i &= i++)fm = fm *fn = 1;for (i = 1; i &= i++)fn = fn *printf("%d! + %d! = %.0f\n", m, n, fm+fn);return 0;} 2-17 执行下列程序段后,sum的值是for (i = 1; i &= 10; i++){sum = 0;sum = sum +}解答:sum的值是10。 2-18输入一个正整数n,生成一张3的乘方表,输出30到3n的值,可以调用幂函数计算3的乘方。解答:#include &stdio.h&#include &math.h&int main(void){int i,scanf("%d", &n);for(i = 0; i &= i++){mypow = pow(3, i);printf("pow(3,%d) = %.0f\n", i, mypow);}return 0;} 2-19输入一个正整数n,生成一张阶乘表,输出1!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。解答:#include &stdio.h&int main(void)23百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆{int i,double fact(int n);scanf("%d", &n);for(i = 1; i &= i++){myfact = fact(i);printf("%d! = %.0f\n", i, myfact);}return 0;}double fact(int n){product = 1;for(i = 1;i &= i++)product = product *} 2-20 根据下列公式可以算出从n个不同元素中取出m个元素(m≤n)的组合数。编写程序,输入2个正整数m和n(m≤n),计算并输出组合数。要求定义和调用函数fact(n)计算n!,函数类型是double。n!mCn? m!(n?m)!解答:#include "stdio.h"double fact(int n);int main(void){int m,scanf("%d%d", &m, &n);s = fact(n)/(fact(m) * fact(n-m));printf("result = %.0f\n", s);return 0;}double fact(int n){product = 1;for(i = 1;i &= i++)24百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆product = product *}2.3.2习题参考答案1.编写程序,输入两个整数num1和num2,计算并输出它们的和、差、积、商与余数。 解答:#include &stdio.h&int main(void){int num1, num2;scanf("%d%d", &num1, &num2);printf("%d + %d = %d\n", num1, num2, num1+num2);printf("%d - %d = %d\n", num1, num2, num1-num2);printf("%d * %d = %d\n", num1, num2, num1*num2);printf("%d / %d = %d\n", num1, num2, num1/num2);printf("%d %% %d = %d\n", num1, num2, num1%num2);return 0;} 2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分两个“阶梯”:月用电量50千瓦时以内的,电价为0.53元/千瓦时;超过50千瓦时的用电量,电价上调0.05元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。解答:#include &stdio.h&int main(void){double cost,scanf("%d", &repeat);scanf("%lf", &e);if(e &= 50)cost = 0.53 *elsecost = 0.53 * 50 + (e - 50) * 0.58;printf("cost = %.2f\n", cost);return 0;} 3.编写程序,输入实数x和正整数n,计算xn,不允许调用pow函数求幂。解答:#include &stdio.h&int main(void)25百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆{int i,double mypow,scanf("%lf%d", &x, &n);mypow = 1;for(i = 1; i &= i++)mypow = mypow *printf("%.2f\n", mypow);return 0;} 4.编写程序,输入两个正整数m和n,求i?n(i2?1?mi)。解答:#include &stdio.h&int main(void){int i, m,scanf("%d%d", &m, &n);sum = 0;for(i = i &= i++)sum = sum + i * i + 1.0 /
printf("sum = %.6f\n", sum);
return 0;} 5.编写程序,输入一个正整数n,计算 1?23?34565?7?9?11?.....的前 n 项之和。解答:#include &stdio.h&int main(void){int flag, i,double item,scanf("%d", &n);sum = 0;flag = 1;for(i = 1; i &= i++){item = flag * 1.0 * i / (2 * i - 1);
sum = sum +flag = -}26百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆printf("sum = %.3f\n", sum);return 0;} 6.某客户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款额(money)取决于还款月数(month)。客户打算在5~30年的范围内选择还清贷款的年限,想得到一张“还款年限-月还款额表”以供参考。编写程序,输入贷款本金 loan和月利率 rate,输出“还款年限-月还款额表”,还款年限的范围是5~30年,输出时分别精确到年和元。money?loan?rate(1?rate)month(1?rate)month?1解答:#include &stdio.h&#include &math.h&int main(void){double loan, money, mypow,scanf ("%lf%lf", &loan, &rate);printf("
money\n");for(year = 5; year &= 30; year++){mypow = pow(1+rate, 12 * year );money = loan * rate * mypow /( mypow - 1);printf("year=%d
money=%.0f\n", year, money);}return 0;} 7.编写程序,输入一个正整数n,求?n2ii?1,可以调用pow函数求幂。解答:#include &stdio.h&#include &math.h&int main(void){int i,scanf("%d", &n);sum = 0;for(i = 1; i &= i++){sum = sum + pow(2, i);}printf("sum = %.0f\n", sum);27百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆 }return 0;8.编写程序,输入一个正整数n,求型是double。解答:#include &stdio.h&int main(void){int i,double fact(int n);scanf("%d", &n);sum = 0;for(i = 0; i &= i++){sum = sum + fact(i);}printf("sum = %.0f\n", sum);return 0;}double fact(int n){product=1;for(i = 1; i &= i++)product = product *}e??i!i?0n。要求定义和调用函数fact(n)计算n!,函数类2.4实验指导教材参考答案2.4.1基本数据处理一、调试示例:略二、改错题:略三、编程题1.求华氏温度150°F对应的摄氏温度。计算公式如下,其中:c表示摄氏温度,f表示华氏温度。c?55?f??32 9928百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆3.3练习与习题参考答案3.3.1练习参考答案练习3-1
例3-4中使用else-if语句求解多分段函数,为了检查else-if语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。可再给出x=0和x=15时的两种情况。 练习3-2 输入一个整数x,计算并输出下列分段函数 sign(x) 的值。??1,x?0?y?sign(x)??0,x?0?1,x?0?解答:#include &stdio.h&int main(void){int x,百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆printf("Enter x: " );scanf("%d",&x);if(x&0)
y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;} 练习3-3 输入一个正整数n,再输入n个学生的成绩,计算平均成绩,并统计所有及格学生的人数。解答:# include &stdio.h&int main(void){int count, i,double grade,printf("Enter n: ");scanf("%d", &n);total = 0;count = 0;for(i = 1; i &= i++){printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total +if(grade &= 60)
count++;}}printf("Grade average = %.2f\n", total / n);printf("Number of pass = %d\n", count);return 0;} 练习3-4 输入15个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。 解答:#include &stdio.h&int main(void){int blank, digit, letter,blank = digit = letter = other = 0;for(i=1;i&=15;i++){c = getchar();百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆if(c&='a' && c &= 'z' || c&='A' && c &= 'Z')letter++;else if(c&='0' && c &= '9')digit++;else if(c==' '||c=='\n')blank++;elseother++;}printf("letter=%d,blank=%d,digit=%d,other=%d\n", letter, blank, digit, other);return 0;} 练习3-5
输入一个年份year,判断该年是否为闰年。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。解答:# include &stdio.h&int main(void){printf("Enter year: ");scanf("%d", &year);if( (year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)printf("It is a leap year\n");elseprintf("It is not a leap year\n ");return 0;} 练习3-6
在例3-8程序中,如果把 switch 语句中所有的 break 都去掉,运行结果会改变吗?如果有变化,输出什么?为什么?解答:如果去掉所有的break语句,运行结果会改变,输出price = 0.0 ,因为不管choice值与其中某个常量表达式相等,当去掉break语句时,其后的所有语句段都将运行,故每次都将执行到price=0.0语句为止。 练习3-7
输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。例如,输入A,输出90-100。五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59)。解答:#include &stdio.h&int main(void){百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆printf("Input Grade: ");ch = getchar();switch(ch){case 'A': printf("%c 对应的百分制区间是90-100\n",ch);case 'B': printf("%c 对应的百分制区间是80-89\n",ch);case 'C': printf("%c 对应的百分制区间是70-79\n",ch);case 'D': printf("%c 对应的百分制区间是60-69\n",ch);case 'E': printf("%c 对应的百分制区间是0-59\n",ch);default: printf("Invalid input\n");}return 0;}练习3-8查询水果的单价。有4种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤和10.20元/公斤。在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号1~4,显示相应水果的单价(保留两位小数);输入0,退出查询;输入其他编号,显示价格为0。[1] apples[2] pears[3] oranges[4] grapes[0] Exit 解答:#include &stdio.h&int main(void){for(ri=1; ri&=5; ri++){printf("[1] apples\n");printf("[2] pears\n");printf("[3] oranges\n");printf("[4] grapes\n");printf("[0] Exit\n");scanf("%d", &choice);if(choice==0)else {switch(choice){case 1: price=3.00;case 2: price=2.50;case 3: price=4.10;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆case 4: price=10.20;default: price=0;}printf("price=%0.2f\n", price);}}return 0;} 练习3-9 请读者重新编写例3-4的程序,要求使用嵌套的if - else语句,并上机运行。 解答:#include &stdio.h&int main(void){double x,scanf("%lf", &x);if (x &15){y = 2.5 * x - 10.5;}else {if(x&0)y=0;elsey=4*x/3;}printf("f(%.2f)=%.2f\n", x, y);return 0;} 练习3-10 在例3-12中,改写if语句前,y= x + 1;和y= x + 2; 两条语句的执行条件是什么?改写后呢?解答:改写前:y=x+1的执行条件是x&1;
y=x+2的执行条件是1&=x&2。改写后:y=x+1的执行条件是x&1;
y=x+2的执行条件是2&=x。 3.3.2习题参考答案一.选择题1.能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是。A.a &= 10 or a &= 0
B.a &= 0 | a &= 10C.a &= 10 && a &= 0
D.a &= 10 || a &= 02.在嵌套使用if 语句时,C 语言规定else 总是。A.和之前与其具有相同缩进位置的if 配对
B.和之前与其最近的if 配对百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆C.和之前与其最近的且不带else 的if 配对
D.和之前的第一个if 配对3.下列叙述中正确的是。A.break 语句只能用于switch 语句B.在switch 语句中必须使用defaultC.break 语句必须与switch 语句中的case 配对使用D.在switch 语句中,不一定使用break语句?1x?0?4.有一函数y??0x?0 ,以下程序段中错误的是。???1x?0A.if(x & 0) y = 1;
B.y=0;else if(x == 0) y = 0;
if(x & 0) y = 1;else y = -1;
else if(x & 0) y = -1;C.y = 0;
D.if(x &= 0)if(x &= 0);
if(x & 0) y = 1;if(x & 0) y = 1 ;
else y = 0;else y = -1;
else y = -1;5.下列程序段的输出结果是int main(void){int
a = 2, b = -1,c = 2;if(a & b)if(b & 0)
c = 0;else
c++;printf("%d\n",c);return 0;}A.0
D.36.下列程序段的输出结果是int main(void){int x = 1,a = 0,b = 0;switch(x)
b++;case 1:
a++case 2:
a++;b++;}printf("a=%d,b=%d\n",a,b);return 0;}A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=27.在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是。int main(void){百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆int
a,b,s,t;scanf("%d,%d",&a,&b);s = 1; t = 1;if(a & 0) s = s + 1;if(a & b) t = s +else if(a == b) t = 5;else t = 2 *printf("t=%d\n",t);return 0;}A.a&b
D.0&a&b二.填空题1.表示条件:10&x&100或者x&0的C语言表达式是2.若有 请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式。3.已知a=7.5,b=2,c=3.6,则表达式a&b&&c&a||a&b&&!c&b的值为 0
。4.若从键盘输入58,则以下程序段的输出结果是。int main(void){scanf("%d",&a);if(a & 50)
printf("%d",a);if(a & 40)
printf("%d",a);if(a & 30)
printf("%d",a);return 0;}5.下列程序运行的输出结果是。int main(void){char c = ’b’;int k = 4;switch(c)
{case 'a': k = k + 1;case 'b': k = k + 2;case 'c': k = k + 3;}printf("%d\n",k);return 0;} 三.程序设计题1.输入三角形的3条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出"These sides do not correspond to a valid triangle"。在一个三角形中,任意两边之和大于第三边。三角形面积计算公式:百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆area?s(s?a)(s?b)(s?c) ,其中s = (a+b+c)/2解答:#include &stdio.h&#include &math.h&int main(void){int a,b,c;double area,s,scanf("%d%d%d",&a,&b,&c);if((a+b&c)&&(b+c&a)&&(a+c&b)){perimeter=a+b+c;s=(a+b+c)*1.0/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f,perimeter=%.2f\n",area,perimeter);}elseprintf("These sides do not correspond to a valid triangle\n");
return 0;} 2.2011年开始实行新个人所得税法,要求输入月薪salary,输出应交的个人所得税tax。新税法方案如下:tax = rate * (salary-3500)- deduction当 salary ≤3500 时,rate = 0、deduction = 0当 3500 <salary ≤5000 时,rate = 3%、deduction = 0当 5000 < salary ≤ 8000 时,rate = 10%、deduction = 105当 8000 < salary ≤ 12500 时,rate = 20%、deduction = 555当 12500 < salary ≤ 38500 时,rate = 25%、deduction = 1005当 38500 < salary ≤ 58500 时,rate = 30%、deduction = 2755当 58500 < salary ≤ 83500 时,rate = 35%、deduction = 5505当 83500 < salary 时,rate = 45%、deduction = 13505解答:#include&stdio.h&int main(void){double rate,salary,printf("Enter the salary: ");scanf("%lf",&salary);if(salary&=3500) { rate=0;decution=0;}else if(salary&=5000) {rate=0.03;decution=0; }else if(salary&=8000) {rate=0.1;decution=105; }else if(salary&=12500) {rate=0.2;decution=555; }百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆else if(salary&=38500) {rate=0.25;decution=1005; }else if(salary&=58500) {rate=0.3;decution=2755; }else if(salary&=83500) {rate=0.35;decution=5505; }else
{rate=0.45;decution=13505; }tax=rate*(salary-3500)-printf("tax = %.0f\n",tax);return 0;} 3.某城市普通出租车收费标准如下:“起步里程3公里,起步费10元;超起步里程后10公里内,每公里租费2元,超过10公里以上的部分加收50%的回空补贴费,即每公里租费3元。营运过程中,因路阻及乘客要求临时停车的,每5分钟按1公里租费计收。运价计费尾数四舍五入,保留到元。”。编写程序,输入行驶里程(公里)与等待时间(分钟),计算并输出乘客应支付的车费(元)。解答:#include &stdio.h&int main(void){int mile,time,scanf("%d%d",&mile,&time);cost=0;mile=mile+time/5;if(mile&=3)cost=10;else if(mile&=13)cost=10+(mile-3)*2;elsecost=10+10*2+(mile-13)*3;printf("cost=%d\n",cost);return 0;} 4.输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计各等级成绩的个数。成绩分为5个等级,分别为A(90~100)、B(80~89)、C(70~79)、D(60~69)、E(0~59)。 #include &stdio.h&int main(void){int mark, n, i,int counta, countb, countc, countd,printf("Enter n: ");scanf("%d",&n);counta= countb = countc = countd = counte =sum=0;for(i=1; i&=n; i++){百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆scanf("%d",&mark);sum=sum+if(mark&=90) counta++;else if (mark&=80) countb++;else if(mark&=70) countc++;else if(mark&=60) countd++;else counte++;}average=sum*1.0/n;printf("average=%.1f\n",average);printf("A: %d, B: %d, C: %d, D: %d, E: %d\n",counta, countb, countc, countd, counte);
return 0;} 5.输出21世纪所有的闰年。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。解答:#include &stdio.h&int main(void){for(year=2000; year&=2099; year++){if( (year%4==0 && year%100!=0) || (year%400==0))printf("%d\n",year);}return 0;} 3.4实验指导教材参考答案一、调试示例:略二、改错题改正下列程序中的错误,输入三角形的3条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。(源程序error03_2.cpp)在一个三角形中,任意两边之和大于第3边。三角形面积计算公式: area=(s?a)(s?b)(s?c)其中s = (a+b+c)/2输入输出示例(运行2次)第一次运行: Enter 3 sides of the triangle: 5
3area = 7.15; perimeter = 13.00百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆4.3练习与习题参考答案4.3.1练习参考答案练习4-1 在例4-1程序中,如果对item赋初值0,运行结果是什么?为什么?如果将精度改为10–3,运行结果有变化吗?为什么? 解答:如果对item赋初值0,则程序运行结果是pi=0,因为item为0时不满足while循环的执行条件,即不执行循环,故pi值为0。如果将精度改为10-3,运行结果会有变化,因为精度改变意味着while循环的条件改变,精度变大使得while循环次数减少,必然影响到pi的值。百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆 练习4-2 运行例4-2程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。如果第一个输入数据是-1,运行结果是:Grade average is 0,因为第一个输入就是-1,则while循环条件不成立,不执行循环体。 练习4-3 输入一个正实数eps,计算并输出下式的值,直到最后一项的绝对值小于eps。s?1?11111?????? 解答:#include &stdio.h&#include &math.h&int main(void){int denominator,double item, s,flag = 1; denominator = 1 ; item = 1.0; s = 0;scanf(“%lf”,&eps);while(fabs (item) &= eps) {item = flag * 1.0 /s = s +flag = -denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;} 练习4-4 如果将例4-3程序中的do-while语句改为下列while语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据number为0时,上述while循环将不执行,count值仍为0,故输出为0,不符合题目要求。可增加一条if语句来解决上面的问题,在while循环前加上语句“if ( number==0) count=1; ”。 练习4-5 例4-4程序中的第9~15行可以用下列for语句替代吗?为什么?for( i = 2; i &= m/2; i++)if( m%i == 0 ) printf("No!\n");百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆else printf("%d is prime number!\n",m);解答:不能代替,因为只用一个数来除不足以判断该数是否是素数。 练习4-6 输入一个正整数n, 再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。解答:#include &stdio.h&#include &math.h&int main(void){int flag, i, j, k, m,scanf("%d", &n);for(i = 1; i &= i++) {scanf("%d", &m);k = sqrt(m);for(j = 2; j &= j++)if(m % j == 0)if(j & k && m != 1)printf("%d is a prime\n", m);elseprintf("%d is'nt a prime\n", m);}} 练习4-7 输入1个正整数n,计算下式求出e的值(保留2位小数),要求使用嵌套循环。
e?1?1111????? 1!2!3!n!解答:#include "stdio.h"int main(void){int i, j,double e,printf("Input n: ");scanf("%d", &n);e = 1;for (i = 1; i &= i++){t=1;for(j=1;j&=i;j++)t = t *e = e + 1.0/t;}printf("e = %0.2f\n", e);百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆return 0;} 练习4-8 运行例4-8的源程序1时,如果先输入0,即输入数据个数n=0,表示不再输入任何成绩,运行结果是什么?如何修改程序以应对这种情况?解答:当输入数据个数n=0时,由于在for循环外首先得输入一个成绩,故程序仍将等待输入第一个人的成绩,这与输入个数n=0矛盾,可修改如下:#include &stdio.h&int main(void){
int i, mark, max,printf("Enter n: ");scanf ("%d", &n);if (n&0) {printf("Enter %d marks: ", n);scanf ("%d", &mark);
/* 读入第一个成绩 */max =
/* 假设第一个成绩是最高分 */for (i = 1; i & i++ ){scanf ("%d", &mark);if (max & mark)max =}printf("Max = %d\n", max);}return 0;} 练习4-9 运行例4-8的源程序2时,如果输入的第一个数就是负数,表示不再输入任何成绩,运行结果是什么?如何修改程序以应对这种情况?解答:当输入的第一个数就是负数时,将不执行while循环,程序运行结果就是输出所输入的负数。 练习4-10 输入一个正整数n, 再输入n个整数,输出最小值。解答:#include &stdio.h&int main(void){int i , min, n,printf("inputr n: ");scanf("%d", &n);printf("input numbers: ");scanf("%d", &x);min =百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆for (i = 1; i & i++){scanf("%d", &x);if (min & x)
min =}printf("min = %d\n", min);return 0;} 练习4-11 输入一个整数,将其逆序输出。假设正数和负数逆序输出的结果一样。 解答:#include &stdio.h&int main(void){printf("Enter x: ");scanf( “%d”, &x);if (x&0) x=-xwhile (x != 0){digit = x %10;x = x/10 ;printf( "%d
", digit);} 练习4-12 输出100~200之间的所有素数,每行输出8个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。解答:#include &math.h&int main(void){int count, j, k,count=0;for(m = 100; m &= 200; m++){k = sqrt(m);for(j = 2; j &= j++)if(m % j == 0)if(j & k) {printf("%d ", m);count++;if(count%8==0) printf("\n");}}return 0;} 百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆练习4-13 输出菲波那契(Fibonacci)序列的前20项。解答:#include &math.h&int main(void){int i, x1, x2,x1 = 1;x2 = 1;printf ("%d,%d,", x1, x2);for(i = 1; i &= 18; i++){x = x1 + x2;printf("%d,", x);x1 = x2;x2 =}return 0;} 4.3.2习题参考答案一.选择题1.C语言中while和do-while循环的主要区别是。A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句2.下列叙述中正确的是A.break 语句只能用于 switch 语句体中B.continue语句的作用是使程序的执行流程跳出包含它的所有循环C.break 语句只能用在循环体内和 switch 语句体内D.在循环体内使用 break语句和 continue 语句的作用相同3.下列叙述中正确的是A.do-while语句构成的循环不能用其它语句构成的循环来代替。B.do-while语句构成的循环只能用break语句退出。C.用do-while语句构成的循环,在while后的表达式为非零时结束循环。D.用do-while语句构成的循环,在while后的表达式为零时结束循环。4.执行x=-1; do { x=x*x; } while (!x); 循环时,下列说法正确的是A.循环体将执行一次
B.循环体将执行两次C.循环体将执行无限次
D.系统将提示有语法错误5.假设变量s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0),则与以下 程序段s=a;
for(b=1;b&=c;b++) s=s+1; 功能等价的赋值语句是
。A.s=a+b;
D.s=b+c;6.以下程序段的输出结果是。百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆int main(void){int
num = 0,s = 0;while(num &= 2){num++; s +=}printf("%d\n",s);return 0;}A.10
D.17.运行以下程序后,如果从键盘上输入65
14&回车&,则输出结果为。int main(void){int
m,printf("Enter m,n;");scanf("%d%d", &m,&n):while (m!=n){
while (m&n) m=m-n;while (n&m) n=n-m;}printf("m=%d\n",m);return 0;}A.m=3
D.m=08.下列程序段的输出结果是。int main(viod){for(int i=1;i&6;i++) {if( i%2 != 0) {printf("#");}printf("*");}printf("\n");return 0;}A.#*#*#
D.*#*#*二.填空题1.若s=0,执行循环语句"for(i=1; i&=10; i=i+3) s=s+i; "后,i的值为2.下列程序段的输出结果是。int x=2;do {百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆printf(“*”); x--;} while(!x==0);3.下列程序段的功能是计算:s=1+12+123+。则划线处应填int t=0,s=0,i;for(i=1;i&=5;i++) {t=i+ printf("s=%d\n",s);4.以下程序的输出结果是。int main(void){ }5.阅读下列程序并回答问题。main(){
int i, j, k=0, m=0;for(i=0; i&2; i++){;
/* 第6行*/for(j=0; j&3; j++)k++;m++;
/* 第9行*/}printf("k=%d, m=%d\n", k, m); }(1)程序的输出是(2)将第9行改为 " m=m+k; ",程序的输出是 。(3) 将第6行改为"k=0; " ,将第9行改为 " m=m+k; " ,程序的输出是 。6.输入 happy$$new$$year!&回车&,则下列程序的运行结果是int main(void){ int i,word=0; while((c=getchar())!='\n') {
if (c=='$') word=0; else if(word==0) if (c&='a'&&c&='z')
c=c-'a'+'A'; word=1;
word=0;} } int num=0; while(num&6) {
num++; if(num==3) printf("%d,",num);
return 0; else
putchar(c);return 0;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆} 三.程序设计题1.输入一批正整数(以零或负数为结束标志),求其中的偶数和。解答:#include &stdio.h&int main(void){int x,printf("Input integers: ");scanf("%d", &x);sum = 0;while(x&0){if(x%2==0)
sum = sum +scanf("%d", &x);}printf("The sum of the even numbers is %d\n", sum);return 0;} 2.输入1个实数 x,计算并输出下式的值,直到最后一项的绝对值小于10-5(保留2位小数)。要求定义和调用函数fact(n)计算n的阶乘,可以调用pow()函数求幂。x2x3x4s?x????? 2!3!4!解答:#include &stdio.h&#include &math.h&int main(void){double item, s,double fact(int n);scanf("%le", &x);s = 0;item =i = 1;while(fabs(item) &= 0.00001){item = pow(x,i)/fact(i);s = s+i++;}printf("s=%.2f\n", s);return 0;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆}double fact(int n){double result=1;for(i=1;i&=n;i++)result=result*i;} 3.输入一个整数,求它的各位数字之和及位数。例如234的各位数字之和是9,位数是3。 解答:#include &stdio.h&int main(void){int count,printf("Input an integer: ");scanf("%ld", &in);if(in&0) in=-count=0;sum=0;while(in!=0){sum = sum + in%10;in=in/10;count++;}printf("count = %d, sum = %d\n", count, sum);return 0;} 4.输入一个正整数n,输出 2/1+3/2+5/3+8/5 +…的前n项之和,保留2位小数。(该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)解答:#include &stdio.h&int main(void){int i,n,a,b,t;printf("Input n: ");scanf("%d", &n);a=2;b=1;s=0;for(i=1;i&=n;i++){s=s+a*1.0/b;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆t=a;a=a+b;b=t;}printf("s = %.2f\n",s);return 0;} 5.输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。例如,输入2和3,输出246(2 + 22 + 222)。解答:#include &stdio.h&int main(void){int i,long int a, sn,printf("Input a,n: ");scanf("%ld%d", &a, &n);sn=0; tn=0;for(i=1; i&=n; i++){tn=tn+a;sn=sn+a=a*10;}printf("s = %ld\n",sn);return 0;} 6.用一张一元票换1分、2分和5分的硬币(至少各一枚),问有哪几种换法?各几枚? 解答:#include &stdio.h&int main(void){int count, fen1, fen2, fen5;count = 0;for (fen5 = 19; fen5&0; fen5--)for (fen2 = 49; fen2 &0; fen2--){fen1 = 100-5*fen5-2*fen2;if(fen1 & 0)
{count++;printf("fen5:%d,fen2:%d,fen1:%d\n",fen5,fen2,fen1);}}printf("count=%d\n", count);百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆return 0;} 7.求1~10000之间所有满足各位数字的立方和等于它本身的数。例如153的各位数字的立方和是13+53+33=153。解答:#include &stdio.h&int main(void){int i, digit, number,for (i=1; i&=10000; i++){number =sum = 0;while(number!=0){digit = number%10;number = number/10;sum = sum + digit*digit*}if(sum==i) printf("%d\n", i);}return 0;} 8.验证哥德巴赫猜想:任何一个大于等于6的偶数均可表示为两个素数之和。例如6=3+3,8=3+5,…,18=5+13。要求将6~100之间的偶数都表示成两个素数之和,打印时一行打印5组。解答:#include &stdio.h&int prime(int n);int main(void){int i,m;int count=0;for (m=6;m&=100;m=m+2){for (i=3;i&=m/2;i=i+2)if (prime(i)&&prime(m-i)){printf("%d=%d+%d ",m,i,m-i);count++;if(count%5==0) printf("\n");}}return 0;}int prime(int n)百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆{int i,flag=1;if(n==1) flag=0;for(i=2;i&=n/2;i++)if(n%i==0) flag=0;} 9.输入一个长整数,从高位开始逐位分割并输出。例如输入123456,逐位输出:1,2,3,4,5,6。解答:#include &stdio.h&int main(void){long in, temp,scanf("%ld", &in);if(in&0) in=-temp =pow = 1;while(temp&10){pow *= 10;temp /= 10;}while(pow &= 1 ){digit = in/in = in %pow /= 10;printf("%-2d", digit);}printf("\n");return 0;} 10.将一个正整数分解质因数。例如,输入90,输出90=2*3*3*5。解答:#include &stdio.h&int prime(int n);int main(void){int m,scanf("%d",&m);printf("%d=",m);for (i=2; i!=m; i++){百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆if(prime(i)) {if(m%i==0){printf("%d*",i);m=m/i;i--;}}else}printf("%d",i);printf("\n");return 0;}int prime(int n){int flag=1;if(n==1) flag=0;for(i=2;i&=n/2;i++)if(n%i==0) flag=0;} 11.输入两个正整数m和n,求其最大公约数和最小公倍数。解答:#include &stdio.h&int main(void){int m, n, j,do{scanf("%d", &m);scanf("%d", &n);}while(m&0||n&0);j =while(j % n != 0)j = j +k = (m * n) /printf("最小公倍数是%d,最大公约数是%d\n", j, k);return 0;} 12.一球从100米高度自由落下,每次落地后反跳回原高度的一半,然后再落下再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆解答:#include &stdio.h&int main(void){double distance,distance = 100;height=100;for(i = 1; i &= 10; i++){height = height*0.5;distance = distance +2*}printf("distance=%.1f,height=%.1f\n", distance, height);
return 0;} 13.打印出以下图案:** * ** * * * ** * * * * * ** * * * ** * **解答:#include &stdio.h&int main(void){int i,for (i=1; i&=4; i++){for(j=2*(4-i);j&0;j--)printf(" ");for(j=1;j&=2*i-1;j++)printf("* ");printf("\n");}for (i=1; i&=3; i++){for(j=1;j&=2*i;j++)printf(" ");for(j=1;j&=2*(4-i)-1;j++)printf("* ");printf("\n");}return 0;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆}14.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子?(提示:采取逆向思维的方法,从后往前推断。)解答:#include &stdio.h&int main(void){int i,peach = 1;for(i = 1; i & 10; i++){peach = 2 * peach + 1;}printf("%d\n", peach);} 4.4实验指导教材参考答案4.4.1基本循环语句的使用一、调试示例:略二、改错题改正下列程序中的错误,输入1个正实数eps,计算并输出下式的值,精确到最后一项的绝对值小于eps(保留6位小数)。请使用do…while语句实现循环。(源程序error04_2.cpp)11111s?1??????..... 输入输出示例 Input eps: 1E-4 s = 0.835699源程序(有错误的程序)行号 源程序1 #include&stdio.h&2 int main(void)3 {4
int flag,n;5
double eps,item,s;67
printf("Input eps: ");8
scanf("%lf",&eps);9
flag = 1;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆 5.3练习与习题参考答案5.3.1练习参考答案5-1输入一个正整数n,输出1~n之和。要求自定义函数求1~n之和,写出函数定义和调用函数。若要计算m~n(m&n)之和,又该如何定义?解答:#include &stdio.h&int main(void){int sum(int n);scanf("%d", &n);printf("sum = %d\n", sum(n));return 0;}int sum(int n){int result,result = 0;for(i = 1; i &= i++)result = result +}若要计算m~n(m&n)之和,则需要在main()中定义2个变量m和n:scanf("%d%d", &m, &n);printf("sum = %d\n", sum(m, n));同时在函数定义时需设置2个行参:int sum(int m, int n){int result,百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆result = 0;for(i = i &= i++)result = result +} 5-2输入2个数,输出其中较大的数。要求定义和调用函数max(a, b)找出并返回a、b中较大的数。解答:#include &stdio.h&int main(void){int a, b,int max(int a, int b);scanf("%d%d",&a, &b);maximum = max(a, b);printf("max(%d,%d) = %d\n", a, b, maximum);return 0;}int max(int a, int b){if(a & b)else} 5-3 输入一个正整数n,输出n行数字金字塔。解答:#include &stdio.h&int main(void){void pyramid(int n);scanf("%d", &n);pyramid(n);return 0;}void pyramid(int n){int i,for(i = 1; i &= i++){for(j = 1; j &= n - j++)printf(" ");百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆for(j = 1; j &= j++)printf("%d ", i);putchar('\n');}} 5-4思考:若把例5-9中静态变量f定义成普通局部变量,还能实现计算n!吗?请上机检验。若把f换成全局变量又会如何?解答:若把例5-9中静态变量f定义成普通局部变量,无法实现计算n!,因为函数返回后f单元被系统回收,不再保存原有数据。若把f换成全局变量,则能实现计算n!,因为f的作用范围和生命周期一直存在。5.3.2习题参考答案一、选择题1.在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为
D.int2.下列程序的输出结果是
。fun(int a, int b, int c){
}int main(void){fun(2, 3, c);printf(”%d\n”, c);return 0;}A.0
D.无法确定3.建立自定义函数的目的之一是
。A.提高程序的执行效率
B.提高程序的可读性C.减少程序的篇幅
D.减少程序文件所占内存4.以下正确的函数定义形式是
。A.double fun(int x, int y)
B.double fun( int y)C.double fun(int x, int y);
D.double fun(int x, y)5.以下不正确的说法是
。A.实参可以是常量、变量或表达式
B.实参可以是任何类型C.形参可以是常量、变量或表达式
D.形参应与对应的实参类型一致6.以下正确的说法是
。A.实参与其对应的形参共同占用一个存储单元B.实参与其对应的形参各占用独立的存储单元C.只有当实参与其对应的形参同名时才占用一个共同的存储单元D.形参是虚拟的,不占用内存单元 二、填空题百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆1.下列程序的输出结果为 2 3 5 7
。#include &stdio.h&int fun3(int m);int main(void){for (n = 1; n & 10; n++)if (fun3(n) == 1) printf("%d
", n);return 0;}int fun3(int m){if (m == 2 || m == 3) return 1;if (m & 2 || m % 2 == 0) return 0;for (i = 3; i & i = i + 2)if (m % i == 0) return 0;return 1;}2.输入若干个正整数,判断每个数从高位到低位各位数字是否按值从小到大排列,请根据题意,将程序补充完整。#include &stdio.h&int main(void){scanf("%d", &n);while (n & 0) {if(fun1(n))printf("%d中各位数字按从小到大排列\n", n);scanf("%d", &n);}}{while(m)if( m / 10 % 10 & k) return 0;return 1;}3.下列函数输出一行字符:先输出kb个空格,再输出n个指定字符(由实参指定)。请根据题意,将程序补充完整。#include &stdio.h& { 百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆) printf(“%c”, zf);} 三、程序设计题1.输入x,计算并输出下列分段函数 f(x) 的值。要求定义和调用函数sign(x) 实现该分段函数。 x > 0x = 0-1
x < 0解答:#include &stdio.h&int main(void){int sign(int x);int x,scanf("%d",&x);y = sign(x);printf("sign(%d) = %d\n", x, y);return 0;}int sign(int x){if(x&0)
y=1;else if (x==0) y=0;else y=-1;} 2.输入一批正整数(以零或负数为结束标志),求其中的奇数和。要求定义和调用函数even(n) 判断数的奇偶性,当n为偶数时返回1,否则返回0。解答:#include &stdio.h&int even(int n);int main(void){int n,scanf("%d",&n);sum = 0;while(n & 0){if(even(n) == 0) sum = sum +scanf("%d", &n);}printf("The sum of the odd numbers is %d.\n", sum);百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆return 0;}int even(int n){if (n % 2 == 0)y = 1;elsey = 0;} 3.输入精度e,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e, x)求余弦函数的近似值。x0x2x4x6cos(x)???????? 0!2!4!6!解答:#include "stdio.h"#include "math.h"double funcos(double e, double x);int main(void){double e, sum,scanf("%le%le", &e, &x);sum = funcos(e, x);printf("cos = %f\n", sum);return 0;}double funcos(double e, double x){int flag,double item, sum, tmp, flag = 1;power = 1;tmp = 1;i = 0;item = 1;sum = 0;while(fabs(item) &= e){item = flag * power /sum = sum +power = power * x *百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆tmp = tmp * (i+1) * (i+2);flag = -i = i + 2;}} 4.输入两个正整数m和n(1&=m, n&=500),统计并输出m 和n之间的素数的个数以及这些素数的和。要求定义并调用函数prime(m)判断m是否为素数。解答:#include "stdio.h"#include "math.h"int main(void){int count, i, m, n,int prime(int m);scanf("%d%d", &m, &n);count = sum = 0;for(i = i &= i++)if(prime(i) != 0){count++;sum = sum +}printf("Count = %d, sum = %d\n", count, sum);return 0;}int prime(int m){int k,if(m == 1) return 0;k = sqrt(m);for(i = 2; i &= i++)if(m % i == 0) return 0;return 1;} 5.输入两个正整数a和n, 求a+aa+aaa+aa…a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。例如,fn(3,2)的返回值是33。解答:#include &stdio.h&int main(void){int a, i,百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆long fn(int a, int n);scanf("%ld%d", &a, &n);sn = 0;for(i = 1; i &= i++)sn = sn + fn(a, i);printf("%ld\n", sn);return 0;}long fn(int a, int n){tn = 0;for(i = 1; i &= i++)tn = 10 * tn +} 6.读入一个整数,统计并输出该数中2的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(12292,2)的返回值是3。解答:#include "stdio.h"int main(void){int count, digit,int countdigit(int number, int digit);scanf("%d%d", &in, &digit);count = countdigit(in, digit);printf("Number %d of digit %d: %d\n", in, digit, count);return 0;}int countdigit(int number, int digit){if(number & 0) number = -count = 0;do{if(number % 10 == digit) count++;number = number / 10;}while(number != 0);} 百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆7.输入两个正整数m和n(1&=m,n&=10000),输出m ~ n之间所有的Fibonacci数。Fibonacci 序列(第1项起):1
21……要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。解答:#include "stdio.h"#include "math.h"int main(void){int i, m,long fib(int n);scanf("%d%d", &m, &n);i = f = 1;while(f &= n){if(f &= m)
printf("%ld ", f);i++;f = fib(i);}printf("\n");return 0;}long fib(int n){long x1, x2,if(n == 1 || n == 2)return 1;else{x1 = x2 = 1;for(i = 3; i &= i++){x = x1 + x2;x1 = x2;x2 =}}} 8.输入两个正整数m和n(1&=m,n&=1000),输出m ~ n之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如,factorsum(12)的返回值是16(1+2+3+4+6)。解答:#include "stdio.h"int main(void)百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆{int i, m,int factorsum(int number);scanf("%d%d", &m, &n);for(i = i &= i++)if(factorsum(i) == i)printf("%d ", i);printf("\n");return 0;}int factorsum(int number){int i,if(number == 1) return 1;sum = 0;for(i = 1; i &= number/2; i++)if(number % i==0)sum = sum +} 9.输入两个正整数m和n(1&=m,n&=1000),输出m ~ n之间的所有满足各位数字的立方和等于它本身的数。要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身,若相等则返回1,否则返回0。解答:#include "stdio.h"int main(void){int i, m,int is(int number);scanf("%d%d", &m, &n);printf("result:\n");for(i = i &= i++)if(is(i) != 0)printf("%d\n", i);return 0;}int is(int number){int digit, sum,temp =sum = 0;while(temp != 0){digit = temp % 10;百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆
欢迎转载:
相关推荐:}

我要回帖

更多关于 2017国二c语言题库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信