练习1.输入一行字符,编写程序使之按逆序输出。
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{
charstr1[60],str2[60];
inti,j=0,k=0;
printf("输入一行字符:");
gets(str1);
printf("逆序输出的结果:");
k=strlen(str1);
for(i=k;i>=0;i--)
{
str2[j]=str1[i];
cout<<str2[j];
j++;
}
cout<<endl;
}
练习2.编写一个程序,在已知字符串“This is a c/c++ program.”中查找某个字符首次出现的位置,若字符串中没有该字符,给出相应信息。
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{
charstr1[]={"This is a c/c++ program."},t;
inti,j=0,k=0;
printf("字符串为:%s\n",str1);
printf("输入字符:");
t=getchar();
printf("起始位置:");
k=strlen(str1);
for(i=0;i<=k;i++)
{
if(t==str1[i])
{cout<<i;break;}
if(str1[i]=='.')
cout<<"无该字符!";
}
cout<<endl;
}
练习3.判断输入的字符串是否为回文。
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{
charstr1[60];
inti,j=0,k=0;
printf("输入字符串:");
gets(str1);
printf("%s:",str1);
k=strlen(str1);
for(i=(k-1);i>=0;i--)
{
if(str1[i]!=str1[j])
{cout<<"非回文!";break;}
else
j++;
if(i==(k-1)/2)
cout<<"是回文!";
}
cout<<endl;
}
练习4.编写一个程序,功能为将读入的一组密码(字符串)按指定规律翻译回原文后输出。解码规律如下:
字 母:变成其后的第3个,且循环转换(例:a→d、W→Z、y→b);
其 它:保持不变。
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{
charstr1[60];
inti,j=0,k=0;
printf("原文:");
gets(str1);
printf("译文:");
k=strlen(str1);
for(i=0;i<k;i++)
{
if(str1[i]>='a'&&str1[i]<='w'||str1[i]>='A'&&str1[i]<='W')
str1[i]=str1[i]+3;
elseif(str1[i]>='x'&&str1[i]<='z'||str1[i]>='X'&&str1[i]<='Z')
str1[i]=str1[i]-23;
}
printf("%s",str1);
cout<<endl;
}
练习5.编程输入N个(例如5个)考生的学号及其成绩,输出平均分和最高分的情况。
提示:此题使用二维整型数组
运行结果示例:
#define N 5
#include<iostream.h>
#include<stdio.h>
#include<string.h>
void main()
{
charstr[N][2];
inti,j,k=0,max=0,add=0;
floataxx;
printf("输入学生考号和成绩:\n");
for(j=0;j<N;j++)
{
gets(str[j]);
add=add+str[j][1];
if(str[j][1]>max)
max=str[j][1];
}
axx=add/5.0;
for(i=0;i<N;i++)
{
if(str[i][1]==max)
break;
}
printf("\n全班平均分为:%3.2f\n",axx);
printf("最高分考生学号和成绩:%s%4d\n",str[i],max);
cout<<endl;
}