用C语言求解下列问题 5

用户从桌面输入任意多个字符,统计其个数,并将其中的小写字母转化为大写,大写字母和数字不变,其他字符过滤后输出并统计更改后有多少字母。例如我输入123abcABC!@#12... 用户从桌面输入任意多个字符,统计其个数,并将其中的小写字母转化为大写,大写字母和数字不变,其他字符过滤后输出并统计更改后有多少字母。例如我输入123abcABC!@#123输出应该为123ABCABC123,原输入15个,转换后12个。 展开
 我来答
擦擦设置
2015-10-17 · TA获得超过148个赞
知道小有建树答主
回答量:46
采纳率:0%
帮助的人:65.4万
展开全部

代码实现:输入不定长的字符串,对其做相应的处理。

运用malloc和realloc函数实现数组大小的动态分配。

测试平台:Devc++

输入123abcABC!@#123 输出123ABCABC123

输入123abcABC!@#123123123 输出123ABCABC123123123

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
typedef struct Text{
int a;
float b;
char c[10];
}text;
int main(){
    char *p,ch;
    int i=0,j;
    p=(char *)malloc(1*sizeof(char));
    p[0]='\0';
    while((ch=getchar())!='\n'){
     p=(char *)realloc(p,(i+2)*sizeof(char));
     p[i]=ch;
     i++;
     p[i]='\0';
    }
    for(j=0;j<=i;j++){
     if(p[j]<='z'&&'a'<=p[j])
     printf("%c",p[j]-32);
     else if(p[j]<='Z'&&'A'<=p[j])
     printf("%c",p[j]);
     else if(p[j]<='9'&&'1'<=p[j])
     printf("%c",p[j]);
     else
     ;
    }
return 0;
}
追问
请问有没有简单一点的方法,malloc和realloc函数我没学过。我只是个初学者。
追答
限制于C语言,又要求动态数组。我目前没有见过更方便的方法了。
这两个函数百度一下查找怎么使用就可以了。
当然你可以定义个很大的数组,比如char a[100000000],可以放一亿个字符,这样来保证不会放不下(越界),也可以。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式