目录
4.请使用指针作为循环变量编写字符串的大写字母转小写字母的程序
题目内容
1.文字信息统计
键盘输入一段中英文文章,统计每个字符(包括汉字)的个数,并按照出现的次数从大到小显示出来。
显示格式如下:
字符 个数
举例:
对于字符串:"BAB>$B$B$B>我"
B : 5
$ : 3
> : 2
A : 1
我 : 1
//字符统计
#include<iostream>
#include<cstring>
using namespace std;
//知识要点:结构体|排序
//输入一串字符
//对字符进行归档
//按照词频进行排序输出
struct WordList{
char word[3];//因为有汉字
int freq;
};
int main()
{
//输入
const int N=1000;
char x[N];
cin.getline(x,N);
//储存到数组里
WordList list[N];
int n=0;//对x进行循环
int M=0;//结构体数组计数
//开始定义
int i,j,k;
while (x[n]!='\0')
{
//开始进行判断
for(i=0;i<M;i++)
{
if((x[n]==list[i].word[0])&&x[n]>=0)
{
list[i].freq++;break;
}
if(x[n]==list[i].word[0]&&x[n]<0&&x[n+1]==list[i].word[1])
{
list[i].freq++;n++;break;
}
}
//如果是新的就计入
if(i>=M) //记得加等号
{
if(x[n]>0)
{
list[M].word[0]=x[n];
list[M].word[1]='\0';
}
else if(x[n]<0)//对于中文字符
{
list[M].word[0]=x[n];n++;
list[M].word[1]=x[n];
list[M].word[2]='\0';
}
list[M].freq=1;
M++;
}
n++;
}
//进行选择排序
for(i=0;i<M;i++)
{
k=i;
for(j=i+1;j<M;j++)
{
if(list[k].freq<list[j].freq)
{
k=j;
}
}
if(k!=i)
{
WordList temp=list[i];
list[i]=list[k];
list[k]=temp;
}
cout<<list[i].word<<':'<<list[i].freq<<endl;
}
//输出
return 0;
}
2.设有三个实数变量a、b和c
首先使用各自的指针对它们进行从小到大排序
然后显示排序后的结果
#include<iostream>
using namespace std;
void swap(int *a,int*b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int a,b,c;
cin>>a>>b>>c;
int *pa=&a,*pb=&b,*pc=&c;
if(*pa<*pb) swap(pa,pb);
if(*pa<*pc) swap(pa,pc);
if(*pb<*pc) swap(pb,pc);
cout<<a<<' '<<b<<' '<<c;
}
3.请使用指针作为循环变量编写n的阶乘计算程序
#include<iostream>
using namespace std;
int jiecheng(int *n,int lim)
{
for(int i=1;i<lim;i++)
{
*n*=i;
//cout<<*n<<endl;
}
return *n;
}
int main()
{
int n,lim,*pn=&n;
cin>>lim;
n=lim;
cout<<jiecheng(pn,lim);
return 0;
}
4.请使用指针作为循环变量编写字符串的大写字母转小写字母的程序
#include<iostream>
using namespace std;
int main()
{
char x[100];
cin.getline(x,100);
char *px=x;
while(*px!='\0')
{
//cout<<1<<endl;
if(*px>='A'&&*px<='Z')
{
*px=*px-'A'+'a';
}
px++;
//cout<<px<<endl;
}
for(int i=0;x[i]!='\0';i++)
{
cout<<x[i];
}
}