输出是110000000。000(共24个0)
原因在于:
for (i=0;i<26;i++)
printf("%d",pp[i]);pp[]数组初始化为全0, 只有输入对应的字符,比如a,pp['a'-'a']=pp[0]=1,不然pp中元素的值仍为0, 这个for循环把pp数组里面26个元素都输出了,输入ab时,pp[0]=1,pp[1]=1,其余24个元素仍为0,所以输出是110000。.
这里可以加一个条件
for (i=0;i<26;i++)
if(pp[i]!=0)
printf("%d",pp[i]);
这样就可以得到你想要的输出了
另外这个程序还有一个问题,fun(&str[],pp);应该改为fun(str,pp);对于调用字符数组,数组名就表示地址,直接把数组名赋值给一个字符指针。
改正的程序:
#include
#include
void fun(char *str,int pp[])
{
int i;
for (i=0;i pp[str[i]-'a']++; for (i=0;i<26;i++) if(pp[i]!=0) printf("%d",pp[i]); } int main() { int pp[26]; char str[1001]; printf("输入由a~z组成的字符串,中间勿加空格:\n"); scanf("%s",str); memset(pp,0,sizeof(pp)); fun(str,pp); return 0; } 执行结果: 输入由a~z组成的字符串,中间勿加空格: ab 11Press any key to continue private String readtxt(String filename) throws IOException{ BufferedReader br=new BufferedReader(new FileReader(filename)); String str=""; String r=br.readLine(); while(r!=null){ str+=r; r=br.readLine(); } return str; } 直接看代码: #include
修改后的代码如下: #include "stdio.h" #include void fun(char str1[41],char str2[41]) { int i,j,t=0; // t需要一个初值0 for(i=0;str1[i];i++)t++; for(j=0;str2[j];j++)str1[t++]=str2[j]; } main() { char str1[41],str2[41]; int n,i; scanf("%d",&n); getchar(); // 读取数字后面的换行,否则第一次gets会读取回车 for(i=0;i { memset(str1,'\0',sizeof(char)*41); // 每次都重新清空字符数组 memset(str2,'\0',sizeof(char)*41); // 同上 gets(str1); gets(str2); fun(str1,str2); puts(str1); // 输出相加后的结果 } }2.Java SE怎么最简短、最地道的代码把一个文本文件读到一个字符串
3.C语言编程题在屏幕上输入一个字符串和一个要插入的字符
4.一道简单的c语言字符串的链接题目,高分求大神解答