| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:大小写的变换 不知道哪里出问题了 求教
只看楼主 加入收藏
苦楝子
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-3-18
收藏
 问题点数:0 回复次数:13 
大小写的变换 不知道哪里出问题了 求教
描述
      现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。
输入
第一行只有一个整数m(m<=10),表示测试数据组数。
接下来的m行,每行有一个字符串(长度不超过100)。
输出
输出互换后的字符串,每组输出占一行。

# include <stdio.h>
# include <string.h>
void main()
{
    int n;
    scanf("%d",&n);
    char str[n][100];
    int i;
    for(i=0;i<n;i++)
        gets(str[i]);
    for(i=0;i<n;i++)
    {
        strlwr(str[i]);
        strupr(str[i]);
    }
    for(i=0;i<n;i++)
    {
        puts(str[i]);
        printf("\n");
    }
}
        
不知道哪里出错了啊 请教高手
搜索更多相关主题的帖子: void 测试 include 字符串 
2012-04-03 17:09
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:0 
strlwr和strupr是对整个字符串
2012-04-03 17:22
苦楝子
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-3-18
收藏
得分:0 
定义二维数组 可以char str[n][100]; 这么定义吗
2012-04-03 17:23
苦楝子
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-3-18
收藏
得分:0 
回复 2楼 moonnight
就是想让它对整个字符串啊
2012-04-03 17:24
moonnight
Rank: 5Rank: 5
等 级:职业侠客
帖 子:158
专家分:380
注 册:2012-3-17
收藏
得分:0 
不可以,[]里面必须是常量表达式
至于刚才的意识是:
程序代码:
#include<stdio.h>
#include<string.h>
void main()
{
    char p[10]="aBcDe";
    strlwr(p);//字符串全部转换为小写
    puts(p);
    strupr(p);//字符串全部转换为大写
    puts(p);

 }

 
所以要用strlwr和strupr达到你的要求是不行的
2012-04-03 18:35
lusvan
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-4-3
收藏
得分:0 
错误都给你说出来了 有些建议
# include <stdio.h>
# include <string.h>
#define N 10
#define M 4
void main()
{
    //int n;
    //printf("input\n");
    //scanf("%d",&n);
    char str[M][N];//二维数组的长度一定要标明,除非你直接初始化,但是初始化后第二维仍然不能省
    //并且我觉得你二维的数字设的太大,待会循环会做很多无用功,要么自己改define要么用指针。
    int i,j;
    for(i=0;i<4;i++)
        gets(str[i]);
    for(i=0;i<4;i++)
    {
        //strlwr(str[i]);
        //strupr(str[i]);
        //改为下面(我不知道你的测试数据那一行处理了没有)
        for(j=0; j<=N; j++)
        {
            if(str[i][j]<='z'&&str[i][j]>='a')
                {
                    str[i][j]=str[i][j]-32;
                    continue;
                }   
            if(str[i][j]<='Z'&&str[i][j]>='A')
                str[i][j]=str[i][j]+32;
        }
    }
    for(i=0;i<4;i++)
    {
        puts(str[i]);
        //printf("\n");//puts函数会自动输出换行符。
    }
}
2012-04-03 20:49
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_LENGTH 101

int main()
{
    int m;
    char str[MAX_LENGTH];
    char *p;
    scanf("%d",&m);
    while(m--)
    {
        scanf("%s",str);
        p=str;
        while(*p)
        {
            *p=isupper(*p)?tolower(*p):toupper(*p);
            p++;
        }
        puts(str);
    }
    return 0;
}

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-04-03 21:50
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
回复 楼主 苦楝子
char str[n][100];
好像在c99中才会有这种运行期确定大小的数组,你得确定自己的编译器支持。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-04-03 21:55
chinaflag
Rank: 2
来 自:福建泉州
等 级:论坛游民
帖 子:46
专家分:83
注 册:2012-4-1
收藏
得分:0 
回复 8楼 lonmaor
版主的签名亮了....
2012-04-03 22:04
苦楝子
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-3-18
收藏
得分:0 
好像发现自己的思路错了
2012-04-03 22:19
快速回复:大小写的变换 不知道哪里出问题了 求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013603 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved