帮我C语言改改错~谢谢!!

作者&投稿:徵临 (若有异议请与网页底部的电邮联系)
C语言,各位帮忙改改错~

#include
#include

void fun (char *s,char *t)
{
int i,j,sl;
sl=strlen(s);
if(sl%2)
{
sl--;
}
else
{
sl-=2;
}
for(i=sl,j=0;i>=0;i=i-2)
{
t[2*j]=s[i];
t[2*j+1]=s[i];
j++;
}
t[2*j]='\0';
}

main()
{ char s[100],t[100];
clrscr();
printf("
please enter string s:");scanf("%s",s);
fun(s,t);
printf("the result is:%s
",t);
getch();
}
你只要把上面的循环里面i--换成i=i-2就行了。

scanf("%d,%d",i,j);

这里要取地址

并且你只能运行一遍阿,外面挂个while(1),当choice是3的时候,输出,并且return,否则继续。

/*指针变量t在声明了之后没有赋值就直接引用了,在每a[]记录其地址以后,应重新分配,否则记录的只是最后的一个数字。
*char * t = (char *) malloc(5 * sizeof(char));
**********************************************************/

#include "stdio.h"
int main()
{
int i ,num=0, n=1, j=0, k=0 ;
char *p ,* a[20] , * t = (char *) malloc(5 * sizeof(char));
p="a1b23jp12387 55bhg45n";
for (i=0;(*(p+i))!='\0';i++)
{
if((*(p+i)>='0') && (*(p+i)<='9'))
{
n=0;
t[j++]=*(p+i);
}
else if(n==0)
{
num=num+1;
t[j]='\0';
a[k++]=t;
t = (char *) malloc(5 * sizeof(char));
j=0;
n=1;
}
}
printf("there are %d number\n", num);
for(i=0;i<k;i++)
printf("%s\n",a[i]);
return 0;
}

厄,没看到楼上已经贴了,代码改动是对的(至少结果是对的)。
VC中需要包含stdlib.h,否则不能用malloc.h

----------------------------------

指针t没有初始化,直接引用t[j++]将导致非法引用。

需要注意的是:
如果在循环外围初始化t,则会导致a[k++]=t中,a的各元素指针始终不变,最终printf出来的a[i]将是不变的。

你的程序有两个问题:
1) t你没有分配空间,而直接分配一个指针,如果t指向的单元被占用了,就不能分配,导致内存不能READ.
2)t ,虽然存放了每次得到的数,但是下一次的时候,又被覆盖了,导致你的数组指针中指向的单元都是相同单元,就是最后的一个数45,所以应该把t定义成2维数组,使前面的数不被覆盖。
————————————————————————————-
以下是我修改过后你的程序。(已通过调试VC6.0)
———————————————————————————————
#include <stdio.h>
void main()
{int i ,num=0, n=1, j=0, k=0 ,m=0;char *p ,*a[20] , t[30][30] ; //把t定义成2维数组

p="a1b23jp12387 55bhg45n";
for (i=0;(*(p+i))!='\0';i++)
{ if((*(p+i)>='0') && (*(p+i)<='9'))
{n=0;t[m][j++]=*(p+i);}
//每分辨出一个数,就把他换向另一行
else if(n==0){num=num+1;t[m][j]='\0';a[k++]=t[m];j=0;n=1; m++;
}
}
printf("there are %d number\n", num);
for(i=0;i<k;i++)printf("%s\n",a[i]);}

#include <stdio.h>
#include <string.h>

void main()
{
char* p="a1b23jp12387 55bhg45ndsf454353";
int index[20], i=0, k=0;
while (*(p+i)!='\0')
{
if ((*(p+i)>='0') && (*(p+i)<='9'))
{
index[k++]=i;
}
i++;
}
index[k++]=index[k-1]+2;

int x=index[0], j=0;
char output[20];
for (i=1; i<k; i++)
{
if (index[i]-index[i-1]>1)
{
memset(output, 0, 20);
memcpy(output, p+x, i-j);
printf("%s\n",output);
x=index[i];
j=i;
}
}
}

