实验答案234

更新时间:2024-05-23 23:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验2 选择和循环结构程序设计

1. 求三个整数的最大值和最小值。

1) 定义三个整形变量x1、x2、x3,并通过cin输入变量值 2) 用if-else语句对三个整数进行比较,求出最大值和最小值 3) 用cout显示计算结果

#include using namespace std; int main()

{ int x1,x2,x3,max,min;

cout<<\ cin>>x1>>x2>>x3; //求最大值 if(x1>x2) max=x1; else max=x2; if(x3>max) max=x3; //求最小值 if(x1>x2) min=x2; else min=x1; if(x3

cout<<\ cout<<\ return 0; }

2. 下面程序统计字符数组c中0、1、2及其他字符出现的次数,分别存放

在变量i0、i1、i2中,统计结束后输出它们的值。要求:分析出现结果的原因,如何修改使结果正确。 #include using namespace std; int main() {

char c[]=”0123456789001112222”; int i0=0,i1=0,i2=0,i3=0;

for (int i=0;i<19;i++) switch(c[i])

{ case’0’:i0++; case’1’:i1++; case’2’:i2++; default:i3++; }

cout<<”i0=”<

改为

#include using namespace std; int main() {

char c[]=”0123456789001112222”; int i0=0,i1=0,i2=0,i3=0; for (int i=0;i<19;i++) switch(c[i])

{ case’0’:i0++; break ; case’1’:i1++; break ; case’2’:i2++; break ; default:i3++; }

cout<<”i0=”<

3. 判断用户输入正整数n是否为素数,输出判断结果。

#include #include

using namespace std; int main() { int m,i,k;

cout<<\ cin>>m; k=sqrt(m); for (i=2;i<=k;i++) if(m%i==0) break; if(i>k) printf(\ else printf(\ return 0; }

4. 增加实验3的功能,判断用户输入的正整数n是否为素数,直到用户输

入1为止。

1) 用while循环读入正整数n

2) 对于每个正整数n,采用for循环判断是否为素数。 3) 打印输出判断结果

#include #include int main() {

int m,i,k;

cout<<\ cin>>m; while(m!=1) {

k=sqrt(m);

for (i=2;i<=k;i++) if(m%i==0) break; if(i>k)

printf(\ else

printf(\ cout<<\ cin>>m; }

return 0; }

5. 编写一个程序实现两个数之间简单的四则运算。在程序中,提示用户按

表达式顺序输入操作数与运算符。

#include

using namespace std; int main() {

int x1,x2,r; char c;

cout<<\请输入一个四则运算表达式(形如:3+5 3-5 3*5 3/5):\ cin>>x1>>c>>x2; switch(c)

{ case '+':r=x1+x2; break ; case '-':r=x1-x2; break ; case '*':r=x1*x2; break ; case '/':r=x1/x2; break ;

default:{cout<<\操作符输入有误\ }

cout<

6. 增加实验5的功能,是程序运行时,能一次完成多个运算,直至用户输

入字符“N”(在程序中,提示用户输入“Y”或“N”以决定是否继续进行四则运算)。

#include using namespace std; int main() {

int x1,x2,r; char c,m='Y';

while(m!='n'&&m!='N')

{ cout<<\请输入一个四则运算表达式(形如:3+5 3-5 3*5 3/5):\

cin>>x1>>c>>x2; switch(c)

{ case'+':r=x1+x2; break ; case'-':r=x1-x2; break ; case'*':r=x1*x2; break ; case'/':r=x1/x2; break ; default: {

cout<<\操作符输入有误,请重新输入:\}

}

cout<

cin>>m; }

return 0; }

7. 编写程序求用户输入的正整数n的阶乘。

#include using namespace std; int main() {

int i,n;

int s=1; //或是double s=1; cout<<\请输入一个正整数:\ cin>>n;

for(i=1;i<=n;i++) s*=i;

cout<

8. 求?i!(即求1!+2!+…+10!)。

i?110

#include using namespace std; int main() {

int i,j;

int s=1,sum=0; for(i=1;i<=10;i++){ s=1;

for(j=1;j<=i;j++) s*=j; sum+=s; }

cout<<\…+10!=\ return 0; }

实验3 指针与引用

1. 编写程序:定义一个变量,一个指针,建立该变量的引用。对变量进行

初始化,并将指针指向该变量,分别通过指针和引用改变该变量的值,并输出结果进行比较分析。

#include using namespace std; int main() { int x,*p; int &y=x;

x=5; p=&x;

cout<<\ *p=10;

cout<<\ y=11;

cout<<\

return 0; }

2. 编写程序:任意输入10个整数放于数组中,利用指针访问数组,求出

该数组中的最大数max以及最小数min。

#include using namespace std; int main() {

int a[10],i;

cout<<\请输入10个整数:\ for(i=0;i<10;i++) cin>>a[i];

cout< int *p,max,min; p=a; max=*p;

for(i=1;i<10;i++) if(*(p+i)>max) max=*(p+i);

