| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1560 人关注过本帖
标题:请懂C语言的哥哥姐姐们帮我解答一下这道题目,小女子感谢
只看楼主 加入收藏
dingfeidj
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-1-4
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:18 
请懂C语言的哥哥姐姐们帮我解答一下这道题目,小女子感谢
1:编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假设正文最后有“.”结束,以“,”或空格分隔,不出现其他符号),编程将所有单词输出,并求其中最长单词的长度,并将该单词输出

2:编写一个程序实现如下功能:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。

3:编写一个程序实现如下功能:有个数组a[100]存放了100个数,这100个数取自1-99,且只有两个相同的数,剩下的98个数不同,编程找出相同的那个数的值

[ 本帖最后由 dingfeidj 于 2010-1-4 14:36 编辑 ]
搜索更多相关主题的帖子: 感谢 解答 小女子 C语言 
2010-01-04 14:34
fqtb16
Rank: 7Rank: 7Rank: 7
来 自:上海
等 级:黑侠
帖 子:96
专家分:504
注 册:2009-12-28
收藏
得分:0 
这是三道题目,不是一道

爱拼才会赢
2010-01-04 14:48
fqtb16
Rank: 7Rank: 7Rank: 7
来 自:上海
等 级:黑侠
帖 子:96
专家分:504
注 册:2009-12-28
收藏
得分:5 
第二题
#include <stdio.h>
#include <string.h>

int main()
{
    char sz[1024] = "";
    char bz[1024] = "";
    int i,j=0,n;
    char c;
    printf("please input the string:\n");
    gets(sz);
    printf("input which one you want delete:\n");
    n=strlen(sz);
    scanf("%c",&c);
    for(i=0;i<n;i++)
    {
        if(sz[i]!=c)
        {
            bz[j]=sz[i];
            j++;
        }        
    }
    printf("%s\n",bz);
    return 0;
}

爱拼才会赢
2010-01-04 15:01
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:5 
第一题:
程序代码:
#include <stdio.h>
#include <string.h>

// 函数说明:输出一行中的所有单词
// 返回值:单词的个数
int OutAllWord(char* szLines)
{
    int nLen = 0;                // 指定字符串的字符串长度
    int nCount = 0;                // 单词的个数
    char szBuffer[1024] = "";    // 当前单词字符串数组
    int nWordPos = 0;            // 当前单词的记录位置标记

    // 判断传入的字符串是否合法
    if (NULL == szLines)
        return -1;

    // 循环判断每个字符,将所有的单词输出到屏幕中去
    nLen = strlen(szLines);
    for (int i=0; i<nLen; i++)
    {
        // 判断当前字符是否为字母
        if (('A' <= szLines[i] && 'Z' >= szLines[i]) || 
            ('a' <= szLines[i] && 'z' >= szLines[i]))
        {// 当前字符是字母
            // 将这个字符放入当前单词字符串数组中
            szBuffer[nWordPos] = szLines[i];
            nWordPos++;
            continue;
        }

        // 判断当前单词是否为空
        if (0 == nWordPos)
            continue;
        
        // 单词个数自增
        nCount ++;
        // 给当前单词加字符串结束符
        szBuffer[nWordPos] = '\0';
        // 输出单词
        printf("%s\n", szBuffer);

        // 当前单词位置标记从0开始标记
        nWordPos = 0;
    }

    // 返回单词个数
    return nCount;
}

