❶ 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
}
}