这是915编程学习笔记,仅供自己复习使用,如果你有别的实现方式,欢迎留言。本人是菜鸡一枚,不喜轻喷。考研加油!

持续更新中…【完结,不再更新2019/12/5】
因为比较久没有写C++了,忘得差不多,所以写了点笔记回顾一下
1.向函数传入结构体数组的方式有两种:
利用struct info book[]
利用typedef给结构体再取一个名字book1,之后在用book1去定义数组
2.数组传值的时候直接写函数名即可

3.比较大小后作交换的是结构体整体book[i]

4.字符匹配 strcmp(bookname, book[i].name)==0 时表示匹配成功
注意应该i#nclude<string.h>

5.回车结束字符输入
法一、
char str[100];
cin.getline(str,99); //添加库函数#include <string.h>
法二、
char str[100];
gets(str); //添加库函数 #include <cstdio>

6.判断字符长度
int len=strlen(str); //调用库函数#include <string.h>

7.int k=ch[i]-'0'; //强制类型char型字符转换成int类型,并赋值给整型变量k

8.str[i]-'A' //str[i]是char型数组,转换成数组下标,用来统计大写字母的个数

9.(char)(max+'A') //max为出现字母次数最大的下标,加上’A’后转换成ASSIC码,再强制转换成char型字符,用来输出出现次数最多的字符是什么

下面才是正文!

1.标题判断回文串,以回车结束

#include <iostream>
#include <string.h>
#include<cstdio> //c方式调用的头文件
using namespace std;int main()
{char str[100];//cin.getline(str,99); //c++输入方式gets(str);int len=strlen(str);for(int i=0;i<len/2;i++){if(str[i]!=str[len-i-1]){cout<<"F"<<endl;return 0;}}cout<<"T"<<endl;return 0;
}

2.课程管理系统

