阶乘字符统计和删除改写排序.docx
《阶乘字符统计和删除改写排序.docx》由会员分享,可在线阅读,更多相关《阶乘字符统计和删除改写排序.docx(9页珍藏版)》请在冰豆网上搜索。
阶乘字符统计和删除改写排序
给定程序中函数fun的功能是:
求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。
字符串数组中共有M个字符串,且串长#include
#include
#defineM5
#defineN20
voidfun(char(*ss)[N])
{inti,j,k=0,n,m,len;
for(i=0;i{len=strlen(ss[i]);
if(i==0)n=len;
if(len>n){
/**********found**********/
n=len;___1k___=i;
}
}
for(i=0;iif(i!
=k)//如果本身不是最大长度
{m=n;
len=strlen(ss[i]);
/**********found**********/
for(j=___2len___;j>=0;j--)
ss[i][m--]=ss[i][j];//字符串右对齐
for(j=0;j/**********found**********/
___3ss[i][j]___='*';
}
}
main()
{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};
inti;
printf("\nTheoriginalstringsare:
\n");
for(i=0;iprintf("\n");
fun(ss);
printf("\nTheresult:
\n");
for(i=0;i}
给定程序MODI1.C中函数fun的功能是:
计算整数n的阶乘。
请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。
#include
doublefun(intn)
{
doubleresult=1.0;
while(n>1&&n<170)
/*********found*********/
result*=--n;改为result*=(double)n--;
/*********found*********/
return_____;改为returnresult;
}
main()
{
intn;
printf("Enteraninteger:
");
scanf("%d",&n);
printf("\n\n%d!
=%lg\n\n",n,fun(n));
}
编写函数fun的功能是:
从s所指的字符串中删除给定的字符。
同一字母的大、小写按不同字符处理。
若程序执行时输入字符串为:
turbocandBorlandc++从键盘上输入字符:
n,则输出后变为:
turbocadborladc++如果输出的字符在字符串中不存在,则字符串照原样输出。
#include
#include
voidfun(chars[],charc)
{char*p=s;
inti=0;
while(*p){
if(*p!
=c)s[i++]=*p;//只处理符合条件的情况
p++;
}
s[i]=0//因为是字符串,最后一位赋结束符
}
main()
{
voidNONO();
staticcharstr[]="turbocandborlandc++";
charch;
printf("原始字符串:
%s\n",str);
printf("输入一个字符:
");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s\n",str);
NONO();
}
voidNONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
FILE*rf,*wf;
chars[81],ch,w;
intlen;
rf=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
fgets(s,80,rf);
fscanf(rf,"%c",&ch);
len=strlen(s)-1;
w=s[len];
if(w=='\n'||w==0x1a)s[len]=0;
fun(s,ch);
fprintf(wf,"%s",s);
fclose(rf);
fclose(wf);
}
给定程序MODI1.C中函数fun的功能是:
将p所指字符串中每个单词的最后一个字母改成大写。
(这里的“单词”是指由空格隔开的字符串)。
例如,若输入”Iamastudenttotaketheexamination.”,
则应输出”IaMAstudenTtOtakEthEexamination.”。
#include
#include
#include
voidfun(char*p)
{
intk=0;
for(;*p;p++)
if(k)
{
/**********found***********/
if(*p=='')
{
k=0;
/**********found***********/
*(p-1)=toupper(*(p-1));//回退一位变为大写
}
}
else
k=1;
}
main()
{
charchrstr[64];
intd;
printf("\nPleaseenteranEnglishsentencewithin63letters:
");
gets(chrstr);
d=strlen(chrstr);
chrstr[d]='';
chrstr[d+1]=0;
printf("\n\nBeforechanging:
\n%s",chrstr);
fun(chrstr);
printf("\nAfterchanging:
\n%s",chrstr);
}
请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
例如,原来的字符串为CEAedca,排序后输出为CedcEAa。
#include
#include
#include
voidfun(char*s,intnum)
{charch;
inti,j;
for(i=1;i<6;i++)
for(j=i+1;j<6;j++){
if(*(s+i)<*(s+j)){
ch=*(s+j);
*(s+j)=*(s+i);
*(s+i)=ch;
}
}
}
main()
{
voidNONO();
chars[10];
printf("输入7个字符的字符串:
");
gets(s);
fun(s,7);
printf("\n%s",s);
NONO();
}
voidNONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
chars[10];
FILE*rf,*wf;
inti=0;
rf=fopen("C:
\\WEXAM\\24990001\\in.dat","r");
wf=fopen("C:
\\WEXAM\\24990001\\out.dat","w");
while(i<10){
fgets(s,10,rf);
s[7]=0;
fun(s,7);
fprintf(wf,"%s\n",s);
i++;
}
fclose(rf);
fclose(wf);
}
请编写一个函数voidfun(char*tt,intpp[]),统计在tt所指字符串中’a’到’z’26个小写字母各自出现的次数,并依次放在pp所指数组中。
例如,当输入字符串:
abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
#include
#include
voidfun(char*tt,intpp[])
{
char*p=tt;
inti;
for(i=0;i<26;i++)pp[i]=0;
while(*p){
if(*p>='a'&&*p<='z')pp[*p-'a']+=1;
p++;
}
}
main()
{charaa[1000];
intbb[26],k;
voidNONO();
printf("\nPleaseenteracharstring:
");scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)printf("%d",bb[k]);
printf("\n");
NONO();
}