求问一下这两个题为什么说我答案不对呀 谢谢愿意回答我的人![face]emoji:013.png[/

求问一下这两个题为什么说我答案不对呀 谢谢愿意回答我的人![face]emoji:013.png[/face][face]emoji:013.png[/face][face]emoji:013.png[/face]

题目说了计算结果不超过双精度范围,要用数据类型double,你用的 float时单精度范围,数据大时溢出了。

 

附注:求赞助积分和C币。加入CSDN将近20年了。最近几年忙小孩没登录。刚才搜索到一本电子书想下载,需要20积分/C币。赞助多少都可以。多谢。

谢谢!能麻烦问下第二题吗? 另外我刚用这个软件要怎样才能赞助积分呢?

第二题代码能看清,但代码前面的输入和代码后面的结果看不清。能截大一点的图吗?

 

我也不知道该如何赞助积分和C币。几年没登录了,搞不清门道了。以前我回答过很多问题,也没记录了。

没有积分没关系啊。

 

这样的评论可以发图。看了代码是把小写字母转为大写字母。还是需要大一点的图看前面和后面才知道是什么问题。

7-8单词首字母大写(15分) 本题目要求编写程序,输入-行字符,将每个单词的首字母改为大写后输出。所谓“单词” 是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以多个.

输入格式:How are you? 输出格式How Are You?

测试多个空格,长短字符串的时候显示答案错误

谢谢了!

有几个方面的问题。

1. 代码太复杂。太复杂就容易考虑不周到。需要分治(devide and conquer)。这样不需要把很多复杂的问题放一起思考。

2. 可以定义一个函数专门把单词首字母大写。主函数就值考虑输入和输出以及调用这个函数。

3. 你的代码读一个字符就写出去,屏幕太乱,看不清。我喜欢读一行再处理。

4. 你有的地方遇到费字母字符没有输出,直接扔掉,然后读下一个字符。扔掉字符会造成输出字符少了。而且如果行尾有空格,你还要读,但是没字符了。

下面代码运行通过了。你看一看是不是你想要的。

#include <stdio.h>
#include <stdlib.h>

char* capitalize(char* line)
{
    int start = 1;
    char* p;
    
    while (*(p = line++))
    {
        if (start && *p >= 'a' && *p <= 'z')
            *p -= 32;
        
        start = *p == ' ' || *p == '\t';
    }
}


int main(void)
{
  char buffer[1024];
  size_t size = 0;
  size_t len = 0;
  char* line = buffer;

  printf("Please enter a line:\n");
  len = getline(&line, &size, stdin);
  
  capitalize(line);
  printf("After capilalizing words:\n%s\n", line);
  return 0;
}


// output
Please enter a line:                                                                                                                                                               
How    are      you!                                                                                                                                                               
After capilalizing words:                                                                                                                                                          
How    Are      You!