C語言試題大全四
int arr[] = {6,7,8,9,10};
int *ptr = arr;
*(ptr++)+=123;
printf(“ %d %d ”, *ptr, *(++ptr));
int *ptr = arr;
*(ptr++)+=123;
printf(“ %d %d ”, *ptr, *(++ptr));
輸出:8 8
過程:對于*(ptr++)+=123;先做加法6+123,然后++,指針指向7;對于printf(“ %d %d ”, *ptr, *(++ptr));從后往前執(zhí)行,指針先++,指向8,然后輸出8,緊接著再輸出8
2 分析輸出結(jié)果
void g(int**);
int main()
{
int line[10],i;
int *p=line;
void g(int**);
int main()
{
int line[10],i;
int *p=line;
for (i=0;i<10;i++)
{
*p=i;
g(&p); //數(shù)組對應(yīng)的值加1
}
for(i=0;i<10;i++)
printf("%d",line[i]);
return 0;
}
{
*p=i;
g(&p); //數(shù)組對應(yīng)的值加1
}
for(i=0;i<10;i++)
printf("%d",line[i]);
return 0;
}
void g(int**p)
{
(**p)++;
(*p)++;//
}
{
(**p)++;
(*p)++;//
}
輸出:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
3 用遞歸算法判斷數(shù)組a[N]是否為一個遞增數(shù)組。
答案:
遞歸的方法,記錄當(dāng)前最大的,并且判斷當(dāng)前的是否比這個還大,大則繼續(xù),否則返回false結(jié)束:
bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
遞歸的方法,記錄當(dāng)前最大的,并且判斷當(dāng)前的是否比這個還大,大則繼續(xù),否則返回false結(jié)束:
bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
評論