C程序空白输出有问题

时间:2016-07-03 18:43:05

标签: c

int i=0,j=0;

char string[100], string2[100];
scanf("%s",&string);

while (string[i]!='\0'){
    if(string[i]=='a' || string[i]=='e' || string[i]=='i' || string[i]=='o' || string[i]=='u' || string[i]=='A' || string[i]=='E' || string[i]=='I' || string[i]=='O' || string[i]=='U'){
        string[i]=string2[j];
    }
    string[i] = tolower(string[i]);
    string[i] = string2[j];
    string2[j-1]='.';
}
printf("%s", string2);

return 0;

问题是输入一个单词,然后删除所有元音,添加'。'在每个常数之后,将所有大写字母小写。

1 个答案:

答案 0 :(得分:1)

由于string数组,因此在将&传递给scanf()时不会使用if,这会给你一个双指针,这是一个错误。每当你发现自己有一个10条index()语句时,你只是问问题(例如容易被错别字绊倒。)你可以用i和包含所有字符串的字符串来简化这个测试。元音。在编写代码以指示每个部分实现哪些要求时,评论不会有害。每次循环时j变量都需要递增,每次将新字符添加到string2时,scanf()变量都需要递增。在string之后,您不应该分配到string2,将其视为只读,只会分配到j-1。并且string2不应该发生。最后,由于#include <ctype.h> #include <stdio.h> #include <strings.h> #define VOWELS "AEIOUaeiou" int main() { char string[100], new_string[100] = { 0 }; // enter a word scanf("%s", string); for (int i = 0, j = 0; string[i] != '\0'; i++) { // remove all vowels if (index(VOWELS, string[i]) == NULL) { // make all upper case letters lower case new_string[j++] = tolower(string[i]); if (isalpha(string[i])) { new_string[j++] = '.'; // add '.' after every consonant } } } printf("%s\n", new_string); return 0; } 未初始化,因此可能存在垃圾并且您没有将其终止。把它们放在一起:

    Class First{
          //Declare That Character object as a static public here
          //Player1;
           }
    Class Second{
          //First Create Object Of that class....
          First f = new First(//Parameter For Constructor);
          f.Player1;

           }

我假设“在每个常数之后”意味着“在每个辅音之后”,否则请澄清常数的含义。