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

c語言指針改錯題

發布時間: 2022-01-13 03:12:35

c語言指針改錯

scanf("%d",&p[i]);

❷ C語言指針部分改錯題

3 errors, 2 warnings
錯誤信息D:\Program Files\CodeBlocks\src\Projects\ttt\main.c|7|error: invalid type argument of 'unary *' (have 'int')|
原因:字元變數當指針用了
改正:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void strc(char* s, char* t)
{
while (*t != '\0')
{
t++;
}
while (*s != '\0')
{
*t = *s;
t++;
s++;
}
}
int main()
{
char s[80] = {0}, t[80] = {0};
gets(s);
gets(t);
strc(s, t);
printf("\n");
puts(t);
return 0;
}

❸ c語言指針題求改錯,謝謝!

#include<stdio.h>
#include<conio.h>
int main()
{
int a[5][5];
int i,j,p,*max,*min1,*min2,*min3,*min4;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{scanf("%d",&a[i][j]);}
min1=&a[0][0];
min2=&a[0][4];
min3=&a[4][0];
min4=&a[4][4];
max=&a[2][2];

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{ if(*min1>*(*(a+i)+j)) /* { 的位置不對應在(if(*min1>*(*(a+i)+j)) 後面*/
p=*min1;
*min1=*(*(a+i)+j);
*(*(a+i)+j)=p;
}
printf("%d\n",*min1); /* 該輸出語句多了,可以去掉 */

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{ /*後面空行處缺少與之配對的 } */
if(i==0&&j==0)
continue;
if(*min2>*(*(a+i)+j)) /* if(*min2>*(*(a+i)+j)) 後面缺少{ */
p=*min2;
*min2=*(*(a+i)+j);
*(*(a+i)+j)=p;
}

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{ /*後面空行處缺少與之配對的 } */
if((i==0&&j==0)||(i==0&&j==4))
continue;
if(*min3>*(*(a+i)+j)) /* 後面if(*min3>*(*(a+i)+j))缺少{ */
p=*min3;
*min3=*(*(a+i)+j);
*(*(a+i)+j)=p;
}

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{ /*後面空行處缺少與之配對的 } */
if((i==0&&j==0)||(i==0&&j==4)||(i==4&&j==0))
continue;
if(*min4>*(*(a+i)+j)) /* 後面if(*min4>*(*(a+i)+j))缺少{ */
p=*min4;
*min4=*(*(a+i)+j);
*(*(a+i)+j)=p;
}

for(i=0;i<5;i++)
for(j=0;j<5;j++)
{ /*後面空行處缺少與之配對的 } */
if(*max<*(*(a+i)+j)) /* if(*max<*(*(a+i)+j))後面缺少{ */
p=*max;
*max=*(*(a+i)+j);
*(*(a+i)+j)=p;
}

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}

getch();

}

編程時要注意復合語句塊兩邊的 { } 位置

❹ 一道C語言的指針題改錯,跪求!

如果用一個指針指向一個數組,請使用malloc分配空間
例如你的*a,這是一個野指針,它指向任何你不可控制的內存空間,讓這個指針偏移sizea個sizeof(int)絕不可能(第一個for循環執行第一遍的時候a已經超界)
*c , *d不指向任何空間,執行 c + p 同樣會越界
修改:
#include <iostream>
#include <stdio.h>

int main()
{
int *a = NULL,*b = NULL,*c = NULL,*d = NULL;
int i,j,p = 0;
int sizea,sizeb;
printf("input the sizes of a & b:\n");
scanf("%d %d",&sizea,&sizeb);
a = (int*)malloc(sizea * sizeof(int));
b = (int*)malloc(sizeb * sizeof(int));
for (i = 0;i < sizea;i++)
scanf("%d",&*(a + i));
for (i = 0;i < sizeb;i++)
scanf("%d",&*(b + i));

c = a;
d = a;

for(i = 0;i < sizea;i++)
for(j = 0;j < sizeb;j++)
if (*(b + j) == *( a + i))
{
*(c + p) = *(a + i);
*(d + p) = i;
p++;
}

printf("Val Position\n");
for (i = 0;i < p;i++)
printf("%d %d\n",*(c + i),*(d + i));

system("pause");
return 0;
}
可能還有問題,自己注意修改

❺ 一道關於指針的C語言改錯題,求學霸解釋!!

函數fun()不對。修改如下:
void fun(char *s,char *t)
{
char*p,*q;
q=t;
for(p=s;p!='\0';p++,q++) *q=*p;
for(;p>=s;p--,q++) *q=*p;
}

❻ C語言指針程序改錯

說的意思是f函數要返回值
void f(int *a,int *b)
{
int t;
if(*a>*b)
t=*a;
*a=*b;
*b=t;
}

❼ C語言指針求改錯

for(j=0;j<=i;j++)
{
*(*(p+i)+j)=*(*(p+i-1)+j-1)+*(*(p+i-1)+j);
}
上面循環體裡面一進來就越界了,*(*(p+i-1)+j-1)相當於p[i - 1][j - 1],第一次即p[-1][-1]越界訪問了。

❽ c語言程序改錯(指針問題)在線等!

程序沒錯,但你的scanf有點問題。
scanf("%d,%d",pa,pb);

你輸入時必須在兩個數字之間加逗號。

建議用scanf("%d%d",pa,pb);

或拆成

scanf("%d",pa);

scanf("%d",pb);

❾ C語言,指針改錯

程序沒錯 scanf("%d,%d,%d",&n1,&n2,&n3); 輸入時加上","如2,3,4
或者scanf("%d %d %d",&n1,&n2,&n3);輸入時不用加","

❿ c語言程序改錯,指針

//你的函數要改變p1和p2,所以你要傳遞p1和p2的地址,改了
#include <stdio.h>
#include <string.h>
#define N 5
int main(void)
{
void cmp(char q[][20],char **max,char **min); //**
char s[N][20];
char *p1,*p2;
int i;
for(i=0;i<N;i++)
scanf("%s",s[i]);
p1=s[0];
p2=s[0];
cmp(s,&p1,&p2); //&p1,&p2
printf("max=%s\nmin=%s\n",p1,p2);
getchar();getchar();
}

void cmp(char q[][20],char **max,char **min) //**
{
int i;
for(i=1;i<N;i++)
{
if(strcmp(*max,q[i])<0) *max=q[i]; //*max
if(strcmp(*min,q[i])>0) *min=q[i]; //*min
}
}