for (i=0;(*(p+i))!='\0';i++)
{if((*(p+i)>='0') && (*(p+i)<='9'))
{n=0;t[j++]=*(p+i)-'0';}
改为:t[j++]=*(p+i)-'0'就行了,字符转数字!
另外给你提供一个参考的源程序:
#include <stdio.h>
int fun (char *c,int *b)
{
int j=0;
long sum=0;
for (;*c!='\0';c++)
{
while (*c>='0'&&*c<='9')
{
sum=sum*10+*c-'0';
c++;
}
if (sum>0)
{
b[j++]=sum;
sum=0;
}
}
return j;
}

main()
{
char s[100];int i,n,b[40];
printf("enter a string:\n");
n=string(s,b);
printf("count=%d\n",n);
printf("the int numberes is:\n");
for (i=0;i<n;i++)
printf("%4d",b[i]);
}
VC++6.0及TC2.0测试通过!
输入:kfdf123df34/??f456
输出:count=3
123 34 456


C语言求改错
一、denominator=denominator+3 (- -||| 这也太粗心了吧)二、错在判断while()上,当item为负数,如-1\/4时就退出循环了。可以考虑加个if判断 while(1.0*item>=eps){ item=flag*1.0\/denominator;flag=-flag;s=s+item;denominator=denominator+3;if(item<0) \/\/加这两句,相当于把负数变...

初学c语言,求改错。 error C2228: left of '.name' must have class\/s...
e:\\1.cpp(35):error c2227:left of '->date'must point to class\/struct\/union 错误的原因是:指针类型变量才能使用->引用操作符 e:\\1.cpp(35):error c2228:left of '.tag'must have class\/struct\/union type 错误的原因是:非指针结构体变量.引用操作符,也就是.tag左边的变量不是指针变量...

帮我编个简单的C语言程序(改错)
1要改成1.0,180要改成180.0,不然算出来的是0.000000,注意是否是相同类型的数

c语言问题,我们老师要求改错,我实在不懂怎么改。。求大神
include<stdio.h>void main(){ short x,y; float average; \/***found***\/ scanf("%hd%hd",&x,&y) \/***found***\/ average=(x+y)\/2.0; \/*averaging the two numbers*\/\/***fpound***\/ printf("average=%f\\n",average);} include <stdio.h>#define PI (3.1415926)int ...

C语言改错:藏头诗:输入一组英文单词(不超过8个),要求按输入顺序取出每个...
结尾缺少结束符 include <stdio.h>#include <stdlib.h>char * change(char *s[ ], int n);int main(void){ int i,n;char poem[8][20], *p[8];scanf("%d",&n);for(i = 0; i < n; i++){scanf("%s",poem[i]);p[i] = poem[i];}printf("%s\\n", change(p, n));\/...

C语言改错,输出一张华氏温度与摄氏温度转换的表格,华氏温度取值在lower...
include<stdio.h>int main(void){int fahr,lower,upper;double celsius;lower=30;upper=40;printf("fahrcelsius\\n");for (fahr=lower;fahr<=upper;fahr=fahr+2)\/\/;\/\/<---{celsius=5*(fahr-32.0)\/9;printf("%3.0f%6.1f\\n",(float)fahr,celsius);\/\/<---}return 0;} ...

c语言改错题
占位答题 3 include <stdio.h> sum ( int arr[ ],int n ){ int i,s;system(“CLS”);s = 0;for ( i=0; i<n; i++)if (arr[i] % 2 == 0)\/***found***\/ s = s + arr[i]; \/\/i 为 arr[i] 数组元素 return (s);} main(){ int a[10]={10,4,2,7,3,...

我在用C语言编程时,编译后总出现Error:spawning C1.exe的错误,看不懂...
具体的解决方法:1、在菜单栏的【工具】(Tools)中选择【选项】(Options),在打开的对话框中选择【路径】(Directories);在右边的目录“Show directories for:”下拉表中选择【可执行文件】(Executable files),再看下面有没有cl.exe文件所在的目录,如果不对修改之。2、Executable files其路径至少包含...

这个c语言程序错误处在哪里,需要指明。如何加以改进,希望提醒一下我,谢...
printf("请输入你所需要计算的数据,人若是周长则输入1,若是面积则输入2");\/\/原程序使用的是中文分号case 1:\/\/switch(g)下的,原程序使用的是中文冒号printf("你所需要求的周长为%f",c);printf("你所需要求的面积为%f",d);\/\/printf参数不加& ...

我是大一的c语言新手,课程设计有个改错题,求大神帮忙看看,小弟在此先行...
include <stdio.h>#include <conio.h>void main(){ int i=0; char ch; while((ch=getch())!='\\r') { i++; printf("%c",ch); } printf("you type %d characters\\n",i);}

福鼎市18496099739: c语言程序改错,告诉我哪里有错,怎么改,谢谢啦 -
佐哄固泰: 1、int i,j后面没有分号,应该是int i,j;2、for语句中i++应该是i+=23、return (s)不是return (t)

福鼎市18496099739: C语言纠错 帮我看看吧 谢谢了 -
佐哄固泰: #include <stdio.h> int main () { int a[10],m,n,i; void fun (int a[10],int m,int n); for (i=0;i<10;i++) scanf("%d",&a[i]); printf("m=? n=?"); scanf("%d%d",&m,&n); fun (a,m,n); for (i=0;i<10;i++) printf(" %d",a[i]); getchar(); return 0; } void fun (int a[10...

福鼎市18496099739: C语言 纠错 谢谢指正! -
佐哄固泰: #include void main() { float n,sq,sqr;...

福鼎市18496099739: C语言编程,麻烦高手帮忙改错.谢谢 -
佐哄固泰: 那句 if(j%"%d"==0&&j%"%d"==0 ,a ,b) 应该改成 if(j % a == 0 && j % b == 0)这是因为 取模 % 运算要求两边是 int 整型,但是你却把 "%d" 给放上去了.因为 "%d" 是一个3个字符的字符串,所以类型为 const char[3],这样就会出现 “invalid operands of types `int' and `const char[3]' to binary `operator%'” 这个错误了.小力庭 2013-4-20 欢迎到我微博上切磋交流 weibo.com/litingsoft

福鼎市18496099739: 帮我改下C语言程序中的错误,感激不尽!!! -
佐哄固泰: 系统显示几个语法错误,其实就只有一个语法错误: 第8行 unsiguld应是unsigned (这是关键字,如果正确颜色会与其它字不同的,如在VC++环境中它是蓝色,其他一般的字符是黑色的) 还有你的q=40000没有输出对吧?这是因为你的第16行...

福鼎市18496099739: C语言 帮忙改一下错 程序 -
佐哄固泰: sort(*pt,10)改成:sort(pt,10); sort的第一个参数是指针,直接用pt就对了,*pt是...

福鼎市18496099739: C语言编程 求帮改错 -
佐哄固泰: #include int main (void) { int y; int i; scanf("%d",&y); if (y=2100) printf("Invalid year!"); else for(i=2000;i return 0; }

福鼎市18496099739: 谁帮我看看我编的这个C语言程序哪出错了..帮改正下..谢谢 -
佐哄固泰: 我也没有发现错误啊,直接输入1+2回车就好了啊,是不是你的编译系统有问题,建议用VC++6.0来编译一下

福鼎市18496099739: C语言,帮忙改错. -
佐哄固泰: else sum+=sum; 改为sum++; 否则sum=sum+sum;初始值为零,再怎么运算还是零 最后加上结果输出printf("Result is %d\n",sum);

福鼎市18496099739: C语言改错题,帮帮我 -
佐哄固泰: 第一处:小括号中改a+b>c&&a+c>b&&b+c>a 第二处:%d改%f

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网