#include<stdio.h> #include<string.h> int main() { int i,j,k,l,m,n,o,p,q; char a[1100]; scanf("%d %d %d",&o,&p,&q); scanf("%s",a); l=strlen(a); for(i=0;i<l;i++) { if(a[i]!='-') { printf("%c",a[i]); } else { if(a[i+1]!='-'&&a[i+1]!='\0') { if(a[i-1]>=a[i+1]) { printf("%c",a[i]); } else { if((a[i-1]>='a'&&a[i-1]<='z'&&a[i+1]>='a'&&a[i+1]<='z')||(a[i+1]>='0'&&a[i+1]<='9'&&a[i-1]>='0'&&a[i-1]<='9')&&a[i+1]>a[i-1]) { m=a[i+1]-a[i-1]; if(q==1) { if(o==1) { for(j=0;j<m-1;j++) { for(k=0;k<p;k++) { printf("%c",a[i-1]+j+1); } } } else if(o==2) { for(j=0;j<m-1;j++) { if(a[i-1]>='0'&&a[i-1]<='9') { for(k=0;k<p;k++) { printf("%c",a[i-1]+j+1); } } else { for(k=0;k<p;k++) { printf("%c",a[i-1]+j-31); } } } } else { for(j=0;j<m-1;j++) { for(k=0;k<p;k++) { printf("%c",'*'); } } } } if(q==2) { if(o==1) { for(j=m-2;j>=0;j--) { for(k=0;k<p;k++) { printf("%c",a[i-1]+j+1); } } } else if(o==2) { for(j=m-2;j>=0;j--) { if(a[i-1]>='0'&&a[i-1]<='9') { for(k=0;k<p;k++) { printf("%c",a[i-1]+j+1); } } else { for(k=0;k<p;k++) { printf("%c",a[i-1]+j-31); } } } } else { for(j=0;j<m-1;j++) { for(k=0;k<p;k++) { printf("%c",'*'); } } } } } else printf("%c",a[i]); } } if(a[l-1]=='-') { printf("%c",a[l-1]); } } } }
如果输入二维字符数组,那么最好的输入方式是这样的:
char a[1005][1005];
for(int i = 0;i<1005;i++)
{
scanf("%s",a[i]);
}
至于你的scanf("%c",&a[i][j])出问题是因为,输入数据是有换行的,%c 会把换行读入进去,所以会读入有错误。
这个题我已经解决了 自己改对了 从八分到了十分
我说的输入是输入这个 a b x
c d e
f g h
这样的矩阵 这按照 您那样 空格 是读不了的 输入不到这样的数据
@打着玩: 那你用scanf("%c\n",&a[I][j])
大佬你好强啊,每次都能知道症结所在!
@Shendu.CC: 大佬 问一下 链表如何删除一个想要删除的 元素 然后在输出 为啥我总是少最后一个元素出不来
你不能这样,需要自己思考找到问题,靠别人给你找,你进步很慢的。
– Shendu.CC 5年前@Shendu.CC: 好的
– 打着玩 5年前@Shendu.CC: 请教一个输入问题 我想输入一些字母 就像矩阵那样 所以我定义一个二维字符串 我用两个循环 输入(就是向那个输入矩阵那样) 我用 scanf(“%c”,&a[i][j])他就不行 ,但用cin那个输入就行 或者 scanf(“ %c”,&a[i][j])也对 ,这是为啥啊 为啥%c前面加个空格就对了?
– 打着玩 5年前