编程题:
21.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void fun( char *s,int num)
{
}
main()
{
char s[10];
printf(“输入7个字符的字符串:”);
gets(s);
fun(s,7);
printf(“n%s”, s);
}
23.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>
#define N 80
int fun(char *str)
{
}
main()
{
char s[N] ;
printf(“Enter a string: “) ;
gets(s) ;
printf(“nn”) ;
puts(s) ;
if(fun(s))
printf(” YESn”) ;
else
printf(” NOn”) ;
}
改错题:
33.下列给定程序中,函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其他字符不变。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
void fun(char *s)
{
/********found********/
while(*s != ‘@’)
{
if(*s>=’A’&&*s<=’Z’ || *s>=’a’&&*s<=’z’)
{
if(*s==’Z’)
*s=’A’;
else
if(*s==’z’)
*s=’a’;
else
*s+=1;
}
/********found********/
(*s)++;
}
}
main()
{
char s[80];
clrscr();
printf(“n Enter a string with length<80. :nn “);
gets(s);
printf(“n The string: nn “);
puts(s);
fun(s);
printf(“nn The Cords:nn “);
puts(s);
}
35.下列给定程序中,fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:
I am a student to take the examination.
则应输出:I aM A studenT tO takE thE examination.
请修改程序中的错误之处,使它能得出正确的结果。
注意:不要改动main函数,不得删行,也不得更改程序的结构!
试题程序:
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
void fun ( char *p )
{
int k = 0;
for( ; *p; p++ )
/********found********/
if( k )
{
if(p==’ ‘)
{
k = 0;
/********found********/
* p = toupper ( * (p-1) );
}
}
else
k = 1;
}
main()
{
char chrstr[64];
int d;
clrscr();
printf(“nPlease enter an english sentence within 63 letters: “);
gets(chrstr);
d=strlen(chrstr) ;
chrstr[d+1]=’ ‘ ;
chrstr[d+1] = 0 ;
printf(“nnBefor changing: %s”, chrstr);
fun(chrstr);
printf(“nAfter changing:n %s”, chrstr);
}