題目:輸入字符串以'#'結束:字母全變爲大寫放入數組a中,數字放入數組b中並有序輸出,標點放入數組c中逆序輸出。c++
方法一:數組
#include<stdio.h> #define N 10 int main() { char a[N],b[N],c[N]={0},ch; char *pa=NULL; char *pb=NULL; char *pc=NULL; char *pfa=NULL; int i,a1=0,b1=0,c1=0; pa=a; pb=b; pc=c; while('#'!=(ch=getchar())) { if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') { *pa++=ch; a1+=1; } else if(ch>='0'&&ch<='9') { *pb++=ch; b1+=1; } else { *pc++=ch; c1+=1; } } pa=a; pfa=a; while(pa-pfa<a1) { if(*pa>='a'&&*pa<='z') *pa-=32; pa++; } pa--; for(i=0;i<a1;i++) printf("%c",*pa--); putchar(10); printf("the number of a arry are : %d\n",a1); pb--; for(i=0;i<b1;i++) printf("%c ",*pb--); putchar(10); printf("the number of b arry are : %d\n",b1); puts(c); printf("the number of c arry are : %d\n",c1); return 0; }
方法二:code
#include <stdio.h> #define N 30 int main() { char a[N] = {0}, b[N] = {0}, c[N] = {0}; char ch = 0; int an = 0, bn = 0, cn = 0; int i,j; puts("input your string:"); while(an + bn + cn < N && '#' != (ch = getchar())) { if(ch <= 32) continue; if(ch >= 'A' && ch <= 'Z') a[an ++] = ch; else if(ch >= 'a' && ch <= 'z') a[an ++] = ch - 32; else if(ch >= '0' && ch <= '9') b[bn ++] = ch; else c[cn ++] = ch; } for(i = 0; i < bn - 1; i ++) { for(j = 0; j < bn - i - 1; j ++) { if(b[j] > b[j + 1]) { b[j] ^= b[j + 1]; b[j + 1] ^= b[j]; b[j] ^= b[j + 1]; } } } i = 0; j = an -1; while(i < j) { a[i] ^= a[j]; a[j] ^= a[i]; a[i ++ ] ^= a[j --]; } printf("length:\t%d\tstring:\t%s\n",an,a); printf("length:\t%d\tstring:\t%s\n",bn,b); printf("length:\t%d\tstring:\t%s\n",cn,c); return 0; }