當前位置:首頁 » 編程語言 » c語言代碼怎麼根據下面提示改錯
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言代碼怎麼根據下面提示改錯

發布時間: 2023-02-03 07:26:20

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
載入更多