❶ c语言小程序改错
#include <stdio.h>
#include <string.h>
void main()
{ char s[80], t[80];
/************found************/
int i;
printf("\nPlease enter string s:"); scanf("%s", s);
int len = strlen(s);//len缺少定义
for (i=0; i<len; i++)
/************found************/
t[i] = s[len-i-1];//逻辑错误,t的首字符为0,
for (i=0; i<len; i++)
t[len+i] = s[i];
t[2*len] =0;
printf("The result is: %s\n", t);
return;
}
❷ C语言按要求改错
找出两个错误,b、c要改掉一处为k%10才对,一开始k为三位数字,a是取到个位上的数字了,然后k除10后变成百位数和十位数的一个两位数,这时b、c应该分别取百位和十位数字,所以任意一个改成模10即可。另一个是输入数字时的判断,只小于等于1000是不够的,还要大于100才行其实可以直接大于110的,因为第一个一样的是111。
❸ C语言程序改错怎么做
如果是等考的话,错误一般在*******found******处,一般的话就是首先编译器查错,面对小型的程序一般就可以了,如果是逻辑错误
那就要看你的功底进行人工纠错了。
打字不易,如满意,望采纳。
❹ C语言程序设计下面改错
#include <stdio.h>
void main() { char *str="123456789abc",*p; //error 1
p=str; putchar(*p); //error 2
printf("string:%s ",p); //error 3
printf("string:%s ",p); //error 4
}
❺ C语言改错题,根据题目修改图中错误的源程序代码
按照题目要求改完的两个程序如下(改动的地方见注释)
第一个程序
#include<stdio.h>
void main()
{
float n,f;
float x1=1,x2,temp;//这里x1初始化为1,因为要先给x1赋值
printf("Enter a positive number:");
scanf("%f",&n);
while(1)
{
x2=(x1+n/x1)/2;//这里这句移到这里,因为要先给x2赋值
temp=x1-x2;
if(temp<0)
temp=-temp;
if(temp<1e-5)
break;
x1=x2;
}
printf("The square root of %5.2f is %8.5f ",n,x2);
}
❻ C语言:下面的代码为什么会出现编译错误应当怎么改正
错误出在a=sum;这一句——因为构成C语言程序的基本单位是函数而不是C语句,这里的a=sum;不在任何函数中,所以编译器无法处理而出错。把它放到主函数中的printf("%d ",a(3,5));之前就可以了。函数外只能进行全局变量定义或声明,而不能进行其他操作,所以把int (*a)(int, int); a=sum;两句改成int (*a)(int, int)=sum;,让它成为声明变量a并初始化为sum也是可以的。你可以试试。
代码文本:
#include "stdio.h"
int sum(int a, int b);
int (*a)(int, int);
int main(int argc,char *argv[]){
a=sum;
printf("%d ",a(3,5));
return 0;
}
int sum(int a,int b){
return a+b;
}
❼ C语言改错 仅在提示下行改 其余不变
文本文档的换行标识符为'\n', 当读完\n后,指针就移动到了下行的行首。 以此为思路可以得到代码: int moveToNextLine(FILE *fp){ int c; if(fp == NULL) return -1;//文件指针非法 while(1) { c = fgetc(fp); if(c == EOF) return EOF;//到文件尾,不存在下一行 if(c == '\n') break;//读到需要的换行符。 } return 0;} 在读取中,FILE*指针会自动完成移位,所以不需要显式的返回指针。
❽ (急)请问下段c语言代码改错怎么改
第一处 fun函数中,s+=p->改为s+=p->data,这里纯粹是粗心吧,不过我奇怪你已经找到错误的地方了,这个没看出来
第二处,main函数中printf("\nsum=%d\n", fun(*a)); ,fun函数的参数按照你的定义为SLIST *型,而你的实参*a,这个是什么?*a=a[0]=12,这是个整型数,形参与实参的类型必须一致,按照你的程序,你要传递的就是链表的首地址嘛,改为fun(head);
其它OK
#include <stdio.h>
#include <stdlib.h>
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
SLIST *creatlist(int *);
void outlist(SLIST *);
int fun( SLIST *h)
{ SLIST *p; int s=0;
p=h->next;
while(p)
{
/**********found**********/
s+=p->data;
/**********found**********/
p=p->next;
}
return s;
}
main()
{ SLIST *head;
int a[N]={12,87,45,32,91,16,20,48};
head=creatlist(a); outlist(head);
/**********found**********/
printf("\nsum=%d\n", fun(head));
}
SLIST *creatlist(int a[])
{ SLIST *h,*p,*q; int i;
h=p=(SLIST *)malloc(sizeof(SLIST));
for(i=0; i<N; i++)
{ q=(SLIST *)malloc(sizeof(SLIST));
q->data=a[i]; p->next=q; p=q;
}
p->next=0;
return h;
}
void outlist(SLIST *h)
{ SLIST *p;
p=h->next;
if (p==NULL) printf("The list is NULL!\n");
else
{ printf("\nHead ");
do
{ printf("->%d", p->data); p=p->next; }
while(p!=NULL);
printf("->End\n");
}
}
❾ C语言简单代码求改错
程序1修改完成,直接加到mian函数中运行
float
x;
printf("请输入X\n");
scanf("%f",&x);
{
if(x>-5
&&
x<0)
{
x=x+0;
}
else
if(x==0)
x=x-1;
else
if(x>0&&x<10)
x=x+1;
else
x=100;
}
printf("%0.2f",x);
运行结果:
请输入X
-2
-2.00
程序2的方法不是很好给你一个更好的程序,供参考:
由于你的程序逻辑比较复杂导致你的程序运行结果和实际的不一样,不建议这么写
int
a,b,c;
int
min;
printf("请输入三个整数");
scanf("%d
%d
%d",&a,&b,&c);
min=a;
if(a
追问:
程序2你的方法我还没见过、刚运行了一下数据会出错。另外程序一的x+0是什么意思?
追答:
1.x=0,在我的编译器上不能直接x=x;这么赋值,所以我加了一个0,没有什么意义,不影响你的源程序
2.这种求最大值最小值的方法是明确的,便于理解,相对是优化的,
程序不用判断太多的逻辑表达式;我把注解给你写上了;
min这个变量会随着比较的大小而变化
我这运行没有错误啊,你把下面这个运行一下,要是有错,告诉我什么错啊
main()
{
int
a,b,c;
//存放要输入的三个数
int
min;
printf("请输入三个整数");
scanf("%d
%d
%d",&a,&b,&c);//假设输入
3
1
2对应a
b
c
min=a;
//假设第一个数为最小值a=min=3
if(a
追问:
程序2依旧数据出错。语法没有问题,只是输出结果是负数。
追答:
你用的什么编译器,我在eclipse和winTC上都没问题呀,你输入三个数,最后返回最小值
如:
请输入三个整数5
-6
0
最小值=-6
追问:
嗯,代码的确没有错,也许是我的vc有问题了。谢谢了
评论
0
0
0
加载更多