1. 程式人生 > 其它 >APP測試點

APP測試點

#include <stdio.h>
#define N 5
int binarySearch(int *x, int n, int item); // 函式宣告
int main()
{
int a[N] = {2, 7, 19, 45, 66};
int i, index, key;
printf("陣列a中的資料:\n");
for (i = 0; i < N; i++)
printf("%d ", a[i]);
printf("\n");
printf("輸入待查詢的資料項: ");
scanf("%d", &key);
// 呼叫函式binarySearch()在陣列a中查詢指定資料項key,並返回查詢結果給index
// 補足程式碼①
index=binarySearch(a,N,key);
if (index >= 0)
printf("%d在陣列中,下標為%d\n", key, index);
else
printf("%d不在陣列中\n", key);
return 0;
}
// 函式功能描述:
// 使用二分查詢演算法在從地址x開始的連續n個數據項中,查詢特定資料項item
// 如果找到,返回其下標; 如果沒找到,返回-1
int binarySearch(int *x, int n, int item)
{
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (item == *(x + mid))
return mid;
else if (item < *(x + mid))
high=mid-1;
else
low=mid+1;
}
return -1;
}

實驗二

#include <stdio.h>
#include <stdlib.h>
void fun(char *a)
{
/*****ERROR1********/
int i=0;//first
char *p = a;
/****ERROR2***/
while(*p=='*')
a[i++]=*p++;
while (*p && *p != '*')
{
a[i] = *p;
i++;
p++;
}
while (*p)
{
/******ERROR3*******/
if (*p != '*')
{
a[i] = *p;
i++;
}
p
++; } /******ERROR4*******/ a[i] = '\0'; } int main() { char s[81]; printf("Enter a string :\n"); gets(s); /***ERROR5******/ fun(s); printf("The string after deleted:\n"); puts(s); return 0; }

實驗三

/*
設輸入的字串中只包含字母和*號。
編寫函式,實現:除了字串前導和尾部的*號之外,將串中其他*號全部刪除。
例如,若字串中的內容為****A*BC*DEF*G*******
刪除後,字串中的內容則應當是****ABCDEFG******
在編寫函式時,不得使用C語言提供的字串函式。
*/ #include <stdio.h> #include <stdlib.h> #include <string.h> void fun(char *a) { /**ERROR******/ int i; char *t = a, *f = a; char *q = a; while (*t) t++; t--; while (*t == '*') 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); return 0; }

實驗四

#include <stdio.h>
#include <string.h>
#define N 80
int isPalindrome(char *s); // 函式宣告
int main()
{
char str[N];
int flag;
printf("Enter a string:\n");
gets(str);
flag = isPalindrome(str); // 函式呼叫
if (flag)
printf("YES\n");
else
printf("No\n");
return 0;
}
// 函式定義
// 功能:判斷指標s指向的字串是否是迴文串,如果是,返回1;否則,返回0。
int isPalindrome(char *s)
{
char *p=s;char*q=s;int flag=1;
while(*q)
q++;
q--;
while(p<q)
{
  if(*p==*q)    
   {p++;
    q--;}
  else
    {
    flag=0;
    break;}
    }    
return flag;
}

實驗五

#include <stdio.h>
#define N 80
int count(char *str, char *substr); // 函式宣告
int main()
{
char str[N], substr[N];
int n;
gets(str); // 輸入母串
gets(substr); // 輸入子串
n = count(str, substr); // 函式呼叫
printf("%d\n", n);
return 0;
}
int count(char *str, char *substr)
{
int i, j, k;
int num = 0;
for(i=0;*(str+i)!='\0'; ++i)
{
k=0;
for(j=i; substr[k] == str[j]; j++)
{
    k++;
    if(substr[k] == '\0')
   {       num++;
                 break;     }
                 }
             }
return  num;
}

本次實驗,讓我們瞭解了指標的用法及其和陣列之間的聯絡,瞭解了二者的優缺點。