#include "stdio.h"
#include "string.h"
int main()
{
char s[5][100];
char * p;
*p=s;
int i,k,len,minlen;
for(i=0;i<5;i++)
gets(p+i);
minlen=strlen(p+0);
printf("%d",minlen);
for(i=1;i<5;i++)
{
len=strlen(p+i);
if(len<minlen)
{
minlen=len;
k=i;
}
}
puts(p+k);
}

uj5u.com熱心網友回復:
什么是指標變數怎樣是給指標賦值
怎樣是給指標的目標賦值
這個寫法的錯誤是指標沒有目標之前就給指標目標賦值
uj5u.com熱心網友回復:
修改如下,供參考:#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
char s[5][100];
char (* p)[100]; //char * p
p = s; //*p=s;
int i,k=0,len,minlen; //int i,k,len,minlen;
for(i=0;i<5;i++)
gets(*(p+i)); //gets(p+i);
minlen=strlen(*(p+0)); //minlen=strlen(p+0);
printf("%d\n",minlen); //printf("%d",minlen);
for(i=1;i<5;i++)
{
len=strlen(*(p+i)); //len=strlen(p+i);
if(len<minlen)
{
minlen=len;
k=i;
}
}
puts(*(p+k)); //puts(p+k);
return 0;
}
uj5u.com熱心網友回復:
應該是p=a嗎。但是輸出的東西對不上答案。那個printf( “%d”,minlen)就是想測驗一下計算字串長度有沒有問題,輸入字串aa,他輸出的是11
uj5u.com熱心網友回復:
求教:我不太明白(*p)【100】的意思,還沒學過。還有就是他給了前置代碼,只能用char *p不能改成char(*p)【100】
uj5u.com熱心網友回復:
行陣列指標的定義方法如下:資料型別 (*指標變數名)[二維陣列列數];
例如,行陣列指標定義如下:int (*p)[100];它表示p指向的是有100個char型元素的一維陣列,即p為行指標,此時,可用如下方式對指標p賦值:p=s;
修改如下:
#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
char s[5][100];
char *p; //(* p)[100];
p = s[0]; //*p=s;
int i,k=0,len,minlen; //int i,k,len,minlen;
for(i=0;i<5;i++)
gets(p+i*100); //gets(p+i);
minlen=strlen(p+0);
printf("%d\n",minlen); //printf("%d",minlen);
for(i=1;i<5;i++)
{
len=strlen(p+i*100); //len=strlen(p+i);
if(len<minlen)
{
minlen=len;
k=i;
}
}
puts(p+k*100); //puts(p+k);
return 0;
}
uj5u.com熱心網友回復:
行陣列指標的定義方法如下:
資料型別 (*指標變數名)[二維陣列列數];
例如,行陣列指標定義如下:int (*p)[100];它表示p指向的是有100個char型元素的一維陣列,即p為行指標,此時,可用如下方式對指標p賦值:p=s;
修改如下: 修改如下,供參考:#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
char s[5][100];
char (* p)[100]; //char * p
p = s; //*p=s;
int i,k=0,len,minlen; //int i,k,len,minlen;
for(i=0;i<5;i++)
gets(*(p+i)); //gets(p+i);
minlen=strlen(*(p+0)); //minlen=strlen(p+0);
printf("%d\n",minlen); //printf("%d",minlen);
for(i=1;i<5;i++)
{
len=strlen(*(p+i)); //len=strlen(p+i);
if(len<minlen)
{
minlen=len;
k=i;
}
}
puts(*(p+k)); //puts(p+k);
return 0;
}
求教:我不太明白(*p)【100】的意思,還沒學過。還有就是他給了前置代碼,只能用char *p不能改成char(*p)【100】#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
char s[5][100];
char *p; //(* p)[100];
p = s[0]; //*p=s;
int i,k=0,len,minlen; //int i,k,len,minlen;
for(i=0;i<5;i++)
gets(p+i*100); //gets(p+i);
minlen=strlen(p+0);
printf("%d\n",minlen); //printf("%d",minlen);
for(i=1;i<5;i++)
{
len=strlen(p+i*100); //len=strlen(p+i);
if(len<minlen)
{
minlen=len;
k=i;
}
}
puts(p+k*100); //puts(p+k);
return 0;
}
請問gets(p+i*100),i*100的目的是什么,我以為是gets(p+i)。不太懂這個地方,可能沒懂把s【0】賦給p的含義。中午的時候根據您第一次評論,我自己改的代碼如下,但是輸出有問題。
#include "stdio.h"
#include "string.h"
int main()
{
char s[5][100];
char *p;
p=s[0];
int i, k=0, len, minlen;
for (i = 0; i < 5; i++)
{
gets(p + i);
}
minlen = strlen(p + 0);
for (i = 1; i < 5; i++)
{
len = strlen(p + i);
if (len < minlen)
{
minlen = len;
k = i;
}
}
printf("%s\n",p+k);
}
uj5u.com熱心網友回復:
指標p,我們定義的是 p=s[0] , 也就是指標p中記錄的是陣列s[0][0]地址值,也就是s陣列中0行0列的地址。 s是一個二維的陣列,共有5行,每行100字符,程式中我們是按行操作的。代碼中,輸入命令是以一行為單位的,輸完一行,再進入下一行的輸入,所以我們要知道的是陣列s中第0行、第1行、第2行。。。。。。的行首地址,p+i 相當于執行的是:0行0列、0行1列、0行3列。。。。類推,跟我們想要的地址是不是相差p+i*100的距離了。for(i=0;i<5;i++)
gets(p+i*100);
uj5u.com熱心網友回復:
指標p,我們定義的是 p=s[0] , 也就是指標p中記錄的是陣列s[0][0]地址值,也就是s陣列中0行0列的地址。 s是一個二維的陣列,共有5行,每行100字符,程式中我們是按行操作的。代碼中,輸入命令是以一行為單位的,輸完一行,再進入下一行的輸入,所以我們要知道的是陣列s中第0行、第1行、第2行。。。。。。的行首地址,p+i 相當于執行的是:0行0列、0行1列、0行3列。。。。類推,跟我們想要的地址是不是相差p+i*100的距離了。for(i=0;i<5;i++)
gets(p+i*100);
感謝,懂了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/240673.html
標籤:C語言
上一篇:年底送分
下一篇:十字路口紅綠燈問題
