一道C语言2级题目,要求编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中‘a'到’z'26个字母
各自出现的次数,并以数组此放在pp所指数组中。不能改主函数。下面是我的答案#include<conio.h>#include<stdio.h>voidfun(char*t...
各自出现的次数,并以数组此放在pp所指数组中。
不能改主函数。
下面是我的答案
# include <conio.h>
# include <stdio.h>
void fun(char *tt, int pp[])
{
int k;
for (k=0;k<=26;k++)
*(pp+k)=0;
while (*tt>='a'&&*tt<='z')
{k=*tt-'a';
*(pp+k)++;
tt++;}
}
main()
{
char aa[1000];
int bb[26], k;
FILE *out;
printf("\nPlease enter a char string:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26 ; k++)
printf("%d",bb[k]);
printf("\n");
fun("a bosom friend afar brings a distant land near", bb);
out = fopen("out.dat", "w");
for (k = 0; k < 26; k++)
fprintf(out, "%d\n", bb[k]);
fclose(out);
}
编译出现错误:Error executing cl.exe.
C:\Wexam\23010001\prog\prog.c(11) : error C2105: '++' needs l-value
请问这个是怎么回事,不明白啊 展开
不能改主函数。
下面是我的答案
# include <conio.h>
# include <stdio.h>
void fun(char *tt, int pp[])
{
int k;
for (k=0;k<=26;k++)
*(pp+k)=0;
while (*tt>='a'&&*tt<='z')
{k=*tt-'a';
*(pp+k)++;
tt++;}
}
main()
{
char aa[1000];
int bb[26], k;
FILE *out;
printf("\nPlease enter a char string:");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26 ; k++)
printf("%d",bb[k]);
printf("\n");
fun("a bosom friend afar brings a distant land near", bb);
out = fopen("out.dat", "w");
for (k = 0; k < 26; k++)
fprintf(out, "%d\n", bb[k]);
fclose(out);
}
编译出现错误:Error executing cl.exe.
C:\Wexam\23010001\prog\prog.c(11) : error C2105: '++' needs l-value
请问这个是怎么回事,不明白啊 展开
9个回答
展开全部
{k=*tt-'a';
*(pp+k) ++; //此句有问题, *(pp+k) 并非变量,不能进行自加减。
tt++;}
改为: *(pp+k) = *(pp+k) +1; 试试。
void fun(char *tt, int pp[])
{ char *ttt ;
int k;
ttt=tt;
for (k=0;k<26;k++)
*(pp+k)=0;
while ((*tt>='a')&&(*tt<='z'))
{
k=*tt-'a';
(*(pp+k))++;//*(pp+k) = *(pp+k) +1;
tt++;
}
tt=ttt;
}
*(pp+k) ++; //此句有问题, *(pp+k) 并非变量,不能进行自加减。
tt++;}
改为: *(pp+k) = *(pp+k) +1; 试试。
void fun(char *tt, int pp[])
{ char *ttt ;
int k;
ttt=tt;
for (k=0;k<26;k++)
*(pp+k)=0;
while ((*tt>='a')&&(*tt<='z'))
{
k=*tt-'a';
(*(pp+k))++;//*(pp+k) = *(pp+k) +1;
tt++;
}
tt=ttt;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*(pp+k)++;
这句话有问题
error C2105: '++' needs l-value
就是说++操作符需要一个左值
换成pp[k]++;
或者 (*(pp+k))++;
就好了。你试试吧
我试过了。应该是运算符优先级问题
这句话有问题
error C2105: '++' needs l-value
就是说++操作符需要一个左值
换成pp[k]++;
或者 (*(pp+k))++;
就好了。你试试吧
我试过了。应该是运算符优先级问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2楼说的对,你自己写的数组越界了
而且你给PP赋初值是多此一举
你的程序实在搞不懂是要干什么
k=*tt-'a';这句左边是int型右边是char型对不上
*(pp+k)++;这句到底是*(pp+k)加一个地址,而pp+K是想干什么
而且你给PP赋初值是多此一举
你的程序实在搞不懂是要干什么
k=*tt-'a';这句左边是int型右边是char型对不上
*(pp+k)++;这句到底是*(pp+k)加一个地址,而pp+K是想干什么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main()
{
void fun(char *tt,int pp[6]);
char s[500],i;
int a[6];
printf("input char.\n");
scanf("%s",s);
fun(s,a);
for(i=0;i<6;i++)
printf("%d ",a[i]);
}
void fun(char *tt,int pp[6])
{
pp[0]=pp[1]=pp[2]=pp[3]=pp[4]=pp[5]=0;
while(*(tt++)!='\0')
{
if(*tt=='a') pp[0]++;
if(*tt=='a') pp[0]++;
if(*tt=='a') pp[0]++;
{
void fun(char *tt,int pp[6]);
char s[500],i;
int a[6];
printf("input char.\n");
scanf("%s",s);
fun(s,a);
for(i=0;i<6;i++)
printf("%d ",a[i]);
}
void fun(char *tt,int pp[6])
{
pp[0]=pp[1]=pp[2]=pp[3]=pp[4]=pp[5]=0;
while(*(tt++)!='\0')
{
if(*tt=='a') pp[0]++;
if(*tt=='a') pp[0]++;
if(*tt=='a') pp[0]++;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询