下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT(),读取in36.dat中的字符串,并把结果输出到文件out36.dat中。例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayz。注意:部分源程序已给出。请勿改动主函数main()和输入输出函数readwriteDAT()的内容。试题程序:i

题目

下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT(),读取in36.dat中的字符串,并把结果输出到文件out36.dat中。

例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayz。

注意:部分源程序已给出。

请勿改动主函数main()和输入输出函数readwriteDAT()的内容。

试题程序:

include<stdio. h>

include<string. h>

include<conio, h>

include<ctype, h>

define N 81

void readwriteDAT ();

void chg(char as)

{

}

main ( )

{

char a [N];

clrscr ();

printf("Enter a string:");

gets (a);

printf ("The original string is :");

puts (a);

chg (a);

printf("The string after modified :");

puts (a);

readwriteDAT ();

}

void readwriteDAT ()

{

int i;

char a [N];

FILE *rf, *wf;

r f=fopen ("in36. dat", "r" );

wf=fopen ("out36. dat", "w" );

for (i=0;i<10; i++)

{

fgets (a, 81, rf);

chg (a);

fprintf (wf, "%s", a);

}

fclose (rf);

fclose (wf);

}


相似考题
更多“下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍 ”相关问题
  • 第1题:

    程序test.C的功能是:把S字符串中的所有字母改写成该字母的下一个字母,字母2改写成字母a,字母z改写成字母 A,其他字符不做改变。 请考生编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT把结果输出到文件0ut.dat中。例如:S字符串中原有的内容为:Mn.123xyz,则调用该函数后,结果为:N0.123Ayz。 注意:部分源程序存在test.c文件中。 请勿改动数据文件in.dat中的任何数据、主函数main和输出数据函数read writeDAT的内容。


    正确答案:
    【审题关键句】把str字符串中的所有字母改写成该字母的下一个字母。
    【解题思路】
    ①定义局部字符变量ch和字符指针变量P,并使其指向字符串S。
    ②当P所指的字符非空时,把字符*p赋给字符ch,当字符ch不是字母Z或者’Z’时,把字符ch的ASCII码值加1,变成其下一个字符的ASCII码,并把这个值赋给字符*p,否则,如果字符ch是字符Z,则把字符*p的设置为字符’a’,否则,如果字符ch是字符’Z’,则把字符*p的设置为字符’Af,字符指针变量加1,使其指向字符串s的下一个字符,在下一次循环中处理。
    【参考答案】

  • 第2题:

    下列函数的功能是()。includeusing namespace std;void main(){ char a;int i; cin>>a

    下列函数的功能是( )。 #include<iostream> using namespace std; void main() { char a;int i; cin>>a; for(i=1;i<=10;i++) { if((a>= 'a')&&(a<= 'z')) a=a-i; cout<<a; } }

    A.把a中的小写字母变成大写字母

    B.把a中的大写字母变成小写字母

    C.把a中的所有字母变成小写字母

    D.把a中的字符变成它前面i个的字符


    正确答案:D
    解析:该题考查程序的功能,用举例法可显见其功能,不妨设a='d',结果为ca^^^^^^,该程序仅对在小写字母a~2之间的字母起作用。

  • 第3题:

    通过键盘输入一小写字母,将其转换为大写字母输出,并输出该大写字母的后一位字母和前一位字母(如果大写字母为A,则其前一位字母为Z;如果大写字母为Z,则其后一位字母为A)。


    #include<stdio.h>void main(){char c;c=getchar();c=c-32;putchar(c);}

  • 第4题:

    函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。

    例如,原文:Adb.Bcdza

    abck.LLhj

    结果:Aec.Bdeab

    bcdl.LLik

    原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

    注意:部分源程序已给出。

    请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。


    #include
    #include
    #include
    char xx[50][80] ;
    int maxline = 0 ;/* 文章的总行数 */
    int ReadDat(void) ;
    void WriteDat(void) ;
    void ConvertCharA(void)
    {
    int i,j; /*定义循环控制变量*/
    int str; /*存储字符串的长度*/
    for(i=0;i
    {
    str=strlen(xx[i]); /*求得当前行的字符串的长度*/
    for(j=0;j
    if(xx[i][j]>='a' && xx[i][j]<='z') /*如果是小写字母*/
    if(xx[i][j]=='z')
    xx[i][j]='a'; /*如果是小写字母z,则改写成字母a*/
    else
    xx[i][j]+=1; /*其他的小写字母则改写为该字母的下一个字母*/
    }
    }
    void main()
    {
    system("CLS");
    if(ReadDat())
    {
    printf("数据文件IN5.DAT不能打开!\n\007") ;
    return ;
    }
    ConvertCharA() ;
    WriteDat() ;
    }
    int ReadDat(void)
    {
    FILE *fp ;
    int i =0 ;
    char *p ;
    if((fp = fopen("IN5.DAT", "r")) == NULL) return 1 ;
    while(fgets(xx[i], 80, fp) !=NULL)
    {
    p = strchr(xx[i], '\n') ;
    if(p) *p = 0 ;
    i++;
    }
    maxline = i ;
    fclose(fp) ;
    return 0 ;
    }
    void WriteDat(void)
    {
    FILE *fp ;
    int i ;
    system("CLS");
    fp = fopen("OUT5.DAT", "w") ;
    for(i = 0 ; i < maxline ; i++)
    {
    printf("%s\n", xx[i]) ;
    fprintf(fp, "%s\n", xx[i]) ;
    }
    fclose(fp) ;
    }

  • 第5题:

    1、下列描述正确的有

    A.小写字母a到z,它们背后的asc码值是连续的,即'b'=='a'+1; 大写字母也是一样的。

    B.26个字母中,任何一个小写字母的值都大于任何一个大写字母的值,例如 'a' > 'Z'

    C.大写字母‘Z' +1 将变成小写字母 ’a'

    D.int x; x='a'; 是一个合法赋值。同样 printf("%c",x);将输出字母a


    正确