#include <iostream>#define N 1using namespace std;typedef struct student
{char name[20];long num;int zc; //正常int cd; //迟到int qj; //请假int kk; //旷课float skl; //上课率float kkl; //旷课率
}stu;void intit_student(stu student[])
{int sum;cout<<"请依次输入学生的姓名、学号、正常上课次数、迟到次数、请假次数、旷课次数"<<endl;for(int i=0; i<N; i++){cin>>student[i].name;cin>>student[i].num;cin>>student[i].zc;cin>>student[i].cd;cin>>student[i].qj;cin>>student[i].kk;sum=student[i].zc+student[i].cd+student[i].qj+student[i].kk; //课程总数cout<<sum<<endl;student[i].skl=(float)(student[i].zc+student[i].cd+student[i].qj)/sum;  //上课率student[i].kkl=(float)student[i].kk/sum;                               //旷课绿cout<<student[i].name<<"的上课率为:"<<student[i].skl<<endl;cout<<student[i].name<<"的旷课率为:"<<student[i].kkl<<endl;}
}void total_info(stu student[])
{int sum=0,sum_sk=0,sum_kk=0;  //sum为课程总数,sum_sk为总的上课次数,sum_kk为总的旷课次数float sum_skl,sum_kkl;  //分别是总的上课率、旷课率for(int i=0; i<N; i++){sum+=student[i].zc+student[i].cd+student[i].qj+student[i].kk;sum_sk+=student[i].zc+student[i].cd+student[i].qj;sum_kk+=student[i].kk;}sum_skl=(float)sum_sk/sum;sum_kkl=(float)sum_kk/sum;cout<<"上课率为:"<<sum_skl<<endl;cout<<"旷课率为:"<<sum_kkl<<endl;
}int main()
{stu student[N];intit_student(student);total_info(student);return 0;
}

3.图书管理系统

#include <iostream>
#include <string.h>
#define N 3
using namespace std;struct info{char name[20];int num;float price;int sale;
};void CreatBook(struct info book[])
{for(int i=1; i<=N; i++){cout<<"请输入第"<<i<<"本书的书名:";cin>>book[i].name;cout<<endl;cout<<"请输入第"<<i<<"本书的库存量:";cin>>book[i].num;cout<<endl;cout<<"请输入第"<<i<<"本书的单价:";cin>>book[i].price;cout<<endl;book[i].sale=0;cout<<endl;}
}
void Compare(struct info book[])
{char bookname[20];cout<<"请输入需要查询的书名:";cin>>bookname;for(int i=1; i<=N; i++){if(strcmp(bookname, book[i].name)==0){book[i].num--;book[i].sale++;}}}
void Output(struct info book[])
{int maxsale;for(int i=1; i<=N-1; i++){maxsale=i;for(int j=i+1; j<=N; j++){if(book[j].sale > book[maxsale].sale)maxsale=j;if(maxsale!=i){info temp=book[j];book[j]=book[maxsale];book[maxsale]=temp;}}}for(int i=1; i<=N; i++){cout<<book[i].name<<":库存为"<<book[i].num<<"   售价为:"<<book[i].price<<"   销量为:"<<book[i].sale<<endl;}}int main()
{info book[N];CreatBook(book);cout<<endl;cout<<"售书"<<endl;Compare(book);cout<<"售书量从大到小排序"<<endl;Output(book);return 0;
}

4.成绩管理系统

#include <iostream>
#define N 3
using namespace std;
typedef struct student
{char name[20];int score;
}stu;void info_student(stu student[], int flag)
{for(int i=0; i<N; i++){cout<<"请输入第"<<i+1<<"个学生的姓名:";cin>>student[i].name;cout<<"请输入第"<<i+1<<"个学生的成绩:";cin>>student[i].score;cout<<endl;}for(int i=0; i<N-1; i++){int min=i;for(int j=i+1; j<N; j++){if(student[j].score<student[min].score)min=j;}stu temp=student[i];student[i]=student[min];student[min]=temp;}if(flag==1) //从小到大排序{for(int i=0; i<N; i++)cout<<student[i].name<<"的成绩为:"<<student[i].score<<endl;}else{for(int i=N-1; i>=0; i--)cout<<student[i].name<<"的成绩为:"<<student[i].score<<endl;}
}
int main()
{int flag;cout<<"按照从小到大排序输入1,否则输入0:";cin>>flag;stu student[N];info_student(student, flag);return 0;
}

5.投票管理系统

#include <iostream>
#include <string.h>
#define N 3
#define M 2
using namespace std;
typedef struct candidate{char name[20];int vote;
}people;void intit_candidate(people man[])
{cout<<"请依次输入"<<N<<"个候选人姓名:";for(int i=0; i<N; i++){cin>>man[i].name;man[i].vote=0;}
}
void StarVote(people man[])
{char Vname[20];for(int i=0; i<N; i++)cout<< man[i].name<<"  ";cout<<endl;cout<<"请根据以上候选人投票"<<endl;for(int i=0; i<M; i++){cin>>Vname;for(int j=0; j<N; j++){if(strcmp(Vname, man[j].name)==0)man[j].vote++;}}for(int i=0; i<N; i++)cout<<man[i].name<<"的得票为:"<<man[i].vote<<endl;
}int main()
{people man[N];intit_candidate(man);StarVote(man);return 0;
}

6.十进制转换任意进制(建议和第20题一起看)

#include <iostream>
#include <math.h>
using namespace std;int main()
{int x,y,temp,m=0,s[100]; //x为十进制数字、y为需要转换的进制//temp是中间变量、m用来记数组下标、s[100]用来存结果cout<<"请输入一个十进制数字:";cin>>x;cout<<"请输入需要转换的进制:";cin>>y;cout<<"十进制x的"<<y<<"进制为:";while(x!=0){temp=x%y;x=x/y;s[++m]=temp;  //将余数存入数组,0号位置不使用}for(int i=m; i>=1; i--)  //输出转换后的进制{if(s[i]>=10)         //将十六进制转换为对应的字母cout<<(char)(s[i]+55); //A的ASCII为65,所以加上55elsecout<<s[i];}cout<<endl;return 0;
}

7.二维数组两条对角线元素之和

#include <iostream>
//#define row 3
//#define column 3
using namespace std;int main()
{int row;int column;int sum=0; //统计总和cout<<"请依次输入行、列:";cin>>row;cin>>column;cout<<"输入数组:";int a[row][column]; //建立二维数组for(int i=0; i<row; i++){for(int j=0; j<column; j++)cin>>a[i][j];}//这里是测试程序用的,方便自己看写的是什么二维数组for(int i=0; i<row; i++){for(int j=0; j<column; j++)cout<<a[i][j]<<" ";cout<<endl;}if(row!=column){cout<<"error"<<endl;return 0;}for(int k=0; k<row; k++){sum+=a[k][k]+a[k][column-k-1]; //自己手动画一个四维数组验算,有规律}cout<<sum<<endl;return 0;
}

8.统计字符串中数字、字母和其他类型字符的个数

#include <iostream>using namespace std;void Judge_String(char str[])
{int num=0,letter=0,other=0;for(int i=0; str[i]!='\0'; i++){if(str[i]>='0'&&str[i]<='9')num++;else if((str[i]>='A'&&str[i]<='Z') || (str[i]>='a'&&str[i]<='z'))letter++;elseother++;}cout<<"数字:"<<num<<endl;cout<<"字母:"<<letter<<endl;cout<<"其他:"<<other<<endl;}
int main()
{char str[100];cout<<"请输入字符数组:";cin>>str;Judge_String(str);return 0;
}

9.去除字符串中所有数字字符,保留其余字符,并存回原来的空间

#include <iostream>using namespace std;void Delete_Digital(char str[])
{int i=0,j=0; //设置两个指证=针遍历,i在前面,j在后面while (str[i]!='\0'){if(str[i]>='0'&&str[i]<='9')i++;        //遇到数字只需要i前进else{str[j]=str[i];i++;j++;}}str[j]='\0';cout<<str<<endl;
}int main()
{char str[100];cin>>str;Delete_Digital(str);return 0;
}

10.从一个整数m中,统计其各位上等于n的数字数目

#include <iostream>using namespace std;int main()
{int m,n,temp,counter=0; //temp用来存储余数,counter是计数器cout<<"青依次输入m、n:";cin>>m;cin>>n;if(n<0 || n>9){cout<<"n越界"<<endl;return -1;}while(m!=0){temp=m%10;if(temp==n)counter++;m=m/10;}cout<<"等于n的位数有"<<counter<<"个"<<endl;return 0;
}

11.最大相容子集合

不会做,贴一份博客上来
活动安排,贪心算法

12.输入几行字符串,字符串以*#*结束,判断输入字符里0-9的数字各有几个

#include <iostream>using namespace std;void Counter(char ch[],int a[],int n)
{int i=0;while(ch[i]!='\0'){if(ch[i]=='*' && ch[i+1]=='#' && ch[i+2]=='*')break;if(ch[i]>='0'&&ch[i]<='9'){int k=ch[i]-'0';   //强制类型转换成int类型的方式a[k]++;}i++;}
}int main()
{int a[10]; //用来计数char ch[100];for(int i=0; i<10; i++)a[i]=0;cout<<"请输入字符串数组:";cin>>ch;Counter(ch,a,10);for(int i=0; i<10; i++)cout<<"数字"<<i<<":"<<a[i]<<"个"<<endl;return 0;
}

13.日期是该年第几天,例如输入日期20170812

#include <iostream>using namespace std;int main()
{int day,month,year,sum,leap;cout<<"请依次输入年、月、日:";cin>>year>>month>>day;switch(month){case 1:sum=0; break;case 2:sum=31; break;case 3:sum=59; break;case 4:sum=90; break;case 5:sum=120; break;case 6:sum=151; break;case 7:sum=181; break;case 8:sum=212; break;case 9:sum=243; break;case 10:sum=273; break;case 11:sum=304; break;case 12:sum=334; break;default:cout<<"error,please input again!"<<endl; break;}sum+=day;if(year%400==0 || (year%4==0)&&(year%100!=0)) //400年肯定是闰年;leap=1;                                   //每4四年是一个闰年,并且这年不能是100的整数倍else                                          //也就是四年一闰,百年不闰;四百年再闰leap=0;if(leap==1&&month>2){sum++;}cout<<"第"<<sum<<"天";return 0;
}

你也可以是数组存起来,用数组下标表示月份。

14.n个小球,m个盒子,每个盒子可以为空,也可以装任意数量的球,一共有多少种装法(球本身可以视作相同,比如123和321视为一种情况)

考试肯定不会,看宝典吧,估计不会再考这种了吧。。。。

15.输入若干点的坐标(x,y),x和y都是整数。当输入(0,0)时表示输入结束。现在要求输入完毕后,输出一个长方形左下角和右下角的坐标。要求长方形区域覆盖所有输入点坐标(若只输入了一个点的坐标,则可以只输出一个点)

我的想法比较粗糙,直接放进一个数组里面去,下标为奇数的存列,下标为偶数的存行,再遍历一遍,分别找出奇数和偶数序列中最大和最小的四个点,那这就是我们想要的。

#include <iostream>
#define maxsize 100
using namespace std;int main()
{int x,y,len=0;  //(0,0)表示退出int a[maxsize];int i=0,j=1;int left,right,bottom,top;cout<<"依次输入(x,y)"<<endl;while(1){cin>>x;cin>>y;if(x==0 && y==0)break;if(j>=maxsize){cout<<"溢出"<<endl;return -1;}a[i]=x;a[j]=y;cout<<a[i]<<","<<a[j]<<endl;i=i+2;j=j+2;len=len+2;cout<<len<<endl;}left=right=a[1];  //left,right左边最低列和右边最高列bottom=top=a[0];    //bottom、top 最低的行和最高的行for(int m=0,n=1; n<=len-1; m=m+2,n=n+2)   //m扫描行,n扫描列{if(a[m]<bottom)bottom=a[m];if(a[m]>top)top=a[m];if(a[n]<left)left=a[n];if(a[n]>right)right=a[n];cout<<bottom<<" ";cout<<top<<" ";cout<<left<<" ";cout<<right<<" "<<endl;}//查看上下左右顶点怎么变化cout<<"第一个顶点为:("<<bottom<<","<<left<<")"<<endl;cout<<"第二个顶点为:("<<bottom<<","<<right<<")"<<endl;cout<<"第三个顶点为:("<<top<<","<<left<<")"<<endl;cout<<"第四个顶点为:("<<top<<","<<right<<")"<<endl;return 0;
}

上面的都是考过的,下面的是宝典后面未考过的几道重点题。实在太简单的就没写了。

16.判断含有空格的回文串

包括递归和非递归两种方式

#include <iostream>
#include <stack>
#include <string.h>
using namespace std;void DeleteSpace(char str[])   //空格去除
{int j=0;for(int i=0; str[i]!='\0';){while(str[i]==' ')i++;str[j++]=str[i++];}str[j]='\0';cout<<"字符串为:"<<str<<endl;
}bool JudgeString_1(char str[],int low,int high)  //利用高低指针递归方式判断是否是回文串
{if(low>high)return true;if(str[low]==str[high])return JudgeString_1(str,low+1,high-1);elsereturn false;
}bool JudgeString_2(char str[])  //利用栈实现
{stack<char> stk;int i=0,j=0;while(str[i]!='\0'){stk.push(str[i]);i++;}while(str[j]!='\0'){if(stk.top()!=str[j]){cout<<"F"<<endl;return false;}j++;stk.pop();}cout<<"T"<<endl;cout<<"输出栈的长度"<<stk.size()<<endl;while(!stk.empty()){cout<<stk.top()<<" "<<endl;}return true;
}int main()
{char str[100];cout<<"输入字符串:";cin.getline(str,99);DeleteSpace(str);int len=strlen(str);cout<<len;cout<<"第一种方式:";if(JudgeString_1(str,0,len-1))cout<<"T"<<endl;elsecout<<"F"<<endl;cout<<"第二种方式:";JudgeString_2(str);return 0;
}

17.给定一个整型数字,统计逆序对个数

//统计逆序对
#include <iostream>
#define N 3
using namespace std;int main()
{int a[N];int count=0;cout<<"输入"<<N<<"个数:";for(int i=0; i<N; i++)cin>>a[i];for(int i=0; i<N-1; i++){for(int j=1; j<N; j++){if(a[i]>a[j])count++;}}cout<<"逆序对有:"<<count<<"个"<<endl;return 0;
}

18.统计字符串中子串出现的次数

//计算字符串中子串出现的次数
#include <iostream>using namespace std;int main()
{char *p1,*p2,s1[20],s2[20];int counter=0;cin.getline(s1,19);cin.getline(s2,19);p1=s1;p2=s2;while(*p1!='\0'){if(*p1==*p2 && *p2!='\0'){p1++;p2++;}elsep1++;if(*p2=='\0'){counter++;p2=s2;}}cout<<"匹配的字符有:"<<counter<<endl;return 0;
}

19.编写input和output函数,输入输出5个学生的数据记录

#include <iostream>
#define N 5
#define M 5
using namespace std;
typedef struct student
{char name[20];char num[20];float score[M];
}stu;void input(stu student[])
{for(int i=0; i<N; i++){cout<<"请输入第"<<i+1<<"个学生的姓名:";cin>>student[i].name;cout<<"请输入第"<<i+1<<"个学生的学号:";cin>>student[i].num;for(int j=0; j<M; j++){cout<<"请输入第"<<i+1<<"个学生的第"<<j+1<<"门成绩:";cin>>student[i].score[j];}cout<<endl;}
}void output(stu student[])
{for(int i=0; i<N; i++){cout<<student[i].name<<"的学号为:"<<student[i].num<<endl;;for(int j=0; j<M; j++){cout<<"第"<<j+1<<"门成绩为:"<<student[i].score[j];cout<<endl;}cout<<endl;}
}
int main()
{stu student[N];input(student);output(student);return 0;
}

20.八进制转十进制(建议和第6题一起看)

//八进制转十进制
#include <iostream>
#define N 20
using namespace std;int main()
{char *p, s[N];p=s;cout<<"请输入要转换的八进制数字:";cin.getline(p,10);int n=0;while(*(p)!= '\0'){n=n*8+(*p-'0');p++;}cout<<"十进制为:"<<n;return 0;
}

21.求一个数字是几位数,并将其逆序打印(不多于5位数),并判断这个数字是不是回文数

//求一个数字是几位数,并将其逆序打印(不多于5位数)
//判断这个数字是不是回文数
#include <iostream>using namespace std;int main()
{int a,b,c,d,e,f;//分别代表个、十、百、千、万long x;     //未知数cin>>x;a=x%10;     //个b=(x/10)%10; //十c=(x/100)%10; //百d=(x/1000)%10; //千e=(x/10000)%10; //万f=(x/100000)%10; //十万if(f!=0)cout<<"error"<<endl;else if(e!=0){cout<<"5位数,逆序为:"<<a<<b<<c<<d<<e<<" ";if(a==e&&b==d)cout<<"是回文数"<<endl;elsecout<<"不是回文数"<<endl;}else if(d!=0){cout<<"4位数,逆序为:"<<a<<b<<c<<d<<" ";if(a==d&&b==c)cout<<"是回文数"<<endl;elsecout<<"不是回文数"<<endl;}else if(c!=0){cout<<"3位数,逆序为:"<<a<<b<<c<<" ";if(a==c)cout<<"是回文数"<<endl;elsecout<<"不是回文数"<<endl;}else if(b!=0){cout<<"2位数,逆序为:"<<a<<b<<" ";if(a==b)cout<<"是回文数"<<endl;elsecout<<"不是回文数"<<endl;}else if(a!=0){cout<<"1位数,逆序为:"<<a<<" ";cout<<"是回文数"<<endl;}return 0;
}

22.用递归的方式逆序输出字符数组

//用递归的方式逆序输出字符数组
#include <iostream>
using namespace std;void fun(char *ch, int k)
{if(ch[k]!='\0')fun(ch, k+1);cout<<ch[k-1];  //因为多递归了一次,所以k是指向结束字符的
}int main()
{char ch[20];cin.getline(ch, 19);fun(ch, 0);return 0;
}

23.递归求5!(当然可以用来求n!)

//递归求5!
#include <iostream>using namespace std;int fun(int n)
{if(n==1)return 1;return n*fun(n-1);
}int main()
{int n=5;int value=fun(n);cout<<value<<endl;return 0;
}

24.求字符串的长度

//求字符串长度
#include <iostream>
#include <string.h>
using namespace std;
int length(char *str);
int main()
{char str[100];cin.getline(str,99);
//    int j=strlen(str);
//    cout<<j<<endl;int len=length(str);cout<<"字符串长度为:"<<len<<endl;return 0;
}int length(char *str)
{char *p=str;int len=0;while(*p!='\0'){p++;len++;}return len;
}

25.将字符从小到大排序

//将字符串从小到大排序
#include <iostream>
#include <string.h>
using namespace std;
void SwapString(char *s1,char *s2)
{char temp[20];strcpy(temp, s1);  //strcpy()用来复制字符串strcpy(s1, s2);strcpy(s2, temp);
}
int main()
{char s1[20], s2[20], s3[20];cin.getline(s1, 19);cin.getline(s2, 19);cin.getline(s3, 19);//从小到大排序if(strcmp(s1, s2)>0) SwapString(s1,s2);if(strcmp(s1, s3)>0) SwapString(s1,s3);if(strcmp(s2, s3)>0) SwapString(s2,s3);cout<<s1<<endl;cout<<s2<<endl;cout<<s3<<endl;return 0;
}

下面的是梁力程序设计里的几道自己总结的重点题

26.找出1~99中能被3整除并且至少有一位数字是5的所有整数、求解水仙花数

//找出1~99中能被3整除并且至少有一位数字是5的所有整数
//水仙花数
#include <iostream>using namespace std;int main()
{int counter1=0;int a,b,c;for(int i=1; i<1000; i++){if(i%3==0){a=i%10; //个位b=(i/10)%10;  //十位c=i/100;  //百位if(a==5 || b==5 || c==5){cout<<i<<" ";counter1++;if(counter1%5==0)cout<<endl;}}}cout<<endl;cout<<"水仙花数"<<endl;for(int i=100; i<1000; i++){int d=i%10; //个位int e=(i/10)%10; //十位int f=i/100; //百位if((d*d*d+e*e*e+f*f*f)==i)cout<<i<<" ";}return 0;
}

27.任给一个自然数将其因式分解

//任给一个自然数将其因式分解
#include <iostream>using namespace std;int main()
{int x;int temp=2;cin>>x;if(x<1)cout<<"error"<<endl;cout<<x<<"=1";while(1){if(x%temp==0){cout<<"*"<<temp;x=x/temp;}elsetemp++;if(x==1)break;}return 0;
}

28.输入一串字符串,以$结束。分别统计数字字符、大写字母出现的次数,并按照大写字母出现的次数从多到少依次输出,不出现的字母不输出

//输入一串字符串,以$结束。分别统计数字字符、大写字母出现的次数,并按照大写字母出现的
//次数从多到少依次输出,不出现的字母不输出
#include <iostream>
#include <string.h>
using namespace std;int main()
{char str[100];int c1[10],c2[26];  //c1统计数字出现的次数c2统计大写字母出现的次数int num=10,letter=0;
//    初始化两个数组for(int i=0;i<10;i++)c1[i]=0;for(int i=0;i<26;i++)c2[i]=0;
//        字符输入cout<<"输入字符并且以$结束:";cin.getline(str,99);
//        数字和字母统计for(int i=0;str[i]!='$';i++){//统计数字个数if(str[i]>='0'&&str[i]<='9'){num++;c1[str[i]-'0']++;  //强制类型转换成int型一定要会}//统计字母个数if(str[i]>='A'&&str[i]<='Z'){letter++;c2[str[i]-'A']++;   //转换成数组下标}}
//    数字出现个数for(int i=0;i<10;i++)cout<<i<<"出现:"<<c1[i]<<endl;cout<<endl;//      字母出现个数for(int i=1;i<26;i++){int max=0;for(int j=1;j<26;j++){if(c2[j]>c2[max])max=j;}if(c2[max]!=0){cout<<(char)(max+'A')<<"出现:"<<c2[max]<<endl;  //注意强制类型转换方式c2[max]=0;}elsebreak;}return 0;
}

29.数组A和B相同元素存储在数组C中

//数组A和B相同元素存储在数组C中
//思想:分别对数组A和数组B进行快速排序,在对其进行遍历
//时间复杂度为O(nlogn)
#include <iostream>using namespace std;//对区间[left,right]进行划分
int Partition(int A[],int left, int right)
{int temp =A[left]; //存放到临时变量tempwhile(left < right) //只要left与right不相遇{while(left < right && A[right] > temp)right--;//反复左移A[left] = A[right];while(left < right && A[left] <= temp)left++;//反复右移A[right] = A[left];}A[left] = temp;    //把temp放到right与left相遇的地方return left;    //返回相遇下标
}
//快速排序,left与right初值为序列下标(例如 1 与 n)
void quicksort(int A[], int left, int right)
{if(left < right) // 当前区间的长度超过1{int pos = Partition(A,left,right);quicksort(A, left, pos-1);  //对左子区间递归进行快速排序quicksort(A, pos+1, right); //对右子区间递归进行快速排序}
}int main()
{int A[100],B[100],C[200];
//  相同元素存储在Cint len_A,len_B,len_C=0;int m=0,n=0;
//    初始化cout<<"依次输入数组A、B的长度:";cin>>len_A>>len_B;cout<<len_A<<"个元素:";for(int i=0;i<len_A;i++)cin>>A[i];cout<<len_B<<"个元素:";for(int i=0;i<len_B;i++)cin>>B[i];//    快速排序quicksort(A,0,len_A-1);quicksort(B,0,len_B-1);
//    求相同元素while(m<len_A&&n<len_B){if(A[m]==B[n]){C[len_C]=A[m];len_C++;m++;n++;}else if(A[m]>B[n])n++;elsem++;}if(len_C>0){cout<<"数组C的元素:";for(int i=0;i<len_C;i++)cout<<C[i]<<" ";cout<<endl;}elsecout<<"两个数组无公共元素"<<endl;return 0;
}

31.数组A与数组B相同元素存到数组C,数组A特有元素存到数组D,数组B特有元素存到数组E

//数组A与数组B相同元素存到数组C
//数组A特有元素存到数组D
//数组B特有元素存到数组E
#include <iostream>using namespace std;int main()
{int A[100],B[100],C[100],D[100],E[100];int len_A,len_B,len_C=0,len_D=0,len_E=0;
//    初始化cout<<"依次输入数组A、B的长度:";cin>>len_A>>len_B;cout<<len_A<<"个元素:";for(int i=0;i<len_A;i++)cin>>A[i];cout<<len_B<<"个元素:";for(int i=0;i<len_B;i++)cin>>B[i];for(int i=0; i<len_A;i++){int flag=0;for(int j=0; j<len_B; j++){if(A[i]==B[j]){flag=1;C[len_C++]=A[i];break;}}//A跟B不同的元素存到D中if(!flag)D[len_D++]=A[i];}for(int i=0; i<len_B;i++){int flag=0;for(int j=0; j<len_C; j++){if(B[i]==C[j]){flag=1;break;}}//A跟B不同的元素存到D中if(!flag)E[len_E++]=B[i];}if(len_C>0){cout<<"数组C中元素有:";for(int i=0; i<len_C; i++)cout<<C[i]<<" ";cout<<endl;}elsecout<<"数组C长度为0"<<endl;if(len_D>0){cout<<"数组D中元素有:";for(int i=0; i<len_D; i++)cout<<D[i]<<" ";cout<<endl;}elsecout<<"数组D长度为0"<<endl;if(len_E>0){cout<<"数组E中元素有:";for(int i=0; i<len_E; i++)cout<<E[i]<<" ";cout<<endl;}elsecout<<"数组E长度为0"<<endl;return 0;
}

32.约瑟夫环,M个人围成一圈,数到第n个人的时候除圈

//约瑟夫环,M个人围成一圈,数到第n个人的时候除圈
#include <iostream>
#define M 8
using namespace std;
int main()
{int a[M],i,j,k;int n;cout<<"输入n的值:";cin>>n;for(i=0; i<M; i++)a[i]=i+1;i=0;for(j=M; j>0; j--){i=(i+n-1)%j; //出圈的编号cout<<"出圈的编号为:"<<a[i]<<endl;for(k=i; k<j-1; k++)a[k]=a[k+1];}cout<<endl;return 0;
}

33.写一个squeeze(s1,s2)函数,它删除字符串s1中与s2中的任意字符相匹配的字符

//写一个squeeze(s1,s2)函数,它删除字符串s1中与s2中的任意字符相匹配的字符
#include <iostream>
#include <string.h>
using namespace std;int squeeze(char s1[], char s2[])
{char *p1=s1, *p2=s2;int len=0;for(int i=0; s1[i]!='\0'; i++){int j=0;while(p2[j]!='\0'){if(p1[i]!=p2[j])j++;elsebreak;}if(p2[j]=='\0')p1[len++]=p1[i];}p1[len]='\0';return len;
}int main()
{char s1[100],s2[100];cout<<"依次输入字符串数组s1、s2"<<endl;cin>>s1;cin>>s2;int len=squeeze(s1,s2);if(len>0)cout<<s1<<endl;return 0;
}

34.函数seekint(s)是实现在字符串中寻找整数的功能,s是由数字字符和非数字字符组成的字符串…

//函数seekint(s)是实现在字符串中寻找整数的功能,s是由数字字符和非数字字符组成的字符串...#include <iostream>using namespace std;void SeekInt(char *s)
{char *p=s;int num[100],len=0;for(int i=0;i<100;i++)num[i]=0;while(*p!='\0'){if(*p>='0' && *p<='9'){char *q=p+1;while(1){if(*q>='0' && *q<='9')q++;elsebreak;}int sum=0;while(p!=q){sum=sum*10+(int)((*p)-48);  //数字字符0的assic码为48p++;}num[len++]=sum;p++;}elsep++;}cout<<"数字字符是:";for(int i=0;i<len;i++)cout<<num[i]<<" ";cout<<endl;
}
int main()
{char str[100];cout<<"输入字符串:";cin.getline(str,99);SeekInt(str);return 0;
}

35.利用结构体数组存放学生的学号、姓名、性别和三门单科成绩,输出总分最高的学生和有一科或者一科以上不及格的学生的各项数据

#include <iostream>
#define N 2
#define M 2
using namespace std;typedef struct student
{long stu_no;char name[20];char sex;float score[M];
}stu;int main()
{stu student[N];
//    初始化cout<<"输入学生的信息:"<<endl;for(int i=0; i<N; i++){cout<<"输入第"<<i+1<<"个学生的学号:";cin>>student[i].stu_no;cout<<"输入第"<<i+1<<"个学生的姓名:";cin>>student[i].name;cout<<"输入第"<<i+1<<"个学生的性别:";cin>>student[i].sex;for(int j=0;j<M;j++){cout<<"输入第"<<i+1<<"个学生的第"<<j+1<<"门成绩:";cin>>student[i].score[j];}}int maxscore=0,maxnum,failnum[N];  //maxnum,failnum[N]分别为最高分和不及格学生的学号int k=0;for(int i=0;i<N;i++){int sum=0;for(int j=0;j<M;j++){sum+=student[i].score[j];if(student[i].score[j]<60)failnum[k++]=i;}if(maxscore<sum){maxscore=sum;  //总分最高的学生成绩maxnum=i;      //总分最高的学生学号}}cout<<"总分最高的学生为:"<<student[maxnum].name<<endl;for(int i=0; i<k; i++)cout<< "不及格的学生为:" << student[failnum[i]].name <<" "<<endl;return 0;
}

完结!大家考研加油!

西安交通大学915考研编程笔记相关推荐

  1. 西安交通大学915考研--编程题Java代码踩坑(2020年真题)

    西安交通大学915考研–编程题Java代码踩坑(2020年真题) 目录 西安交通大学915考研--编程题Java代码踩坑(2020年真题) 2020.1--寻找方程组的解 2020.2--几组数中筛选 ...

  2. 2024西安交通大学计算机考研信息汇总

    西安交通大学(Xi'an Jiaotong University)简称"西安交大",位于古都西安,是中华人民共和国教育部直属.中央直管副部级建制的综合性研究型全国重点大学,由教育部 ...

  3. 西安交大计算机考研分数线2020院线,西安交通大学2020考研复试分数线已公布

    2020西安交通大学考研复试分数线已公布!点击查看>>34所自划线院校2020考研复试分数线.2020考研国家线已公布,当前2020考研考生需全力准备考研复试/调剂工作>>考研 ...

  4. 2021年西安交通大学915研究生考试编程题真题

    本文章仅代表个人见解,请合理使用马克思主义原理"从实际出发"辩证看待本文观点,根据自身基础,谢谢. 西安交通大学2021年研究生考试915计算机软件基础(含数据结构.程序设计)有3 ...

  5. 2023西安交通大学计算机考研信息汇总

    西安交通大学(Xi'an Jiaotong University)简称"西安交大",位于古都西安,是中华人民共和国教育部直属.中央直管副部级建制的综合性研究型全国重点大学,由教育部 ...

  6. 西安交通大学计算机考研资料汇总

    西安交通大学(Xi'an Jiaotong University)简称"西安交大",位于古都西安,是中华人民共和国教育部直属.中央直管副部级建制的综合性研究型全国重点大学,由教育部 ...

  7. 西安交通大学计算机考研考数学几,西安交通大学电子信息专业考研考数学几?...

    西安交通大学考研学院--机械工程学院 机械工程学院是交通大学历史最悠久.实力最雄厚的学院之一,聚集了众多机械工程领域的知名专家及教授,在国内外具有很高的声誉.作为机械工程学科高层次人才培养的重要基地, ...

  8. 西安交通大学915计算机软件基础往年真题编程题答案

    06年真题编程题答案 1 编写函数,用冒泡排序法或选择排序法对输入的 100个整数按从小到大的顺序排列: #include <stdio.h> //冒泡排序算法 void bubbleso ...

  9. 2022年西安交通大学计算机考研复试经验分享 复试成绩90+

    欠了很久的复试帖子!! 这里是初试经验连接http://t.csdn.cn/tewoO 作为二战选手,21年擦线进复试,22年复试成绩90+,复试排名10+. 西交计算机复试21年是线下创新港三天,2 ...

最新文章

  1. 拼多多回应开除程序员:严重违反员工行为规范,因此解约!
  2. matlab读取txt
  3. 实心等腰直角三角形。
  4. VTK:可视化之ScaleGlyphs
  5. Visual Studio LightSwitch初体验和定位看法
  6. Android23版本以上删除HttpClient的解决办法
  7. 向linux内核增加新的系统调用,为linux内核添加新的系统调用
  8. requests-处理不信任的ssl证书
  9. 【Java并发编程:volatile关键字之解析】
  10. Google 要进军游戏行业了?!
  11. java 检测ip网速_使用Speedtest CLI测试你的网速
  12. iOS及Mac开源项目和学习资料【超级全面】
  13. 2.4.4 Profile基本参数
  14. Android 视频播放器
  15. JAVA虚拟机--JVM
  16. 数据类型和存储上的差别,基本数据类型,引用数据类型
  17. 怎么用win7系统的电脑录屏
  18. 智邦国际ERP生产排产缩短生产周期
  19. 自媒体一键多平台分发工具,自媒体人必备
  20. 文章被拒的理由-独木不成林

热门文章

  1. C语言-输出一个菱形图。
  2. 用不惯VMware?比它更快、更轻的虚拟机,横空出世!
  3. 如何做好一个IT项目经理? (一)
  4. select设置选中option
  5. 国内外php主流开源cms、SNS、DIGG、RSS、Wiki汇总
  6. 算法的时间复杂度的计算
  7. swfobject.js 2.2 使用方法
  8. 在vue项目中引入JQuery
  9. idea下maven下载依赖ssl错误
  10. Game Maker:一款教学工具造就了一批独立开发者