C编程K& R练习1-13

时间:2013-03-11 02:46:36

标签: c

我需要你帮助我们坚持K& R练习1-13。它的功能!我通过几乎所有的章节来了,但坚持功能。我无法理解如何使用函数。我知道如何做简单的功能,但当我遇到更复杂的功能时,我就会坚持下去!不知道如何传递值,K& R功率函数的例子有点难以理解。但无论如何,我需要你在练习1-13中的帮助,如果它可以让你完成它,那么我可以阅读代码并理解如何使用函数。
  在这里自我锻炼:
 编写程序将其输入转换为小写,使用函数lower(c)如果c不是字母则返回c,如果c是字母则返回小写值

如果您了解某些链接或任何有关如何使用更难的函数的有用信息(不像将字符串传递给main,而是将算法传递给它),请将它们链接起来。

这也不是K& R的2版

2 个答案:

答案 0 :(得分:1)

/*
 * A function that takes a charachter by value . It checks the ASCII value of the charchter
 * . It manipulates the ASCII values only when the passed charachter is upper case . 
 * For detail of ASCII values see here -> http://www.asciitable.com/
 */
char lower(char ch){

    if(ch >= 65 && ch <=90)
    {    ch=ch+32;
    }
    return ch;


}
int main(int argc, char** argv) {
    char str[50];
    int i,l;
    printf("Enter the string to covert ");
    scanf("%s",str);
    /*
     Get the length of the string that the user inputs 
     */
    l=strlen(str);

    /* 
     * Loop over every characters in the string . Send it to a function called
     * lower . The function takes each character  by value . 
     */
    for(i=0;i<l;i++)
    str[i]=lower(str[i]);

    /*
     * Print the new string 
     */

    printf("The changes string is %s",str);
    return 0;
}

答案 1 :(得分:0)

如果你已经阅读了K&amp; R的第1章,其中一个简单的getchar()/ putchar()与while循环组合。用于获取和显示字符,相信你会发现这个程序很熟悉。

#include<stdio.h>

int main()
{

int ch; 
    while( (ch = getchar()) != EOF)
    {
        if((ch>=65)&&(ch<=122))
        {
          if((ch>=97)&&(ch<=122))
              ch=ch-32;
          else if((ch>=65)&&(ch<=90))
          ch=ch+32;
        }
         putchar(ch);
    }
return 0;
}