编个程序要求满足以下功能将字符串数组中每一行中的大写字母A、B、C都换成数字2,并且去除字符串中的连字符号‘-’,但是数字保持不变。设字符串数组有3行。例如:字符串内容为:输出的内容为A-BC-CBC222222A-12- 3C-3-1 4
楼主,分值是不是少了点啊???
#include
main()
{int i,j,k;
char a[10][10];
for(i=0;i<10;i++)/*字符数组赋值*/
scanf("%s",a[i]);
for(k=0;k<10;k++)
{
for(i=0;i<10;i++)/*扫描字符是否是‘-’,如果是,删除。 此处可以看做一维的来考虑了*/
{if(a[k][i]=='-')
for(j=i;j<10;j++)
a[k][j]=a[k][j+1];/*删除的方法,将后面字符依次前移动*/
}
for(i=0;i<10;i++)
if(a[k][i]=='A'||a[k][...全部
楼主,分值是不是少了点啊???
#include
main()
{int i,j,k;
char a[10][10];
for(i=0;i<10;i++)/*字符数组赋值*/
scanf("%s",a[i]);
for(k=0;k<10;k++)
{
for(i=0;i<10;i++)/*扫描字符是否是‘-’,如果是,删除。
此处可以看做一维的来考虑了*/
{if(a[k][i]=='-')
for(j=i;j<10;j++)
a[k][j]=a[k][j+1];/*删除的方法,将后面字符依次前移动*/
}
for(i=0;i<10;i++)
if(a[k][i]=='A'||a[k][i]=='B'||a[k][i]=='C')
a[k][i]=50;
}
for(k=0;k<10;k++)
printf("%s\n",a[k]);
}
程序运行过了,没问题的。
我们要处理的数据是只有ABC和数字、-组成,别的字符我没有考虑,如果题目有要求,你可以尝试改一下。
对字符串赋值的问题就不用解释了吧。
按题目的要求,要处理的主要是两个问题,1:将字符串中的A,B,C字符换成2,2的ASCII就是50,程序里面的50就是这个原因了。
2:将字符串中的‘-’删除掉。
对于上面的问题,我首先处理的删除‘-’的问题,扫描字符串,对于二维字符数组,我们先考虑一维的,然后增加一维扫描就好了。判断字符数组中字符是不是‘-’,如果是,将后面的字符依次前移动。
那么这个时候就没有‘-’字符存在了
我们接着重新扫描字符串,如果字符是‘A’‘B’‘C’那么替换掉,替换成‘2’ASCII就是50,你也可以用a[k][i]='2'这样处理,这个时候就得到你要的程序结果了。
我们输出结果检查,满足要求,OK了
这个是比较简单的思路,你可以写下函数调用的程序,也可以尝试写下关于指针处理的函数,祝你好运。
呵呵,第一句话,和你看玩笑了。收起