// 函数说明:获取指定字符串中最长的单词
// 返回值:返回最长的单词
char* GetMaxLenWord(char* szLines)
{
    int nLen = 0;                // 指定字符串的字符串长度
    char szBuffer[1024] = "";    // 保存字符串中每个单词的数组
    char szMaxWord[1024] = "";    // 最长的那个单词
    int nWordPos = 0;            // 当前单词的记录位置标记
    int nMaxLen = -1;            // 最长的单词长度
    
    // 判断传入的字符串是否合法
    if (NULL == szLines)
        return NULL;
    
    // 循环判断每个字符,记录每个单词,并判断当前单词是否为最长单词
    nLen = strlen(szLines);    
    for (int i=0; i<nLen; i++)
    {
        // 判断当前字符是否为字母
        if (('A' <= szLines[i] && 'Z' >= szLines[i]) || 
            ('a' <= szLines[i] && 'z' >= szLines[i]))
        {// 当前字符是字母
            // 将这个字符放入当前单词字符串数组中
            szBuffer[nWordPos] = szLines[i];
            nWordPos++;    
            continue;// 继续判断下一个字符
        }

        // 当前字符为非字母,则判断当前单词是否为空
        if (0 == nWordPos)
            continue;

        // 判断当前单词的长度是否为最长
        if (nWordPos > nMaxLen)
        {// 当前单词长度为最长
            // 加字符串结束符
            szBuffer[nWordPos] = '\0';
            // 记录最长的单词长度
            nMaxLen = nWordPos;
            // 将当前单词字符串拷贝到最长单词字符串中
            strcpy(szMaxWord, szBuffer);
        }

        // 当前单词位置标记从0开始标记
        nWordPos = 0;
    }
    
    // 返回最长的字符串数组首地址
    return szMaxWord;
}

int main(int argc, char* argv[])
{
    char szTest[] = " A:how are you? B:You!Go to head, Now! A:kao.";        // 测试样本
    int nWordCount = 0;    // 单词个数
    char* szMaxWord;    // 最长的字符串
    
    // 输出测试样本中的所有单词
    nWordCount = OutAllWord(szTest);
    // 输出单词个数
    if (-1 == nWordCount)
        printf("Don't have word!\n");
    else
        printf("The word count is:%d\n", nWordCount);

    // 获取测试样本中的最长的那个单词
    szMaxWord = GetMaxLenWord(szTest);
    if (NULL == szMaxWord)
        return 1;
    // 输出最长的那个单词
    printf("The Max Len Word Is:\n");
    printf("%s\n", szMaxWord);

    return 0;
}

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 15:24
fqtb16
Rank: 7Rank: 7Rank: 7
来 自:上海
等 级:黑侠
帖 子:96
专家分:504
注 册:2009-12-28
收藏
得分:0 
int find(char*num,int size)
{
    int val;
    int i=0;
    for(;i<size;++i)
    {
        if(var[var[i]&0x7F]&0x80)
        {
            val=var[i]&0x7F;
            break;
        }
        var[var[i]&0x7F]|=0x80;
    }
    for(;i>=0;--i)
    {
        var[var[i]&0x7F]&=0x7F;
    }
    return val;
}

int main()
{
        
}
这个是别人的,应该可行,自己加主函数

爱拼才会赢
2010-01-04 15:32
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
收藏
得分:5 
第三提主要就是
for(int j=0;j<=99;j++)
{ for (int i=0;i<99-j;i++)
if (a[i]==a[j])
{
return a[j]
}
}
我太忙了,格式你自己去整。

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2010-01-04 15:33
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
第三题:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char* argv[])
{
    int arrNum[100] = {0};
    int t = 0;    // 交换数组中两个数的临时变量
    int p = 0;  // 交换数组中随机生成的被交换的数组位置
    int i = 0;    
    int j = 0;

    // 初始化随机数种子
    // 如果你在程序中手动的初始化数组或者用户输入,就不用这个随机生成数组的方法了
    srand((unsigned int)time(NULL));

    // 初始化数组
    for (i=0; i<99; i++)
        arrNum[i] = i+1;
    arrNum[99] = rand()%99+1;
    for (i=0; i<100; i++)
    {
        // 随机交换一下数组,为了打乱数组,这样便于测试,也便于对后面的程序理解
        p = rand()%100;
        t = arrNum[i];
        arrNum[i] = arrNum[p];
        arrNum[p] = t;
    }

    // 输出被打乱的数组
    for (i=0; i<100; i++)
        printf("%d ", arrNum[i]);
    printf("\n");

    // 寻找数组中的相同的那个值
    for (i=0; i<99; i++)
    {
        for (j=i+1; j<100; j++)
        {
            if (arrNum[i] == arrNum[j])
            {
                printf("The same number is:%d\n", arrNum[i]);
                return 0;
            }
        }
    }

    return 0;
}

