c++结课考试例题代码
删除一个字符串中的指定字母,如:字符串 “aca”,删除其中的 a 字母
#include <iostream>
using namespace std;
int main(){
char str[100],a,*p,*q;
cout<<"请输入一个字符串"<<endl;
cin>>str;
cout<<"请输入一个字母,将字符串中的该字母全部删除"<<endl;
cin>>a;
//使指针p等于字符串str
p=str;
while(*p!='\0'){
if(*p==a){
//*p等于需要删除的字母,此时q的地址等于p的地址
q=p;
//利用该while循环对需要删除的字母进行覆盖,后面的统一往前移动一个
while(*q!='\0'){
*q=*(q+1);
q++;
}
}
//如果*p不等于需要删除的字母,则指针向后指
else{
p++;
}
}
//此时需要删除的字母已经全部覆盖,直接输出字符串即可
cout<<str;
return 0;
}
字符串反转,如将字符串 “www.runoob.com” 反转为 “moc.boonur.www”
#include <iostream>
using namespace std;
int main(){
char str[100],*p;
cin>>str;
//让指针的首指向字符串首,随后遍历
p=str;
while(*p!='\0'){
p++;
}
//此时的*p已经是\0,所以要p-1
p--;
//创建循环输出反转字符串
while(*p!='\0'){
cout<<*p;
p--;
}
cout<<endl;
return 0;
}
输入一个字符串,求出其中字符数,数字数,空格数以及其他符号的数量
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
char str[1000],*p;
int a=0,b=0,c=0,d=0;
//gets(str)gets方法输入字符串,空格不代表回车
gets(str);
p=str;
while(*p!='\0'){
if((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z')){
a++;
}
else if(*p==' '){
b++;
}
else if(*p>='0'&&*p<='9'){
c++;
}
else{
d++;
}
p++;
}
cout<<"字母数="<<a<<" 空格数="<<b<<" 数字数="<<c<<" 其他字符="<<d<<endl;
return 0;
}
将一个正整数分解质因数。例如:输入90,打印出90=233*5
#include <iostream>
using namespace std;
int main(){
int a;
cin>>a;
for(int i=a-1;i>1;i--){
int t;
if(a%i==0){
t=i;
}
cout<<t;
}
return 0;
}
判断一个数是否是素数
#include <iostream>
using namespace std;
bool ss(int x){
for(int i=x-1;i>1;i--){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
int x;
cin>>x;
if(ss(x))
cout<<"是素数"<<endl;
else
cout<<"不是素数"<<endl;
return 0;
}
打印出999之内所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方
#include <iostream>
using namespace std;
bool sxhs(int a){
int temp=a;
int t,s=0;
for(int i=0;i<=2;i++){
t=a%10;
s=s+t*t*t;
a=a/10;
}
if(s==temp){
return true;
}
else
{
return false;
}
}
int main(){
int a;
cin>>a;
if(sxhs(a))
cout<<"是水仙花数"<<endl;
else
cout<<"不是水仙花数"<<endl;
return 0;
}
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
#include <iostream>
using namespace std;
int main(){
int a;
cout<<"输入一个数,显示其位数且逆序打印出该数" <<endl;
cin>>a;
int temp=a;
int i=0;
for(a;a>=1;a=a/10){
i++;
}
cout<<"该数字的位数是:"<<i<<endl;
int sum;
while(temp!=0){
sum=sum*10+temp%10;
temp=temp/10;
}
cout<<sum<<endl;
return 0;
}
求一个数的最大公约数和最小公倍数
#include <iostream>
using namespace std;
int gy(int a,int b){
//定义公约函数
int min; //寻找两数中最小值
if(a>b)
min=b;
else
min=a;
for(min;min>=1;min--){ //找到最小值后,最小值逐渐-1寻找最小公约数,但最终一定要大于等于1
if(a%min==0&&b%min==0)
break; //退出循环
}
return min; //返回值为min
}
int gb(int c,int d){
//定义公倍函数
int max; //寻找两数中最大值
if(c>d)
max=c;
else
max=d;
for(max;max<=c*d;max++){ //找到两数中最大值后,最大值逐渐+1,但要小于等于两数之积
if(max%c==0&&max%d==0){
break;
}
}
return max;
}
int main(){
//定义主函数
int x,y;
cout<<"输入两个数,求最大公约数和最小公倍数"<<endl;
cin>>x>>y;
//引用前两个函数
cout<<"最大公约数为:"<<gy(x,y)<<endl;
cout<<"最小公倍数为:"<<gb(x,y)<<endl;
return 0;
}
输入年月日,求这天是今年的第几天
#include <iostream>
using namespace std;
int main(){
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d,s=0;
cin>>y>>m>>d;
if(y%400==0||(y%100!=0&&y%4==0)){
mon[1]=29;
}
for(int i=0;i<m-1;i++){
s=s+mon[i];
}
s=s+d;
cout<<"第"<<s<<"天"<<endl;
return 0;
}
编写一个函数,找出一个英文字符串中出现次数最多的字母
#include <iostream>
using namespace std;
int main() {
//编写一个函数,找出一个英文字符串中出现次数最多的字母
char s[1000],*p; //定义字符串s以及指针p
int a[26]={0}; //因为有26个英文字母,定义int类型数组a26,分别对应每个小写字母
cout<<"输入这段字符,将会得到出现次数最多的字母"<<endl;
cin>>s;
p=s; //令指针指向字符串s
int k; //定义k为int类型数组a26的下标,分别对应每个字母
while(*p!='\0'){
k=*p-'a'; //转换类型,将字符形式转换成下标数字形式
a[k]++; //计数,记录每个下标对应字母出现的次数
p++; //指针指向的地址+1
}
int max=0; //定义中间量max,max表示出现次数最多的字母对应的下标
for(int i=1;i<=26;i++){ //循环26次原因是共26个英文字母
if(a[i]>a[0]){
a[0]=a[i];
max=i;
}
}
char z; //定义最终输出z,使用字符类型
z=max+'a'; //max表示下标,'a'强行转换为ascⅡ码中对应的数字
cout<<"出现次数最多的字母是"<<endl;
cout<<z<<endl;
return 0;
}
单链表以及struct结构的学生学号问题
#include <iostream>
using namespace std;
struct student{
//定义这个学生类里含有姓名,年龄,颜值评分。
char name[10];
int age;
float yanzhi;
//定义指针
student *next;
};
int main(){
student *head,*tail,*p;
for(int i=0;i<5;i++){
p=new student();
cout<<"请输入姓名"<<endl;
cin>>p->name;
p->age=i+10;
p->yanzhi=i+100;
p->next=NULL;
if(i==0){
head=p;
tail=p;
}
else{
tail->next=p;
tail=p;
}
}
p=head;
while(p!=NULL){
cout<<"姓名"<<p->name<<" 年龄"<<p->age<<" "<<p->yanzhi<<" "<<endl;
p=p->next;
}
return 0;
}