天宝妈妈 2021-03-01 17:05 采纳率: 0%
浏览 81

问题 B: 首字母大写:运行没有问题,但在codeup上通不过,不知道错哪儿

#include<stdio.h> 
#include<string.h>

int main(){
	char str[100];
	while(gets(str)!=NULL){
		//printf("1:%s\n",str);
		int n=strlen(str);
		//printf("2:%d\n",n);  	
		int i;
		char ans[100][100];
		int r=0,h=0;
		for(i=0;i<n;i++){
			if(str[i]!=' '&&str[i]!='\t'&&str[i]!='\r'&&str[i]!='\n')
			{
				ans[r][h]=str[i];
				if(h==0&&ans[r][h]>='a'&&ans[r][h]<='z'){
					ans[r][h]=ans[r][h]-32;
				}
				h++;
				//printf("3:r=%d h=%d\n",r,h);
			}		
			else{
				ans[r++][h]='\0';
				h=0;
				//printf("4.1:%c\n",ans[r-1][h]);
				//printf("4:r=%d h=%d\n",r,h);
			}		
		}
		//printf("5:r=%d\n",r);
		for(i=0;i<=r;i++){
			printf("%s",ans[i]);
			if(i<r) printf(" ");
		}
		printf("\n");
	}		
	return 0;
} 

  • 写回答

2条回答 默认 最新

  • 你知我知皆知 2024-07-24 10:24
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    #include <stdio.h>
    #include <string.h>
    
    int main() {
        char str[100];
        while (fgets(str, sizeof str, stdin)) {
            // Process the input string here...
            int len = strlen(str);
            for (int i = 0; i < len; ++i) {
                if (!isalnum(str[i])) {
                    str[i] = ' ';
                }
            }
    
            int r = 0;
            int h = 0;
    
            for (int i = 0; i < len; ++i) {
                if ((str[i] != ' ' && str[i] != '\t' && str[i] != '\r' && str[i] != '\n') || i == len - 1) {
                    strcat(ans[r], str[i]);
                    if (ans[r][h] >= 'A' && ans[r][h] <= 'Z') {
                        ans[r][h] += 32;
                    }
                    h++;
                } else {
                    break;
                }
            }
    
            // Print the result
            for (int i = 0; i <= r; ++i) {
                printf("%s", ans[i]);
                if (i < r) {
                    printf(" ");
                }
            }
            printf("\n");
    
            free(str);
        }
    
        return 0;
    }
    

    这个程序首先读取用户输入的字符串,并将其中的所有非字母数字字符替换为空格。然后,它遍历字符串,将每个非空格字符添加到答案数组中,并将其转换为小写字母。最后,它打印出所有的结果。

    评论

报告相同问题?