5つの配列とポインタ実験

その1 ABCDEFGを表すことができる
(1)第2報を
する#include <stdio.hに> する#include <STDLIB.H> CONST INT N = 5; INT binarySearch(INT X []、N-INT、INT項目); int型のmain(){ int型[N] = {2,7,19,45,66}; INT I、インデックスキー; のprintf( "データ列A:\ N-"); のための(I = 0、I <N; I ++) printf( "%のD"、[I]); のprintf( "\ N-"); のprintf( "データ項目を検索する入力します"); scanfの( "%のD"、&キー)、 インデックス= binarySearch(、 N、KEY); IF(インデックス> = 0) のprintf( "配列の%Dは、%D \のN-添字"、キー、インデックス); のprintf( "%アレイ\ NからD"キー) ; システム( "PAUSE"); の戻り0; } INT binarySearch(INT X []、INT nは、INTアイテム){ int型低、高、中、 低= 0; ハイ= N-1; 一方(低<=高){ 半ば=(低+高)/ 2。 (項目== X [中間])であれば 、戻りミッド。 そうであれば(項目<X [中間]) 高=ミッド- 1。 他の 低=ミッド+ 1; } -1を返します。 }

  

(2)

する#include <stdio.hに> 
する#include <STDLIB.H> 
の#define N 10 
INT楽しみ(INT *、INT M)
{ 
	int型の低= 0、ハイ= N-1、ミッド。
	/ ************* ERROR ************** / 
  	つつ(低<=高)
  	{   
        半ば=(低+高)/ 2。
		/ ************* ERROR ************** / 
        IF(M <*(+ミッド))
             ハイ=ミッド1。
		/ ************* ERROR ************** / 
        そうであれば(M> *(+ミッド)) 低=ミッド+ 1。
        他の   
			リターン(中旬)。
  	} 
  	を返す(-1)。
} 

INT)(主
{   
	I INT、[N] = { - 3,4,7,9,13,24,67,89,100,180}、K、M。
   	printf( "数组中的数据如下:\ N");
   	用(; I <N; iが0 = I ++) 
	   のprintf( "%dの"、[I])。
   	printf( "\ nEnter M:\ n"); 
   	scanf関数( "%のD"、&M)。
	/ ************* ERROR ************** / 
   	K =楽しさ(M)。
   	もし(K> = 0)
	   のprintf( "M =%D、指数=%D \ n"、M、K)。
	   のprintf( "が見つかりません\ n個!"); 
	
	システム(「一時停止」)。
   	0を返します。
}

  

(3)

する#include <stdio.hに> 
する#include < 文字列・H> 
する#include <STDLIB.H> 
 ボイド selectSort(チャー STR [] [ 20 ]、INT N); 
INT メイン(){
     チャー名[] [ 20 ] = { " ジョン"" アレックス"" ジョセフ"" テイラー"" ジョージ" }。
    int型私は、
    
    printf(" 输出初始名单ます:\ n " );
    以下のために(私は= 0 ; I < 5 ; I ++ 
        のprintf(" %sの\ n " 、名前[I])。
        
    selectSort(名前、5 );  
    
    printf(" 按字典序输出名单ます:\ n " );
    以下のために(私は= 0 ; I < 5 ; I ++ 
        のprintf(" %sの\ n " 、名前[I])。
    
    システム(一時停止)。
    リターン 0 ; 
} 

ボイド selectSort(CHAR STR [] [ 20 ]、INTN)
 { 
    int型I、J、K。
    チャー TEMP [ 20 ]。
    以下のために(私は= 0 ; iが<N- 1 ; I ++ 
    { 
        K = I。
        (J = I + 1 ; J <N J ++ 場合(のstrcmp(STR [J]、STR [K])< 0 
        、K = J。
        もし(K =!I)
        { 
            strcpyの(TEMP、STR [I])。
            strcpyの(STR [i]は、STR [K])。
            strcpyの(STR [k]は、TEMP)。
            
        } 
        
    } 

}

(4)

#include <string.hの> 
する#include <stdio.hに> 
する#include <STDLIB.H> 
ボイド楽しい(CHAR *){ 
    / ***** ERROR ******** / 
    INT I = 0。
     char * p = A; 
    / **** ERROR *** / 
    ながら(* P && * P == '*'){ 
        [I] = * P。
        I ++; 
        P ++; 
    } 
	一方(* P){ 
    / ****** ERROR ******* / 
        IF(* P = '*'!){ 
            [I] = * P。
            I ++; 
        } 
        のp ++。
    } 
    / ****** ERROR ******* / 
    [I] = 0; 
  
} 

int型のmain(){ 
  	チャーS [81]。
  	printf( "文字列を入力します:\ n");
  	/ *** ERROR ****** / 
  	楽しさ(秒)。
  	printf( "削除された後の文字列:\ N"); 
  	プット(S); 
  	
  	システム(「一時停止」)。
	0を返します。
}
 

 (5)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char *a) {
	/**ERROR******/
	int i=0;
	char *t = a, *f = a;
    char *q = a;
	 
    while(*t)
	    t++;
	t--;
	
	while(*t == '*')
		t--;
		
	while(*f == '*')
		f++;
	/***ERROR***/
    while (q<f) { 
        a[i] = *q;
        q++;
        i++; 
    } 
    while (q<t) {
    	/***ERROR**/
		if(*q != '*') { 
    	    a[i] = *q;
	    	i++; 
    	} 
        q++; 
    } 
    
	while (*q) { 
        a[i] = *q;
        i++;
        q++; 
    } 
    /**ERROR**/
    a[i]=0;
}
int main () {
	char s[81];
	printf("Entre a string:\n");
	gets(s);
	/**ERROR**/
	fun(s);
	printf("The sting after deleted:\n");
	puts(s);
	
	system("pause");
	return 0;
}

  

 

实验结论:还需要多练习,锻练自己的逻辑思维,对一些函数引用的格式还要记忆,指针与数组之间的关系还要多看,否则头昏。

おすすめ

転載: www.cnblogs.com/saberzyk/p/12043864.html