世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 15:40
角落里的娃娃
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2010-1-1
收藏
得分:0 
学习学习!
2010-01-04 16:05
指手画脚
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:334
专家分:560
注 册:2009-12-28
收藏
得分:0 
我把第三题改了改 变成了一个小游戏 看看谁能挑战一下5秒 呵呵!~~
程序代码:
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

#define MEMORYTIMELEN        5 // 5秒记忆时间

// 游戏过程
void Game()
{
    int arrNum[100] = {0};
    int t = 0;    // 交换数组中两个数的临时变量
    int p = 0;  // 交换数组中随机生成的被交换的数组位置
    int i = 0;    
    int j = 0;
    int nInput = -1;    // 用户输入的那个数
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);    // 得到控制台窗口句柄,进而控制控制台的字体颜色

    
    // 初始化随机数种子
    // 如果你在程序中手动的初始化数组或者用户输入,就不用这个随机生成数组的方法了
    srand((unsigned int)time(NULL));
    
    // 初始化数组
    for (i=0; i<99; i++)
        arrNum[i] = i+1;
    arrNum[99] = rand()%99+1;
    for (i=0; i<100; i++)
    {
        // 随机交换一下数组,为了打乱数组,这样便于测试,也便于对后面的程序理解
        p = rand()%100;
        t = arrNum[i];
        arrNum[i] = arrNum[p];
        arrNum[p] = t;
    }
    
    // 输出被打乱的数组
    system("cls");
    for (i=0; i<100; i++)
        printf("%d ", arrNum[i]);
    printf("\n");
    
    printf("你有时间记录这些数字:");
    for (i=MEMORYTIMELEN; i>0; i--)
    {
        printf("\b\b%02d", i);
        Sleep(1000);
    }
    
    system("cls");
    
    // 让用户输入他记录的数字
    printf("你几下的那个相同的数字是:");
    scanf("%d", &nInput);
    
    // 寻找数组中的相同的那个值
    for (i=0; i<99; i++)
    {
        for (j=i+1; j<100; j++)
        {
            if (arrNum[i] == arrNum[j])
            {
                if (arrNum[i] == nInput)
                {
                    SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
                    printf("你猜对了!你的眼里太牛了!\n"
                        "为了证明你的实力,我们再玩一回吧!\n");
                    SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
                }
                else
                {
                    SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED);
                    printf("那个相同的数字是:%d\n"
                    "很遗憾,你没有猜对那个数!你可以重新再尝试一次!\n",
                    arrNum[i]);
                    SetConsoleTextAttribute(hConsole, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
                }
                return;
            }
        }
    }
}
int main(int argc, char* argv[])
{
    while (TRUE)
    {
        Game();
        getch();
    }

    return 0;
}


世界很简单 是非很复杂
有些东西是你的 但是你质疑的多了 可能就不是你的了
2010-01-04 16:05
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1854
专家分:1868
注 册:2004-5-30
收藏
得分:0 
以下是引用指手画脚在2010-1-4 15:40:16的发言:

第三题:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char* argv[])
{
    int arrNum[100] = {0};
    int t = 0;    // 交换数组中两个数的临时变量
    int p = 0;  // 交换 ...
你有必要搞这么复杂吗,GG,也许是DD。人家也没让你生成随机数组哎。
不过你比我勤快多了,给人家写出一堆拓展功能,我连头文件也懒得写。

感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2010-01-04 16:50
快速回复:请懂C语言的哥哥姐姐们帮我解答一下这道题目,小女子感谢
数据加载中...
 
   



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

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