您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页皮德常c++全套答案

皮德常c++全套答案

来源:保捱科技网


皮德常c++全套答案

5、计算一个人一段时期的薪水,第1天1分钱,第2天2分钱,每天翻倍。要求用户输入天数(输入检验),列表显示每天的薪水,及薪水总和(输出人民币的单位:“元”)。#includeusing namespace std;void main(){int daynum;float daypay, paysum=0;do{cout<<\"请输入天数(>1整数):

\";cin>>daynum;}while(daynum<=1);//有效性检验for(int i=1; i<=daynum; i++){daypay=i/

100、0;cout<<\"第\"<\\";if(i%2==0)cout<7、用for循环计算1/30+2/29+3/28+…+30/1。#includeusing namespace std;void main(){int i;float sum=0;for(i=1;i<=30;i++)sum+=i/float(31-i);cout<<\"sum=\"<8、用循环语句输出如下图形。AAAAAAA AAAAA AAA A AAA AAAAAAAAAAAA#includeusing

namespace

std;void

main(){int

i,j,k;for(i=0;i<=3;i++)//控制行{for(j=0;ji;k--)//

'A'

cout<<'A';cout<i;j--)cout<<' ';//控制每行输出的

第 1 页 共 14 页

' '的数目for(k=0;k<2*i+1;k++)//控制每行输出的'A'的数目

cout<<'A';cout<9、采用循环结构计算公式s的前30项和。

