您的当前位置:首页正文

C++上机题讲解

2023-09-26 来源:一二三四网
1.编一函数用选择排序法将下列整形数据从小到大排列 12,45,3,19,5,21,8,-4,17,20

再编写函数用折半查找算法查找21,输出“折半查找算法找到21!”, 并在主函数输出选择排序算法的结果和折半查找的结果。 #include #include void sort(int f[10]) {

int i,j,k;

for(i=0;i<9;i++){

for(j=i+1;j<10;j++){

if(f[i]>f[j]) {k=f[i];f[i]=f[j];f[j]=k;} }

} }

void research(int y[10]) {

int i,n,m;

n=0;m=9; i=(n+m)/2;

while(n<=m&&y[i]!=21) { if(y[i]<21) n=i+1;

if(y[i]>21) m=i-1; i=(n+m)/2; }

if(y[i]==21) cout<<\"折半查找算法找到21!\"; }

void main(void) {

int f[10]={12,45,3,19,5,21,8,-4,17,20},i; sort(f);

cout<<\"选择排序算法的结果为:\\n\";

for(i=0;i<10;i++)

cout<cout<<'\\n';

research(f);

cout<2.建立一个4行5列的二维整型数组int data[4][5],并赋初值给第0行、第1行、第2行和第3行。调用函数max(…)求各列三个元素中的最大值,并将结果存入数组data第4行该列的变量中。最后按4行5列的格式输出数组data的数据,并控制每列数据对齐。

1 2 13 4 15 11 6 【提示】

7 8 9 5 12 3 14 10 (1) 设计一个函数int max(int a,int b,int c)参数为三个整型变

量a、b和c,功能是求出并返回这三者中的最大值。 (2) 结果存入数组data第3行该列的变量中r的方法可以是: data[3][j]=max(data[i][j],data[i+1][j],data[i+2][j]) #include const int N=5;

int max(int a,int b,int c) {int t;

if(a>b&&a>c)t=a; else if(b>a&&b>c)t=b; else t=c; return t; }

void main( ) {int data[4][N]; int i,j;

cout<<\"请输入数组中前3行的值,共18个数\"; for(i=0;i<3;i++)

for(j=0;j>data[i][j]; for(j=0;jdata[3][j]=max(data[i][j],data[i+1][j],data[i+2][j]);} for(i=0;i<4;i++) {for(j=0;jcout<1、函数find用来判断数组a中的数据是升序、降序还是无序。若为升序返回1,若为降序返回2,无序返回3。形参n为数组a中有效整数的个数,数组a从a[1]~a[n]中包含待判断的元素个数。试填写以下各空白处。 int find(int a[],int n) { int s,i;

if (a[1]else s=2;

if (s==1) { i=2; while(i{ if ( (2) ); { s=3; break; }

(3) ; } } if (s==2) }

(1)s=1; (2) a[i]>a[i+1] (3) i++ (4) i(5) ; break;

2、对输入的字符串进行简单加密处理,并输出加密后的字符串。 方法:首先建立一个长度为50的字符数组。随后通过输入流cin读入一个字符串。加密的规则如下:对输入的字符进行判断,如果是数字或者字符,则用其后的一个数字或者字母进行替换。但如果输入的字符是9,Z或者z,则分别用0,A和a代替;如果输入的字符不是

数字或者字母,则保持不变。如输入的字符串为”09AZaz!”,则加密后输出的字符串为”10Baba!”。 #include void main(void) {

char s[50];

cout<<\"请输入一个字符串:\\n\"; cin>>s; for(i=0;s[i];i++) {

if (('0'<=s[i]&&s[i]<= '8')||('a'<= s[i]&&s[i]<='y')||

('A'<= s[i]&&s[i]<='Y'))

}

cout<<\"加密后的字符串为:\\n”<s[i]++;

else if(s[i]== '9') s[i]= '0'; else if(s[i]=='z')

s[i]='a';

else if(s[i]=='Z')

s[i]='A';

}

1.编写程序实现将一个字符串按逆序存放,并输出原字符串和逆序后的字符串(用字符数组和指针两种方法完成,字符串自己定义)。 #include #include

void inverse(char str[]){ }

void main(void){ }

char a[10]=\"students\"; char m; int i,j;

for(i=0,j=strlen(str)-1;im=str[i]; str[i]=str[j]; str[j]=m;

cout<<\"原字符串为:\"<cout<<\"逆序字符串为:\"<2.输入一个字符串以及一个整数n,将串中前n个字符删除后输出。要求用函数实现字符串中的字符删除(用字符数组和指针两种方法完成,字符串自己定义)。

#include #include

int substr(char s[],int n){

if(n>=strlen(s)) return 0; for(int i=n;s[i]!=0;i++)

s[i-n]=s[i];

s[i-n]=0; return 1; }

void main(void){ }

char s1[80]; int n;

cout<<\"输入一个字符串:\";

cin.getline(s1,80); cout<<\"希望删除前几个字符?\"; cin>>n;

int b=substr(s1,n); if(b==0) cout<<\"字符串被清空\"<

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