-第三章上机实验2-switch语句习题-答案
c程序设计实验参考答案
main( )
{ float a,b,c;
float s,v;
scanf("%f,%f,%f,%f",&a,&b,&c);
s=a+b+c;
v=s/3.0;
printf("\n%7.1f,%7.1f",s,v);
}
实验五参考答案
一.1、a=10,b=30,c=10
}
2、main()
{int i;
double m=100000,n,s;
n=0.01;
s=0;
for(i=1;i<=30;i++)
{s+=n;
n=n*2;
}
printf("%f %f\n",s,m*30 );
}
实验八参考答案:
一.1、s=12345
2、7,
5,
3,
3、<1,2>=6
二.1、% for(j=k;j>0;j--)
第4行改为scanf("%d",&a[i]);
第12行改为printf("av=%d\n",av);
四.1、分析:C中数组长度必须是确定大小,即指定N的值。排序的方法有多种,取出其中两种作为参考。
方法一:起泡排序
从第一个数开始依次对相邻两数进行比较,如次序对则不做任何操作;如次序不对则使这两个数交换位置。第一遍的(N-1)次比
{ case 10:
case 9: ch='A'; break;
case 8: ch='B'; break;
C语言上机4Switch和循环结构-答案
C语言上机4Switch和循环结构-答案C语言上机四逻辑及循环结构程序设计一、上机目的1.熟练掌握switch语句;2.熟练掌握switch语句中break语句的作用。
3.熟练使用while、do-while语句实现循环程序设计4.理解循环条件和循环体,以及for、while和do-while语句的相同及不同之处二、上机内容输入程序,观察输出结果,并对输出结果做出合理的解释。
1)switch#includeint main(){int a;printf("input integer number: ");scanf("%d",&a);switch (a){case 1:printf("Monday\n"); break;case 2:printf("Tuesday\n"); break;case 3:printf("Wednesday\n"); break;case 4:printf("Thursday\n"); break;case 5:printf("Friday\n"); break;case 6:printf("Saturday\n"); break;case 7:printf("Sunday\n"); break;default:printf("error\n");}return 0;}观察输出结果如何修改程序,加上break语句,使程序能够正确输出。
2)switch与break语句#include"stdio.h"void main(){int x=1,y=0;switch(x){case 1:switch(y){case 0:printf("**1**\n");break; //只跳出当前的switchcase 1:printf("**2**\n");break;} //这里没有break语句执行完上一case后,下面的case继续执行。
matlab第三章课后部分答案
matlab第三章课后部分答案习题三3-2 从键盘输入一个三位整数,将它反向输出。
如输入639,输出为936程序如下:m=input('请输入一个三位整数:');m1=fix(m/100);%求m的百位整数m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);%求m的个位数字m=m3*100+m2*10+m1%反向输出m3-3 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
程序如下:(1)if语句c=input('请输入成绩:');if c>=90&c<=100disp('A 成绩合理');elseif c>=80&c<=89disp('B 成绩合理');elseif c>=70&c<=79disp('C 成绩合理'); elseif c>=60&c<=69disp('D 成绩合理'); elseif c<60disp('E 成绩合理');elsedisp('成绩错误');end(2)switch语句c=input('请输入成绩:'); switch fix(c)case num2cell(90:100)disp('A 成绩合理'); case num2cell(80:89)disp('B 成绩合理'); case num2cell(70:79)disp('C 成绩合理'); case num2cell(60:69)disp('D 成绩合理'); case num2cell(0:59)disp('E 成绩合理');x=fix(rand(1,20)*89)+10;x1=fix(sum(x)/20);disp(['平均数是:',num2str(x1)])m=(rem(x,2)==0&x<x1);n=find(m);disp(['小于平均数的数是:',num2str(x(n))]); 3-6 输入20个数,求其中最大数和最小数。
2014 第三章上机实验2 switch 学生问题
2. 给出一个百分制的成绩,要求输出成绩等级'A','B','C','D','E'。
90分以上为'A',80~89分为'B',70~79分为'C',60z69分为'D',60分以下为'E'。
#include <iostream.h>main(){char a,b;cout<<"请输入成绩:"<<endl;cin>>a;b=a%10;switch(a){case'9':cout<<"A"<<endl;break;case'8':cout<<"B"<<endl;break;case'7':cout<<"C"<<endl;break;case'6':cout<<"D"<<endl;break;case'5':case'4':case'3':case'2':case'1':case'0':cout<<"E"<<endl;}}学生成绩不能是字符类型#include<iostream.h>int main(){int ch,grade;cin>>grade;ch=grade/10;switch(ch){case '10':C++程序设计(第2版)case '9':cout<<"A"<<endl;break;case '8':cout<<"B"<<endl;break;case '7':cout<<"C"<<endl;break;case '6':cout<<"D"<<endl;break;default:cout<<"E"<<endl;}}运行结果:所有结果都运行了一遍,结果正确。
c语言上机实验题及参考答案
5、两个乒乓球队进行比赛,各出3人,甲队为A,B,C 3人,乙队为X,Y,Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和X比,C说他不和X、Z比。请编程序找出3队赛手的名单。(C语言源程序文件名为45.c,本程序运行结果:A--Z B--X C--Y)
2 14 14
5 10 15
8 6 16
11 2 17)
2、编写程序:输入两个正整数,求其最大公约数和最小公倍数。(如输入12和8,则最大公约数为4,最小公倍数为24)(C语言源程序文件名为42.c。要求求最大公约数用欧几里得的辗转相除法实现)。
3、编写程序实现以下功能:输入一个正整数,打印出它是否素数。(C语言源程序文件名为43.c)
例如:有定义int a=3;执行输出语句:printf(“a=%3d”,a);则输出结果显示为:a= 3(3左边有两个空格)
n(代表一个正整数)
对实数,表示输出n位小数。
例如:有定义float x=1.2;执行输出语句:printf(“x=%6.2f”,x);则输出结果显示为:x= 1.20(数字左边有两个空格)。
三、附加题:
9、编程实现:从键盘上输入一个三位正整数m,输出将m的个位,十位,百位反序而成的三位数(例如:输入m的值123,则输出m的值为321)(要求:文件名为15.c,提示:可用算术运算符“/”和“%”先分离出m的各个位数,再重新组合成新的数,例如用表达式“123%10”就能求出123的个位数3)。
三、实验题目:
if语句基本形式:if(条件){语句一;}
北京交通大学-数据结构上机实验-2
数据结构上机实验二实验内容:栈和链队列的基本操作实验目的:1)熟悉C/C++基本编程,培养动手能力.2)通过实验,加深对堆栈和队列的理解.实验要求:1) 栈和队列的显示要作为函数被调用.2) 把自己使用的栈和队列结构明确的表达出来.分组要求:可单独完成,也可两人一组。
评分标准:1) 只完成第一或第二题,3分;2)完成一和二题,得5分;3)在2)基础上,可选做三)中的题目。
题目:一)堆栈题(顺序栈):创建一个栈+入栈+出栈(1)由键盘一个一个的输入正整数,建立相应的堆栈,输入-1时,堆栈结束;(2)在(1)中创建的堆栈中添加一个元素;(3)在(1)中创建的堆栈中删除一个元素;(要求在显示器可见);#include<stdio.h>#include<stdlib.h>#include <string>#define OK 1#define ERROR 0#define Status int#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct Stack{int *base;int *top;Status stacksize;}SqStack;Status CreatStack(SqStack &S) //创建空栈{S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(struct Stack));if(!S.base) return ERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;}Status InStack(SqStack &S) //创建栈元素{int e;printf("请输入初始栈元素:\n");scanf("%d",&e);while(e!=-1){if(S.top-S.base>=S.stacksize) //栈满,追加存储空间{S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(struct Stack));if(!S.base) return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;scanf("%d",&e);}return OK;}Status Push(SqStack &S,int e) //栈加元素{if(S.top-S.base>=S.stacksize) //栈满,追加存储空间{S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(struct Stack));if(!S.base) return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return OK;}Status Pop(SqStack &S,int e) //栈中删除元素{if(S.top==S.base) return ERROR;e=*--S.top;printf("\n请输出出栈元素:%d",e);printf("\n");return OK;}void print(){printf("\n菜单:");printf("\n1.由键盘一个一个的输入正整数,建立相应的堆栈,输入-1时,堆栈结束:");printf("\n2.在创建的堆栈中添加一个元素:");printf("\n3.在创建的堆栈中删除一个元素:");printf("\n3.退出");}void printS(SqStack &S) //打印堆栈{int *p;printf("请输出堆栈中的元素:\n");for(p=S.base;p<S.top;p++){printf("%d ",*p);}}void main() //主程序{SqStack S;int e,choice;do{print();printf("\n请输入选项:");scanf("%d",&choice);switch(choice){case 1:if(CreatStack(S)==1){if(InStack(S)==1)printS(S);}break;case 2:printf("\n请输入入栈元素:");scanf("%d",&e);Push(S,e);printS(S);break;case 3:Pop(S,e);printS(S);break;case 4:exit(0);break;}}while(1);}二)链队列题目:初始化队列+入队列+出队列+销毁队列(1)初始化一个链队列;(2)在初始化好的链队列中放入数,入队列,完成后要求显示;(3)从队列中出队列,要求显示出来的元素和之后的队列;(4)销毁创建的队列,释放内存;#include <stdio.h>#include <malloc.h>typedef struct Qnode{//队列结点int data;struct Qnode *next;}QNode, *QueuePtr;typedef struct {QueuePtr front; //队头指针QueuePtr rear; //队尾指针}LinkQueue;void InitQueue(LinkQueue &Q){ //初始化链队列Q.front=Q.rear=(QueuePtr) malloc(sizeof(QNode));Q.front->next=NULL;}void EnQueue(LinkQueue &Q,int e){//入队列QueuePtr p;while(e!=-1){p=(QueuePtr)malloc(sizeof(QNode));p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;scanf("%d",&e);}}int QueueLength (LinkQueue Q){//求队列长度QueuePtr p;p=Q.front->next; //p指向队头int i=1;while(p!=Q.rear){ //遍历链队列,统计结点数i++;p=p->next;}return i;}// QueueLengthvoid DeQueue(LinkQueue &Q){ //出队列QueuePtr p;int e;if(Q.front==Q.rear)printf("The queue is empty\n");else{p=Q.front->next;e=p->data;printf("The delete elem is:%d\n",e);Q.front->next=p->next;if(Q.rear==p) Q.rear=Q.front;free(p);}printf("The new queue is :\n");}void DestroyQueue(LinkQueue &Q){ //销毁队列while(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}}void QueueTraverse (LinkQueue Q){//遍历显示队列QueuePtr p;for(p=Q.front->next;p!=Q.rear;p=p->next)printf("%d ",p->data);printf("%d ",p->data);}void main(){LinkQueue Q;int e;InitQueue(Q);printf("Put in the elems:\n");scanf("%d",&e);EnQueue(Q,e);printf("The queue is:\n");QueueTraverse(Q);printf("\n");DeQueue(Q);QueueTraverse(Q);printf("\n");DestroyQueue(Q);}三)应用题(1)编制程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过。
if语句switch语句上机练习
1126上机练习1、要将“China”翻译成密码。
密码规律是:用原来字母的后面第4个字母代替原来的字母。
请编写一程序实现。
并输出结果。
(Glmre)2、输入一个字母,将该字母进行大小写转换,输出转换后的字母。
3、输入一个不大于255的自然数x,计算y=(1+x)/x2。
4、给定一个三位正整数,分别输出它的个位数、十位数和百位数。
5、编写程序,实现从键盘上输入4个整数,并按从大到小顺序输出。
6、编写一个程序,实现对给出的一百分制成绩,输出相应的成绩等级。
即:90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’7、输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,根据转换结果C的不同值,按以下要求给出相应的提示。
C>40时,打印“Hot”30<C≤40时,打印“Warm”20<C≤30时,打印“Room Temperature”10<C≤20时,打印“Cool”0<C≤10时,打印“Cold”C≤0时,打印“Freezing”8、编一程序,要求实现下面的功能:输入一个实数后,屏幕上显示如下菜单(加粗部分):1.输出相反数2.输出平方数3.输出平方根4.退出程序运行的效果为:若按1键,则输出该数的相反数;若按2键,则输出该数的平方数;……。
按1 ~4之外的其他键时,显示出错,、。
9、列程序想求出满足如下条件的三位数n:(1)n除以11(整数相除)所得到的商等于n的各位数字的平方和;(2)n中至少有二位数字相同。
如:131除以11的商为11,131各位数字的平方和为11,131中有二位数字相同,故131是所要求出的三位数中的一个;又如550,也是满足条件的三位数。
程序设计上机实验课后答案
第3章程序控制结构1.1 选择结构部分一、选择题二、填空题1.OK!NO!ERROR!2.x=1 y=0x=23.ch>=’A’&& c<=’Z’ ch=ch-324.-15.x=66.(1)2(2)3CCa=2,b=2,c=4 7.(1)a<b||a<c(2)a>c&&b>c(3)a<c||b<c(4)a%28.32339.0 1三、程序设计题1.#include <stdio.h>#define pi 3.14159main( ){int k;float r,c,a;printf(“input r,k\n”);scanf(“%f%d”,&r,&k);switch(k){case 1: a=pi*r*r; printf(“area=%f\n”,a);break;case 2: c=2*pi*r;printf(“circle=%f\n”,c);break;cese 3: a=pi*r*r;c=2*pi*r;printf(“area=%f circle=%f\n”,a,c);break;}}2.main( ){int year,leap;scanf(“%d”,&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;else leap=0;}else leap=1;}else leap=0;if(leap)printf(“%d is ”,year);else printf(“%d is not ”,year);printf(“ a leap year\n”);}3.#include <math.h>main(){float x,y;scanf(“%f”,&x);if(x<0) y=x*x;else if(x>=0&&x<10) y=-0.5*x+10;else y=x-sqrt(x);printf(“y=%f”,y);}1.2 循环结构部分二、填空题1.(1)先判断条件是否成立(为真),若成立(为真)再执行循环语句(2)先执行循环语句,再判断条件是否成立(为真),若成立则继续执行循环,若不成立,则结束循环。
C++第3章课后习题习题答案
第三章习题答案一、单选题1.D2.B3.B4.A5.C6.B7.D8.D9. A 10.D 11.C 12.A 13.B 14. A 15.D 16.A 17.C 18.C 19.C 20.B二、填空题1.条件、循环2.4.03.!,&&,||(非,与,或)4.0,1,15.(y%4==0&&y%100!=0)||(y%400)6.(x<0&&y<0&&z>=0)||(x<0&&y>=0&&z<0)||(x>=0&&y<0&&z<0)7.ch>='A'&&ch<='Z'8.OK!NO!ERROR!9.x>=y&&y>=z10.Z11.2 1 112.1 0 013.do while14.switch 循环15.2 016.517.1118.019.420.254三、读程序结果1. CD(ch1=’C’,ch2=’D’)2. *&3. 10,9,11(a=10,b=9,c=10)4. a=2b=15. 1,0,1(a=1,b=0,c=1)6. x=5x=5x=3x=7x=0z=07. 2,0(k=2,b=0)8. 3,1 -1 3 1 -19. 8(a=8)10. 1,-2(a=1,y=-2)四、编程题1.#include<iostream>#include<iomanip>using namespace std;#define PI 3.14159void main(){float r,h;cout<<"输入圆半径、圆柱高:"<<endl;cin>>r>>h;cout<<setiosflags(ios::fixed);cout<<setprecision(2)<<"圆周长是:"<<2*PI*r<<endl;cout<<setprecision(2)<<"圆面积是:"<<PI*r*r<<endl;cout<<setprecision(2)<<"圆球表面积是:"<<4*PI*r*r<<endl;cout<<setprecision(2)<<"圆球体积是:"<<4*PI*r*r*r/3<<endl;cout<<setprecision(2)<<"圆柱体积是:"<<PI*r*r*h<<endl;}2.#include <iostream>using namespace std;int main(){float a,p;int n;cout<<”请输入本金,存款年数,年利率、n”;cin>>a>>n>>p;cout<<”利息为”<<a*p*n<<’\n’;return 0;}3.#include <iostream>#include <iomanip>using namespace std;int main(){cout<<setw(3)<<’*’<<’’<<’*’<<’‘<<’*’<<’\n’;cout<<setw(2)<<’*’<<setw(6)<<’*’<<’\n’;cout<<’*’<<setw(8)<<’*’<<’\n’;cout<<’*’<<’\n’<<’*’<<’\n‘<<’*’<<’\n’<<’*’<<’\n’;cout<<’*’<<setw(8)<<’*’<<’\n’;cout<<setw(2)<<’*’<<setw(6)<<’*’<<’\n’;cout<<setw(3)<<’*’<<’’<<’*’<<’‘<<’*’<<’\n’;return 0;}4.#include<iostream>using namespace std;main(){int a,b;cin>>a>>b;if((a>100)&&(b>100))cout<<"大于100的数是:"<<a<<" "<<b<<endl;else{if(a>100)cout<<"大于100的数是:"<<a<<endl;if(b>100)cout<<"大于100的数是:"<<b<<endl;if((a<=100)&&(b<=100))cout<<"两数之和是:"<<a+b<<endl;}return 0;}5.#include <iostream>using namespace std;main(){int x;cin>>x;if((x%5==0)&&(x%7==0))cout<<"Yes"<<endl;elsecout<<"No"<<endl;return 0;}6.#include <iostream>#include <iomanip>using namespace std;int main(){char letter,letter_new;cout<<”请输入一个小写字母:”;cin>>letter;if(letter>=’a’&&letter<=’m’){letter_new=letter+1;cout<<”变换后的字母为”<<letter_new<<’\n’;}else if(letter>=’n’&&letter<=’z’){letter_new=letter-1;cout<<”变换后的字母为”<<letter_new<<’\n’;}elsecout<<”这不是一个小写字母”<<’\n’;return 0;}7.#include <iostream>#include <iomanip>#include<math.h>using namespace std;int main(){float a,b,c,s;float sin_A,cos_A;cout<<”请输入三角形的三条边:”;cin>>a>>b>>c;if(!((a+b>=c)&&(b+c>=a)&&(a+c>=b)))cout<<”这三条边不能组成一个三角形\n”;else{cos_A=(pow(b,2)+pow(a,2)-pow(c,2))/(2*b*C);sin_A=sqrt(1-pow(cos_A,2));s=b*c*sin_A/2;cout<<”三角形面积:”<<s<<’\n’;}return 0;}8.#include <iostream>using namespace std;void main(){int b;cout<<"请输入一个5位数:"<<endl;cin>>b;if(b/10000==b%10){if((b%10000)/1000==(b%100)/10)cout<<"该数是回文"<<endl;}elsecout<<"该数不是回文!"<<endl;}9.#include <iostream>using namespace std;void main(){int a,b,i,s;cout<<"请输入自然数:"<<endl;cin>>a;for(i=0,s=0,b=1;i<a;i++){s=s+b;b=b+2;}while(s!=a*a*a){s=s+a*2;b=b+2;}b=b-2;cout<<"组成"<<a<<"的立方的"<<a<<"个连续奇数为:"<<endl;for(i=a;i>0;i--){cout<<b-2*(i-1)<<' ';}}10.#include <iostream>using namespace std;main(){int n,i;double average,money;n=0;i=1;money=0;while(i<=100){i=i*2;money=money+i*0.8;n++;}average=money/n;cout<<"苹果个数不超过100的最大值时钱数是:"<<money<<endl<<"平均每天花钱:"<<average<<endl;return 0;}11.#include <iostream>using namespace std;void main(){int i,x,y,z,a[3]={0,0,0};cout<<"输入x,y:"<<endl;cin>>x>>y;cout<<"x^y的最后三位数为:";for(i=0,z=1;i<y;i++){z=z*x;}a[0]=(z%1000)/100;a[1]=(z%100)/10;a[2]=z%10;cout<<a[0]<<a[1]<<a[2];}#include <iostream>using namespace std;void main(){int a=0,b=0,c=0;for(a=0;a<10;a++)for(b=0;b<10;b++)for(c=0;c<10;c++){if(a*100+b*10+c+c*100+b*10+a==1333)cout<<"a="<<a<<" b="<<b<<" c="<<c<<endl;}}。
C语言程序设计 上机实验指导与习题 参考答案
C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。
C++程序设计(第2版)第三章习题解答
第三章函数习题一.基本概念与基础知识自测题3.1 填空题3.1.1 被定义为形参的是在函数中起(1)作用的变量,形参只能用(2)表示。
实参的作用是(3),实参可以用(4)、(5)、(6)表示。
答案:(1)自变量(2)变量名(3)将实际参数的值传递给形参(4)具有值的变量(5)常量(6)表达式3.1.2 局部域包括(1)、(2)和(3)。
使用局部变量的意义在于(4)。
答案:(1)块域(2)函数域(3)函数原型域(4)局部变量具有局部作用域使得程序在不同块中可以使用同名变量3.1.3 静态局部变量存储在(1)区,在(2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为(4)。
答案:(1)全局数据区(2)编译(3)全局生存期(4)全03.1.4局部变量存储在(1)区,在(2)时候建立,生存期为(3),如定义时未显式初始化,则其初值为(4)。
答案:(1)栈(2)在函数或块开始执行时(3)函数或块的执行期(4)随机值3.1.5 编译预处理的作用是(1),预处理指令的标志是(2)。
多文件系统中,程序由(3)来管理,用户自定义头文件中通常定义一些(4)。
答案:(1)将源程序文件进行处理,生成一个中间文件,编译系统对此中间文件进行编译并生成目标代码(2)#(3)工程文件(4)用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量3.1.6设有函数说明如下:int f(int x, int y){ return x%y+1; }假定a=10,b=4,c=5,下列语句的执行结果分别是(1)和(2)。
(1) cout<<f(a,b)+f(a,c); (2) cout<<f(f(a+c,b),f(b,c));解答:(1)答案:4(2)答案:53.1.7下列程序的输出结果分别为(1)和(2)。
(1)#include<iostream>using namespace std;int a,b;void f(int j){static int i=a; //注意静态局部变量int m,n;m=i+j; i++; j++; n=i*j; a++;cout<<"i="<<i<<'\t'<<"j="<<j<<'\t';cout<<"m="<<m<<'\t'<<"n="<<n<<endl;}int main(){a=1; b=2;f(b); f(a);cout<<"a="<<a<<'\t'<<"b="<<b<<endl;return 0;}解:答案:i=2 j=3 m=3 n=6 (对应蓝色)i=3 j=3 m=4 n=9 (对应绿色)a=3 b=2(2)#include<iostream>using namespace std;float sqr(float a){return a*a;}float p(float x,int n){cout<<"in-process:"<<"x="<<x<<'\t'<<"n="<<n<<endl;if(n==0) return 1;else if(n%2!=0) return x*sqr(p(x,n/2));else return sqr(p(x,n/2));}int main(){cout<<p(2.0,13)<<endl;return 0;}图解递归,共五层,返回值是回归时产生:答案:in-process:x=2 n=13in-process:x=2 n=6in-process:x=2 n=3in-process:x=2 n=1in-process:x=2 n=081923.2 简答题3.2.1 函数的实参和形参怎样对应?实参和形参数目必须一致吗?什么情况下可以不同?答:实参和形参的个数和排列顺序应一一对应,并且对应参数应类型匹配(赋值兼容),当有缺省参数时可以不同。
C#程序设计课后习题答案--第三章
实验报告1.创建窗体应用程序,程序运行时,在“年份”文本框输入一个正整数,单击“判断”按钮,就能在标签控件中显示判断结果;单击“退出”按钮则结束程序运行。
图 1.1 题目部分代码图 1.2 结果2.创建控制台应用程序,输入一个奇数后,输出图案,最顶部一行的星号个数为输入的数。
图 2.1 判断奇数代码图 2.2 输出星号倒三角形代码图 2.3 结果1图 2.4 结果23. 创建控制台应用程序,利用下边的多项式计算出π值,要求最后一项的值小于10−6.π4=1−13+15−17+⋯+14n −3−14n −1图 3.1 代码图 3.2 结果4. 创建控件台应用程序,利用下边的公式计算e 的近似值,要求最后一项的值小于10−6。
e =∑1n!kn=0图 4.1 代码图 4.2 结果5.已知两个三位数abc和cba之和为1333(既abc+cba=1333),编写控制台应用程序,求出三个数字a、b、c。
图 5.1 代码图 5.2 结果6.创建控制台应用程序,求解猴子吃桃问题,猴子第一天摘下桃子若干,当即吃了一个后又多吃了一个;第二天又将剩下的桃子吃掉一半后再多吃一个,;以后每天都吃掉前一天剩下的一半零一个。
到第10天想再吃时,只剩下一个桃子。
求猴子在第一天共摘下多少个桃子?图 6.1 代码图 6.2 结果7.马克思曾经做过这样一道数学趣味题:有30个人在一家小饭馆用餐,其中每个男人花了3先令,每个女人花了2先令,每个孩子花了1先令,总共花了50先令。
问男人、女人、孩子各有多少人?本题有多个解,编写控制条应用程序求出所有解。
图7.1 代码图7.2 代码8.体操比赛的评分规则是:由7位裁判为每个运动员打分,去掉一个最高分,去掉一个最低分,求出的平均分即为运动员的得分。
编写控制台应用程序,计算运动员得分。
图8.1 代码图8.2 结果9.所谓“水仙花数”指的就是这样的一个3位数,其各位数的立方和等于该数。
例如,153=13+53+33.编写控制台应用程序,计算输出所有的水仙花数。
第3章习题参考答案
第三章 程序的控制结构习题参考答案3.1把任意的三个数按大小顺序排列。
请设计解决该问题的算法并用传统流程图描述出来。
解:这个问题的思路是把大数放在a 中,把次大的数放在b中,把小数放在c 中,再把这个思路进一步细化,即可写出算法。
第一步:输入a,b,c 三个数。
第二步:将a 和b 比较,较大者放在a 中,小者放在b 中。
第三步:将a 和c 比较,较大者放在a 中,小者放在c 中。
(此时a 已是三者中最大的数了)。
第四步:将b 和c 比较,较大者放在b 中,小者放在c 中(此时b 为次大的数,c 为最小数)。
第五步:输出排列好的a,b,c 三个数。
3.2 计算1-1/2+1/3-1/4+…+1/99-1/100的值。
请设计解决该问题的算法并用伪代码描述出来。
解:(1)分析问题,确定解题方案。
由于加、减间隔的特点,可以将计算的各项重新进行交换、结合,将问题转化为累加求和问题。
1 - 1/2 + 1/3 - 1/4 + … + 1/99 - 1/100 =(1 + 1/3 + 1/5 + … + 1/99)-(1/2 + 1/4 + 1/6 + … + 1/100)=S1 - S2其中:S1=1 + 1/3 + 1/5 + … + 1/99 ;S2=1/2 + 1/4 + 1/6 + … + 1/100因此,只要分别求出S1,S2,然后再相减,就可得所需的结果。
(2)确定算法。
用伪代码表示算法如下:BEGIN (算法开始)1 => s13 => denowhile deno <=99{1 /deno + s1 => s1deno + 2 => deno}0 => s22 => denowhile deno <=100{ 1/deno + s2 => s2deno + 2 => deno}s1 - s2 => sprint sEND(算法结束)3.3 编程判断输入整数的正负性和奇偶性。
c语言switch语句试题及答案
c语言switch语句试题及答案C语言switch语句试题及答案1. 以下哪个选项是switch语句的正确语法?A. switch (expression) { case 1: statement; case 2: statement; ... }B. switch (expression) { case 1: statement; case 2: statement; ... default: statement; }C. switch (expression) { case 1: statement; case 2: statement; ... default: statement; break; }D. switch (expression) { case 1: statement; case 2: statement; ... default: statement; continue; }答案:B2. 考虑以下代码段:```cint score = 85;switch (score / 10) {case 9:case 8:printf("Grade A\n");break;case 7:printf("Grade B\n");break;case 6:printf("Grade C\n");break;default:printf("Grade F\n");break;}```当score为85时,程序输出什么?A. Grade AB. Grade BC. Grade CD. Grade F答案:A3. 在switch语句中,如果case后的条件不满足,程序将执行什么?A. 继续执行下一个caseB. 跳出switch语句C. 执行default语句D. 执行下一个case直到找到匹配的case或遇到break答案:D4. 如果在switch语句中没有找到匹配的case,也没有default语句,程序将如何执行?A. 程序会报错B. 程序会执行default语句C. 程序会跳过switch语句D. 程序会执行下一个case语句答案:C5. 以下代码段的输出是什么?```cint month = 4;switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("31 days\n");break;case 4:case 6:case 9:case 11:printf("30 days\n");break;default:printf("Invalid month\n"); break;}```A. 31 daysB. 30 daysC. Invalid monthD. 编译错误答案:B6. 以下switch语句中,哪个case标签会被执行?```cchar grade = 'B';switch (grade) {case 'A': printf("Excellent\n");case 'B': printf("Very Good\n");case 'C': printf("Good\n");case 'D': printf("Fair\n");case 'F': printf("Poor\n");default: printf("Invalid grade\n");}```A. case 'A'B. case 'B'C. case 'C'D. default答案:B7. 在switch语句中,可以使用哪些数据类型作为表达式的值?A. 整数B. 枚举C. 字符D. 所有以上答案:D8. 以下代码段中,哪个case标签会被执行?```cint num = 5;switch (num) {case 1 ... 3:printf("1 to 3\n");break;case 4 ... 6:printf("4 to 6\n");break;default:printf("Other\n");break;}```A. case 1 (3)B. case 4 (6)C. defaultD. 编译错误答案:B9. 在switch语句中,default标签可以出现多少次?A. 0B. 1C. 多于1D. 任意次数答案:B10. 以下代码段的输出是什么?```cint day = 6;switch (day) {case 1: printf("Monday\n");case 2: printf("Tuesday\n"); case 3: printf("Wednesday\n"); case 4: printf("Thursday\n"); case 5: printf("Friday\n");case 6: printf("Saturday\n"); case 7: printf("Sunday\n");}```A. MondayB. TuesdayC. SaturdayD. Sunday答案:C。
软件工程(第五版)--习题及答案--第三章
17、DFD用于描述系统的(D)。
A、数据结构B、控制流程C、基本加工D、软件功能
18、数据词典不包括的条目是(C)。
A、数据项B、数据流C、数据类型D、数据加工
19、软件需求分析一般应确定的是用户对软件的(D)。
A、功能需求B、非功能需求
C、性能需求D、功能需求和非功能需求
年龄满40岁以上人员,初中或高中文化,若是男性当修理工,若是女性当清洁工;大专文化当技术员。
年龄25岁至40岁,初中或高中文化,若是男性钳工,若是女性当车工;大专文化当技术员。
年龄不满25岁,初中文化脱产学习,高中文化当电工;大专文化当技术员。
请根据以上叙述运用三种加工逻辑说明写出它们的逻辑组合的关系。
C、一个输出数据流D、一个输入或输出数据流
13、需求分析是分析员经了解用户的要求,认真细致地调研、分析,最终建立目标系统的逻辑模型并写出(B)的过程。
A、模块说明书B、软件规格说明书
C、项目开发计划D、合同文档
14、结构化分析方法是以数据流图、(D)和加工说明等描述工具,即用直观的图和简洁的语言来描述软件系统模型。
汇额(元)
L
L
M
M
H
H
本埠
Y
N
Y
N
Y
N
汇费(元)
2
2
W*0.01
W*0.01
50
50
可简化为:
汇额(元)
L
M
H
本埠
--
--
--
汇费(元)
2
W*0.01
50
解:判定表
国内
Y
Y
Y
N
《C语言程序设计》复习 参考答案
第一章【随堂练习1-2】1.下面哪些标识符属于合法的用户自定义标识符:Main、void、_num、my$、a*、N4、3m、a-2答:合法的用户自定义标识符是:Main、_num、N42.结合【例1.2】指出程序代码中所用到的标识符哪些是关键字,哪些是预定义标识符,哪些是用户自定义标识符。
答:关键字:void、int预定义标识符:include、main、printf、scanf用户自定义标识符:a、b、c3.分析【例1.2】中函数的结构,包括函数首部(函数返回值类型、函数名、形式参数)、函数体语句(说明语句、可执行语句)。
答:函数首部:void main( ),其中函数返回值类型为void、函数名为main、形式参数无;函数体语句:{}内的语句为函数体,其中:说明语句为int a,b,c;,其余为可执行语句。
3.标识符是用来标识程序中的某个对象名字的字符序列。
C语言把标识符分为三类,即关键字、预定义标识符、用户自定义标识符。
对于用户自定义标识符的命名C语言规定:(1)所有的用户标识符必须先定义后使用;(2)用户标识符由字母(A~Z,a~z)、数字(0~9)、下划线“_”组成,并且首字符不能是数字;(3)区分大小写;(4)不能用关键字作为用户自定义标识符,通常不使用预定义标识符作为用户自定义标识符。
4.理论上讲,程序开发过程分为四个步骤,分别为:(1)编辑源程序(2)编译源程序,生成目标程序(3)连接目标程序及其相关模块,生成可执行文件(4)运行可执行文件一.单元练习一.选择题1.构成C语言程序的基本单位是()。
A.框架B.预处理C.函数D.语句2.在程序开发过程中,把文本文件格式源程序转化为二进制格式的目标程序的过程称之为()。
A.编辑B.编译C.连接D.运行3.关于主函数,下列说法不正确的是()。
A.一个完整的C语言应用程序有唯一的主函数B.主函数的名称只能是mainC.主函数可以被其他自定义函数调用D.C语言程序的运行从主函数开始,以主函数为核心展开4.关于标识符,下列说法不正确的是()。
国家开放大学C语言程序设计章节测试参考答案
国家开放大学《C语言程序设计》章节测试参考答案第一章C语言概述自测练习一:C语言字符集自测练习1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。
(√)2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。
(√)3.在C语言程序中,ABC和abc被作为同一标识符使用。
(×)自测练习二:C语言字符集自测练习1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。
(√)2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。
(√)3.C语言中使用的字符常量,其起止标记符是()。
a. 双引号b. 尖括号c. 单引号d. 中括号4.C语言中使用的字符串常量,其起止标记符是()。
a. 双引号b. 中括号c. 尖括号d. 单引号自测练习三:C语句分类自测练习1.在C语言中,一条简单语句的结束符是()。
a. 分号b. 空格c. 冒号d. 逗号2.在C语言中,每条复合语句的开始标记字符为()。
a. <b. [c. (d. {3.不符合C语言规定的复合语句是()。
a. {x=0;}b. {}c. {;}d. {y=10}4.C语言中的选择类语句有两条,它们是()。
a. else和caseb. if和switchc. if和elsed. switch和case自测练习四:函数分类与使用自测练习1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。
a. nameb. mainc. MAINd. function2.C语言程序中的基本功能模块为()。
a. 标识符b. 函数c. 表达式d. 语句3.一个函数定义所包含的两个部分是()。
a. 函数头和函数体b. 函数原型和函数体c. 函数名和参数表d. 函数头和函数尾4.一个程序文件开始使用的每条预处理命令,其首字符必须是()。
a. #b. @c. %d. $5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。
C语言-课后题答案
第三章
3.用下面的scanf函数输入数据,使a=3, b=7, x=8.5, y=71.82, c1='A', c2='a'。问在键盘上如何输入?
解:
#include<stdio.h>
void main()
{
int a, b; float x, y; char c1, c2;
{
char c1,c2;
c1=getchar();
c2=getchar();
printf("c1=%d c2=%d\n",c1,c2);
printf("c1=%c c2=%c\n",c1,c2);
}
第四章
3. 写出下面各逻辑表达式的值。设a=3,b=4,c=5。
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("最大数为: %d",max);
}
第二章
1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(1+r)^n,r为年增长率;n为年数;P为与现在相比的百分比。
解:
#include<stdio.h>
#include<math.h>
void main()
{
double P, r=0.1, n=10;
C程序设计教程第二版习题答案
C程序设计教程第二版习题答案第1章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
它支持多种编程范式,包括过程式、面向对象和泛型编程。
2. C语言的发展历史。
- C语言由丹尼斯·里奇在20世纪70年代初期开发,最初用于UNIX操作系统的编写。
随着UNIX的流行,C语言也逐渐普及。
第2章:C语言基础1. 变量声明的规则。
- 变量声明必须指定数据类型,变量名必须以字母或下划线开头,可以包含字母、数字和下划线,但数字不能作为变量名的首位。
2. 常量的使用。
- 常量是在程序执行过程中不能被修改的值,可以用#define预处理指令定义,或者直接使用字面量。
第3章:控制语句1. if语句的使用。
- if语句用于根据条件执行不同的代码块。
基本语法为:`if (条件) { 执行代码 }`。
2. switch语句的使用。
- switch语句用于根据变量的值执行不同的代码块。
基本语法为:`switch (变量) { case 值1: 执行代码1; break; ... }`。
第4章:循环语句1. for循环的使用。
- for循环用于重复执行一段代码直到满足特定条件。
基本语法为:`for (初始化; 条件; 增量/减量) { 执行代码 }`。
2. while循环的使用。
- while循环在条件为真时重复执行代码块。
基本语法为:`while (条件) { 执行代码 }`。
第5章:函数1. 函数的定义和调用。
- 函数是一段具有特定功能的代码块,可以被重复调用。
定义函数的基本语法为:`返回类型函数名(参数列表) { 函数体 }`。
调用函数时使用:`函数名(参数)`。
2. 函数的参数传递。
- 参数传递可以是值传递或引用传递。
值传递时,函数内部对参数的修改不会影响到外部变量的值;引用传递则相反。
第6章:数组1. 一维数组的声明和使用。
- 一维数组的声明语法为:`类型数组名[大小]`。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case 1:
case 2:
case 3:
case 4:
case 5:cout<<"工作日愉快"<<endl;
break;
case 6:
case 7:cout<<"周末愉快"<<endl;
break;
default:cout<<"请输入位于1到7之间的数"<<endl;
}
return 0;
}
1、查询自动售货机中商品的价格,假设自动售货机出售4种商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏幕上显示以下菜单,用户可以查询商品的价格,用户输入编号1~4,显示相应商品的价格;输入其他编号,显示价格为0。
cin>>a>>b;
area=a*b/2;
cout<<"三角形面积为:"<<area;
break;
}
case 'C':case'c':
{
float r,area;
cout<<"请输入圆的半径";
cin>>r;
area=pi*r*r;
cout<<"圆面积为:"<<area;
break;
}
default:
cout<<"[4] Select cola \n";
cout<<"Enter choice: ";
cin>>choice;
switch (choice) {
case 1: price=3.0; break;
case 2: price=2.5; break;
case 3: price=4.0; break;
2.给出一个百分制的成绩,要求输出成绩等级'A','B','C','D','E'。90分以上为'A',80~89分为'B',70~79分为'C',60z69分为'D',60分以下为'E'。
解1
#include <iostream.h>
int main()
{
int x,y;
cout<<"请输入学生成绩"<<endl;
int main()
{
int a,b;char op;
cout<<"\n输入操作数1,运算符,操作数2: ";
cin>>a>>op>>b;
switch(op)
{
case '+':cout<<a<<'+'<<b<<'='<<a+b;
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:cout<<"E"<<endl;
break;
default:cout<<"输入错误"<<endl;
}
return 0;
}
3、编写一个程序,当输入’S’或’s’、’T’或’t、’’C’或’c’时,分别转去执行计算正方形、三角形和圆的面积,分别用switch语句实现
cin>>x;
y=x/10;
if (x<0 || xFra bibliotek100)cout<<"输入错误"<<endl;
else
switch(x/10)
{
case 10:
case 9:cout<<"A"<<endl;
break;
case 8:cout<<"B"<<endl;
break;
case 7:cout<<"C"<<endl;
cin>>x;
y=x/10;
if (x==100) y=9;//剔除x=103之类出现10的情况
switch(x/10)
{
case 9:cout<<"A"<<endl;
break;
case 8:cout<<"B"<<endl;
break;
case 7:cout<<"C"<<endl;
break;
case 6:cout<<"D"<<endl;
break;
case 6:cout<<"D"<<endl;
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:cout<<"E"<<endl;
}
return 0;
}
解2:
#include <iostream.h>
int main()
{
int x,y;
cout<<"请输入学生成绩"<<endl;
cout<<"输入错误";
}
return 0;
}
6编写一个程序,要求用户输入今天星期几,根据用户的输入判断是工作日还是周末,并显示合适的问候语。如果输入的数字不在1~7之间,显示“请输入位于1到7之间的数”,如果输入数字为6或7,显示“周末愉快”,如果输入数字1-5,显示“工作日愉快”
#include <iostream.h>
运行实例
#include <iostream.h>
int main()
{
int choice, i;
double price;
cout<<"[1] Select crisps \n";
cout<<"[2] Select popcorn \n";
cout<<"[3] Select chocolate \n";
运行实例
#include <iostream.h>
int main()
{
const float pi=3.1415926;
char ch;
cout<<"请输入想计算哪种图形面积?\n";
cout<<"\'S\'or\'s\'代表正方形,\'T\'or\'t\'代表三角形,\'C\'or\'c\'代表圆\n";
case 4: price=3.5; break;
default: price=0.0; break;
}
cout<<"price ="<<price<<endl;
return 0;
}
2、输入一个形式如“操作数运算符操作数”的四则运算表达式,输出运算结果。
解1:
#include <iostream.h>
main()
{
int x;
cout<<"星期几的代号为:"<<'\n'<<"星期一=1"<<'\n'<<"星期二=2"<<'\n'<<"星期三=3"<<'\n'<<"星期四=4"<<'\n'<<"星期五=5"<<'\n'<<"星期六=6"<<'\n'<<"星期日=7"<<'\n';cin>>x;
switch(x)
cin>>ch;
switch (ch)
{
case 'S':case 's':
{
float a,area;
cout<<"请输入正方形边长";
cin>>a;
area=a*a;
cout<<"正方形面积为:"<<area;
break;
}
case 'T':case 't':
{
float a,b,area;
cout<<"请输入三角形底和高";