(两个字符串是不是一起输入一个又接着输另外一个,这个地方有点小困惑?)
同时输入,我觉得用指针数组比较好;分开输入就无所谓了。
按要求分解字符串,输入两个数M,N,M代表输入的M个待处理的字符串,N代表输出的每串字符串要处理成的位数,不够补0。
例如:
输入:2 8
abc 123456789
输出:abc00000
12345678,90000000
// 答案一:字符串分开输入,单独处理并输出。不一定满足,推荐答案2,第二种代码 /* 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。 例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000” (两个字符串是不是一起输入一个又接着输另外一个,这个地方有点小困惑?) */ #include<iostream> using namespace std; int main() { int m,n; char str[126]; int i,j,k,l,len,flag; cout<<"input 2 numbers:"<<endl; cin>>m>>n; cout<<"输入"<<m<<"个字符串"<<endl<<"每串限制字符数为:"<<n<<endl; for(i=0;i<m;i++) { cout<<"输入第"<<(i+1)<<"个字符串"<<endl; cin>>str; len=strlen(str); if(len<=n) { for(j=len;j<n;j++) { str[j]='0'; } str[n]='\0'; cout<<"结果"<<str<<endl; } else { for(k=len;k<(len/n+1)*n;k++) { str[k]='0'; } str[(len/n+1)*n]='\0'; if(len%n==0) { flag=0; } else { flag=1; } for(l=0;l<(len/n+flag)*n;l++) { cout<<str[l]; if ((l+1)%n==0) { cout<<endl; } } } } system("pause"); return 0; }
程序二:利用指针数组实现
注意的地方:
1:对于 char *str[50]; 指针数组来说,每个数组元素都相当于一个指针变量,所以不分配其指向的空间的话,是无法直接给它赋值让它指向的。
str[i]=(char *)malloc(sizeof(char)*100); gets(str[i]);
2:多次重复输入的时候,需要考虑到缓存区的问题,非常容易出错,这里。使用见下面源码:
fflush(stdin);// 非常重要,避免缓存区的问题3:将字符数组的单个数组元素(即一个指针变量)复制给指针p后(指针的复制,2个指针变量)后,可以用“p[2]”实现对字符串中的单个字符进行操作
char *p=str[i];
/* 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。 例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000” (两个字符串是不是一起输入一个又接着输另外一个,这个地方有点小困惑?) */ //满足要求,字符串一起输入, #include<iostream> using namespace std; int main() { int m,n; char *str[50]; int i,j,k,l,len,flag; cout<<"input 2 numbers:"<<endl; cin>>m>>n; cout<<"输入"<<m<<"个字符串"<<endl<<"每串限制字符数为:"<<n<<endl; fflush(stdin);// 非常重要,避免缓存区的问题 for(i=0;i<m;i++) { str[i]=(char *)malloc(sizeof(char)*100); gets(str[i]); } for(i=0;i<m;i++) { cout<<"输入的字符串:"<<str[i]<<endl; } for(i=0;i<m;i++) //挨个处理字符串 { len=strlen(str[i]); if(len<=n) { char *p=str[i]; for(j=len;j<n;j++) { p[j]='0'; } p[n]='\0'; cout<<"结果"<<str[i]<<endl; } else { if(len%n==0) { flag=0; } else { flag=1; } char *q=str[i]; for(k=len;k<(len/n+flag)*n;k++) { q[k]='0'; } q[(len/n+1)*n]='\0'; for(l=0;l<(len/n+flag)*n;l++) { cout<<q[l]; if ((l+1)%n==0) { cout<<endl; } } } } system("pause"); return 0; }