min=*p;

for(i=1;i<10;i++) if(*(p+i)

cout<<\这10个数中,最大的是\最小的是\ return 0; }

3. 编写程序:定义c风格字符串,删掉字符串中的数字字符。

#include using namespace std; void main()

{ char str[20]=\ int i,j;

for (i=0,j=0;str[i]!='\\0';i++) if ( str[i]>'9'||str[i]<'0' ) {

str[j]=str[i]; j++; }

str[j]='\\0' ; cout<

4. 编写程序:定义string类型的字符串,并实现连接、比较、交换功能。

#include #include using namespace std; int main()

{ string s1=\利用“=”为字符串赋值 cout<<\

s3=s1+\利用“+”完成两个字符串的联接 cout<<\连接结果:\

if (s1>s2) //利用“<”进行字符串的比较 cout<<\比较结果:\

else

cout<<\比较结果:\

swap(s1,s2); //利用字符串函数swap()实现两个字符串的互换 cout<<\交换结果:\ return 0; }

实验4 函 数

1. 定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则

判断它是否是直角三角形。 1) 声明函数judge;

2) 实现函数judge,根据输入的三个边长判断是否可以构成一个三角形;

3) 在main中调用judge;

4) 在main中根据judge的返回值判断是否是三角形,如果构成三角形则判断是否为直角三角形,并给出结论。 #include #include

int judge(int i,int j,int k);

void main() {

int a,b,c;

cout<<\请输入三条边:\ cin>>a>>b>>c;

switch(judge(a,b,c)) {

case 0:cout<<\能构成直角三角形\

case 1:cout<<\能构成三角形但不能构成直角三角形\

case 2:cout<<\不能构成三角形\ } }

int judge(int i,int j,int k) {

if(i+j>k&&abs(i-j)

if(i*i+j*j==k*k||i*i+k*k==j*j||j*j+k*k==i*i) return 0; else

return 1;

else

return 2; }

2. 用重载函数实现两个整数和三个整数的排序,按照从小到大的顺序将排

序结果输出。

1) 声明函数sort为重载函数,并根据参数个数的不同分别进行定义; 2) 在main中用cin分别输入两个整数和三个整数;

3) 根据参数个数的不同,调用不同的函数,从而实现重载。

#include

void sort(int a,int b,int c); void sort(int a,int b);

void main() { int a,b,c; cout<<\请输入两个待排序的整数:\ cin>>a>>b; cout<<\按从小到大的顺序排序:\ sort(a,b); cout<>a>>b>>c; cout<<\按从小到大的顺序排序:\ sort(a,b,c); }

void sort(int a,int b) { int temp; if(a>b) {temp=a;a=b;b=temp;} cout<

void sort(int a,int b,int c) { int temp; if(a>b) {temp=a;a=b;b=temp;} if(a>c)

{temp=a;a=c;c=temp;} if(b>c) {temp=b;b=c;c=temp;} cout<

3. 在主函数中输入一个十进制数,调用转换函数把这个十进制数转换成

二、八、十六进制数。

#include void trans(int , int); void main() {

int n;

cout<<\输入一个数:\ cin>>n; trans(n,2); trans(n,8); trans(n,16); }

void trans(int n,int base) //实现进制转换的函数 { int num[20], i=0, j,m=n; do

{ i++;

num[i]=mose; m=m/base; }while(m!=0);

cout<=1;j--)

if(num[j]<10)cout<

cout<

4. 在主函数中定义两个变量,调用交换函数实现两个数的交换。分别用指

针和引用作参数来编写交换函数。(体会引用的作用) //引用作参数

#include

void swap(int &rx,int &ry);

int main() {

int x,y;

x=10; y=5;

cout<<\引用作参数:\

cout<<\交换前:\ swap(x,y);

cout<<\交换后:\ return 0; }

void swap(int &rx,int &ry) //形参是引用 {

int t; t=rx; rx=ry; ry=t; }

//指针作参数

#include

void swap(int *px,int *py); int main() {

int x,y;

x=10; y=5;

cout<<\指针作参数:\

cout<<\交换前:\ swap(&x,&y);

cout<<\交换后:\ return 0; }

void swap(int *px,int *py) //形参是指针 {

int t; t=*px; *px=*py; *py=t; }

int main() {

int x,y;

x=10; y=5;

cout<<\引用作参数:\

cout<<\交换前:\ swap(x,y);

cout<<\交换后:\ return 0; }

void swap(int &rx,int &ry) //形参是引用 {

int t; t=rx; rx=ry; ry=t; }

//指针作参数

#include

void swap(int *px,int *py); int main() {

int x,y;

x=10; y=5;

cout<<\指针作参数:\

cout<<\交换前:\ swap(&x,&y);

cout<<\交换后:\ return 0; }

void swap(int *px,int *py) //形参是指针 {

int t; t=*px; *px=*py; *py=t; }

本文来源:https://www.bwwdw.com/article/6gx7.html

Top