s=2/1+3/2+5/3+…#includeusing namespace std;#define N30void main(

){int

i;float

a1,a2,sum=0,temp;

//a1

,a2

for(a1=2,a2=1,sum=0,i=1;i<=N;i++){sum+=a1/a2;temp=a1; a1=a1+a2; a2=temp; //为下一次求和做准备}cout<<\"\\nsum is : \"<10、求sum=a+aa+…+aa…a,a和n由键盘输入。#includeusing namespace std;void main(){int i,a,n;long sum,temp;sum=temp=0;cout<<\"\\nEnter a

and

n:

\";cin>>a>>n;for(i=1;i<=n;i++){temp=a+temp*10;sum+=temp;}cout<<\"the result is : \"<11、输入一行字符,以回车结束,分别统计其中出现的大写英文字母、小写英文字母、数字字符、空格和其他字符出现的次数。#includeusing namespace std;void

main(){char

c;

enter

int the

lletters=0,uletters=0,spaces=0,digits=0,others=0;cout<<\"Please characters:\\n\";while((c=cinif(c>='A'&&c<='Z')

get())!='\\n'){if(c>='a'&&c<='z')lletters++;else

uletters++; else if(c==' ')

第 2 页 共 14 页

spaces++; else if(c>='0'&&c<='9')

digits++; else others++; } cout<<\"the number of lower case letters: \"<number

of

upper

case

letters:

\"<1、编写求阶乘及组合的函数,在主函数调用求组合的函数。#includeusing namespace std;long fac(int n){long fac=1;for(int i=2;i<=n;i++)fac*=i;return fac;}long comb(int n, int k){return fac(n)/(fac(k)*fac(n-k));}void

main(){int

n,k;cout<<\"Please

input

the

n

and

the

k:

\";cin>>n>>k;cout<<\"the combination number of n and k: \"<2、编写函数计算ex的近似值,在主函数中输入x及精度10-9(要求最后一项小于10-9)。#include#includeusing namespace std;double ex(double x,double eps)

{ int i=1;double e=1,t=1;while(fabs(t)>eps)

{t=t*x/i;e=e+t;i++;} return(e);} void main(){double x,eps;cout<<\"Please inout x and eps:\\n\"; cin>>x>>eps; cout<<\"e**x:\\n\"<3、编写被调函数,求出1000以内 素数,在主函数中调用函数并输出素数,每行输

第 3 页 共 14 页

出5个素数。#include#include#includeusing namespace

std;void

PrimeNum(int

n=1000){

int

i,

j,

k,

flg=1,

num=0;for(i=2;iif(i%j==0)

flg=0;

if(flg==1){cout<4、输出1000以内的所有完数。#include#includeusing namespace std;void print(int n)//输出因子{int i;for(i=1;i<=n/2;i++)if(n%i==0)

cout<wanshu(int n){int i;int

s+=i;if(s==n){cout<5、编写函数(递归和非递归)求两个整数的最大公约数和最小公倍数。#includeusing namespace std;int (int x,int y){int r;r=x%y;while (r!=0){x=y; y=r; r=x%y;}return(y);}//int (int a, int b)//{if(a%b==0)

// return b;//else // return (b, a%b);//}int gbs(int x,int y){int

第 4 页 共 14 页

bs,ys;ys=(x,y);bs=x*y/ys;return bs;}void main(){int x,y,g,bs;cout<<\"Enter two number:

\\n

\";cin>>x>>y;g=(x,y);bs=gbs(x,y);cout<<\"the

:

\"<6、递归函数反序输出数位。#includeusing namespace std;void rev(int x)

/*反向输出*/{if(x>0){cout<>x;cout<<\"reverse:\";if(x<0)

{cout<<\"-\";x=-x;}rev(x); }3-

8、递归函数实现进制到二进制转换。#includeusing namespace std;void fun(int i)

{if(i >1)

fun(i/2);cout<{int n; cout<<\"Please input the decimal number: \";cin>>n; cout<<\"the binary number: \";fun(n); }3-

9、编写函数输出图形。(略)3-

第 5 页 共 14 页

10、编写min函数模板和max函数模板。#include using namespace std;template T min(T &var1,T &var2){if(var1return(var1);else &var2){if(var1return(var2);}template T max(T &var1,T

return(var2);else return(var1);}void main(void){int userInt1,userInt2;float

userFloat1,userFloat2;char userChar1,userChar2;cout<<\"Please input two integar numbers:

\";cin>>userInt1>>userInt2;cout<<\"the

max

min

is: is:

\"<\"<>userFloat1>>userFloat2;cout<<\"the \"<min max

is: is:

\"<>userChar1>>userChar2;cout<<\"the \"<min max

is: is:

11、绝对值函数模板。#include using namespace std;template T Abs(const T var){if(var<0)

return(-var);else return(var);}void main(void){//测试整型量求绝对值int test1=12,test2=-34;cout<<\"

第 6 页 共 14 页

\"<\"<的绝对值为:

12、67f,test4=-

34、43f;cout<<\"测试浮点型量:\"<1、编程实现由用户输入10个数据到数组,输出数组中的最大值和最小值及其相应的下标。#include using namespace std;#define N10void main(){int i,array[N],max,maxid,min,minid;for(i=0;i>array[i];max=min=array[0];maxid=minid=0;for(i=1;imax){max=array[i];maxid=i;}if(array[i]max

of

the

array

is

\"<2、编写函数实现将字符串中每个单词的首字母大写。#include using namespace std;void Words( char str[ ]){int i;char ch=' '; // 存放前一字符for (i=0; str[i]!='\\0'; i++ ){if ( ch == ' ' && str[i] != ' ')

第 7 页 共 14 页

// 单词数首字母{if(str[i]>='a'&&str[i]<='z')str[i]-=32; }ch = str[i];}}void main(){char

str[100];cout<<\"Please

input

a

string:\";cin

getline(str,100);Words(str);cout<4、编程实现线性查找账号,账号由用户输入,若找到,则输出合法信息,否则输出非法信息。#includeusing namespace std;#define arrSize5int searchList(int list[ ], int numElems, int value){for(int i=0; i < numElems; i++ )if( value == list[i] )

return i;return1 )cout << x<< \"为非法账号。\"<< endl;elsecout << x<< \"为合法账号。\";}4-

5、采用二分查找实现上述程序。#include #include using namespace std;#define arrSize5void selectionSort(int a[ ], int n)// 选择排序{int i, j, t, minIndex;for(i=0; iminIndex=j;if( minIndex != i ){t=a[minIndex]; a[minIndex]=a[i]; a[i]=t;}}}//二分查找函数,在a数组中查找valueint binarySearch(int a[ ], int numElems, int value){int low=0, mid, hight=numElems-1;while (low<=hight){mid=(low+hight)/2;if( value == a[mid] )

// 查找成功return mid; else if( value < a[mid] )

//位于数组的前一半hight=mid-1;else low=mid+1; //位于数组的后一

第 8 页 共 14 页

半}return1 )cout << x<< \"为非法账号。\"<< endl;elsecout << x<< \"为合法账号。\";}4-

6、 寻找二维数组中的鞍点(该位置的元素是该行上的最大元素,同时是该列上的最小元素)。#include #include using namespace std;#define M3#define N4 int q1=0, q2=0; //鞍点位置下标int andian(int a[M][N], int p1, int p2){int i, j, k, m, f, w, max;w=0;for(i=0; imax){k=j;max=a[i][j];}//第i行第k列为第i行的最大元素for(m=0, f=1; mf=0;//第i行第k列不是鞍点if(f)

{w=1;q1=i;q2=k;}}return w;} void main( ){int a[M][N]={1,2,3,4,4,5,3,6,3,5,6,7}; /*{2,4,10,6,3,4,5,8,9,1,2,3};*/int w;w=andian(a,M,N);if(w)

{cout<<\"该二维数组存在鞍点:\"<7、编写函数求一个4×4二维数组中周边元素的和。#include using namespace

std;int

arrSum(int

arr[][4]){int

i,j,sum=0;for(i=0;i<4;i++){sum+=arr[i][0];sum+=arr[i][3];}for(j=0;j<4;j++){sum+=arr[0][j];sum+=arr[3][j];}sum-=arr[0][0]+arr[3][0]+arr[0][3]+arr[3][3];return sum;}void main(){int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};cout<<\"该二维

第 9 页 共 14 页

数组的周边元素之和为:\"<8、编写函数求二维数组两条对角线元素之和。#include using namespace

std;#define

N4int

sum(int

main( 素

a[][N]){int

){int \\n\";for

i,s=0;for(i=0;i

(i=0;i>a[i][j];}cout<<\"两条对角线元素之和:\"<9、见例题。4-

10、合并数组,合并前后的数组元素均按升序排列。#include#includeusing namespace std;int merge(int a[],int b[],int

c[],int

m,int

n){int

i=0,

j=0,

k=0;while(ic[k++]=b[j++];return k;}void main( ){int a[]={1,4,7,9},

b[]={3,5,7,8,12},c[20],i,k;k=merge(a,b,c,4,5);cout<<\"array a:\\n\";for(i=0;i<4;i++)cout<array

第 10 页 共 14 页

1、同4-2,形参换成指针即可。5-

3、求一组整数的中值。#include#includeusing namespace std;void selectionSort(int *a, int n)// 选择排序{int i, j, t, minIndex;for(i=0; iminIndex=j;if( minIndex != i ){t=a[minIndex]; a[minIndex]=a[i]; a[i]=t;}}}int mean(int

*a,int

n){int

mean,tmp;selectionSort(a,n);tmp=n/2;if(n%2==0)mean=a[tmp]+a[tmp-1];else mean=a[tmp];return mean;}void main(){int a[100],num,i;cout<<\"输入整数个数(

<100

\";cin>>num;cout<<\"

\"<

\\n\";for(i=0;i>a[i];cout<<\"这组整数的中值是:\"<4、编写一个程序求一组正整数的模。在统计学中,模代表一组值中出现最频繁的数,编写一个函数接受如下两个参数。1)整型数组。2)代表该数组元素个数的一个整数。该函数应当返回这组数的模,即返回该数组中出现最频繁的那个数。如果数组中没有模,即没有最频繁的数,那么就返回-1。

#include#include#include#includeusing namespace std;const int value=10;int Mol(int a[],int value);int main(){ int a[value];srand(time(0));for(int

i=0;i<10;i++){a[i]=rand()%10;cout<f=Mol(a,value);if(f==-1)cout<<\"没有模!\"<第 11 页 共 14 页

\"<{ for(int j=i+1,m=0;j{ if(*(p+i)==*(p+j))

m++; } *(b+i)=m; } for(int l=0;l{ if(*(q+l)>*(q+c))

c=l; } for(int m=0;mif(*(q+m)==*(q+c)&&m!=c)

return

5、在主函数中首先输入一个整数到变量n中,然后输入n个整数到数组中,调用函数exchange(),完成将数组中的最小值与第0个元素对调,将数组中的最大值与最后一个元素对调,在主函数中调用函数print()输出调换前和调换后的数组。要求被调函数exchange和print的参数均为1)数组名2)数组元素的个数。#include#includeusing namespace std;void exchange(int a[],int value);void print(int a[],int value);int main(){int n;cin>>n; int a[100];for(int i=0;i>a[i];cout<<\"调换前为:\"; print(a,n);exchange(a,n);cout<<\"调换后

第 12 页 共 14 页

为:\"; print(a,n);return 0;}void print(int a[],int value){int

*p=a,i;for(i=0;i(a[m]for(i=0,m=0;ia[i])?m=m:m=i; 1);*(j+value-1)=t;}5-

t=*(p+m);*(p+m)=*p;*p=t; t=*(j+m);*(j+m)=*(j+value-

6、在主函数中输入个整数到数组中,调用函数move()完成将数组元素循环移动k位(要求函数参数为

1、数组名

2、数组元素个数

3、循环移动的位数k)。当k>0时,实现循环右移;当k<0时,实现循环左移。循环右移一位的意义是:将数组全体元素向右移动一个元素的位置,原数组最后一个元素移动到数组的最前面,即第0个元素位置。提示:当k<0时,转换成等价的循环右移。调用函数

print()输出移动前和移动后的全体数组元素。

#include#includeusing namespace std;void move(int x[],int value,int

k);void

print(int

x[],int 移

value);int 前

main(){int 为

\";

x[10],i;for(i=0;i<10;i++)cin>>x[i];cout<<\"

print(x,10);move(x,10,3);cout<<\"移动后数组为:\"; print(x,10);return 0;}void print(int

第 13 页 共 14 页

x[],int value){{for(int i=0;i7、在主函数中输入一个字符串到字符数组str1中,调用函数将str1中的下标为奇数的字符取出,构成一个新的字符串放入字符数组str2中(要求被调函数参数为str1和str2),在主函数中输出结果字符串str

2、#includeusing namespace std;void newstr(char str1[],char str2[]);static int m=0;void main(){char str1[100];char str2[100];cout<<\"请输入一个字符串:\"<{ char *p,*q; q=str1; p=str2; int i=0; for(i=0;i<100;i++)

{ if(*(q+i)=='\\0')

第 14 页 共 14 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务