实验六
------------恢复内容开始------------
实验1
#include <stdio.h>
#define N 5
void output(int x[], int n);
int main() {
int x[N] = { 9,55,30,27,22 };
int i, k, t;
printf("original array:\n");
output(x, N);
k = 0;
for ( i = 0; i < N; i++)
{
if (x[i]>x[k])
{
k = i;
}
}
if (k!=N-1)
{
t = x[N - 1];
x[N - 1] = x[k];
x[k] = t;
}
printf("after swapped:\n");
output(x, N);
return 0;
}
void output(int x[], int n) {
int i;
for ( i = 0; i < n; i++)
{
printf("%d ", x[i]);
}
printf("\n");
}
#include <stdio.h>
#define N 5
void output(int x[], int n);
int main() {
int x[N] = { 9,55,30,27,22 };
int i, k, t;
printf("original array:\n");
output(x, N);
for ( i = 0; i < N-1; i++)
{
if (x[i] > x[i + 1]) {
t = x[i];
x[i] = x[i + 1];
x[i + 1] = t;
}
}
printf("after swapped:\n");
output(x, N);
return 0;
}
void output(int x[], int n) {
int i;
for ( i = 0; i < n; i++)
{
printf("%d ", x[i]);
}
printf("\n");
}
实验二
#include <stdio.h>
#define N 5
int binarysearch(int x[], int n, int term);
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);
index = binarysearch(a,N,key );
if (index>=0)
{
printf("%d在数组中,下标为%d\n", key, index);
}
else
{
printf("%d不在数组中\n");
}
return 0;
}
int binarysearch(int x[], int n, int term) {
int low, high, mid;
low = 0;
high = n - 1;
while (low<=high)
{
mid = (low + high) / 2;
if (x[mid]==term)
{
return mid;
}
else if (x[mid]>term)
{
high = mid-1;
}
else
{
low = mid + 1;
}
}
return -1;
}
实验三
#include <stdio.h>
#define N 5
void input(int a[], int n);
void output(int a[], int n);
void selectsort(int a[], int n);
int main() {
int a[N];
printf("输入%d个整数\n", N);
input(a, N);
printf("排序前的数据:\n");
output(a, N);
selectsort(a, N);
printf("排序后的数据:\n");
output(a, N);
return 0;
return 0;
}
void input(int a[], int n){
int i;
for ( i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
}
void output(int a[], int n) {
int i;
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
void selectsort(int a[], int n) {
int i = 0, k = 0,j=0;
int t = 0;
for ( i = 0; i < n-1; i++)
{
k = i;
for ( j = i+1; j < n; j++)
{
if (a[j]<a[k])
{
k = j;
}
}
if (k != i) {
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}
#include <stdio.h>
#include<string.h>
#define N 5
void selectsort(char str[][20], int n);
int main() {
char name[][20] = { "Bob","Bill","Jsseph","Taylor","George" };
int i;
printf("输出初始名单:\n");
for ( i = 0; i < N; i++)
{
printf("%s\n", name[i]);
}
selectsort(name, N);
printf("按字典序输出名单:\n");
for ( i = 0; i < N; i++)
{
printf("%s\n", name[i]);
}
return 0;
}
void selectsort(char str[][20], int n) {
int i=0,j=0, k=0;
char t[20];
for ( i = 0;i < n-1; i++)
{
k = i;
for ( j = i+1; j< n; j++)
{
if (strcmp(str[j],str[k])<0)
{
k = j;
}
}
if (k!=i)
{
strcpy(t, str[k]);
strcpy(str[k], str[i]);
strcpy(str[i], t);
}
}
}
实验四
#include <stdio.h>
#include<string.h>
#define N 5
int main() {
int n;
int* pn;
n = 42;
pn = &n;
printf("&n=%#x,n=%d\n", &n, n);
printf("&pn=%#x,pn%#x\n", &pn, pn);
printf("*pn=%d\n", *pn);
return 0;
}
N的地址:0x2aaff554 n的值:42
Pn 的地址:0x6a2ff8f8 pn的值:0x6a2ff8d4
*pn间接访问n
实验五
#include <stdio.h>
#include<string.h>
#define N 5
int main() {
int a[N] = { 1,9,2,0,7 };
int i;
int* p;
for ( i = 0; i < N; i++)
{
printf("&a[%d] = %#x, a[%d] = %d\n", i, &a[i], i, a[i]);
}
printf("\n");
for ( i = 0; i < N; i++)
{
printf("a+%d = %#x, *(a+%d) = %d\n", i, a + i, i, *(a + i));
}
printf("\n");
p = a;
for ( i = 0; i < N; i++)
{
printf("p+%d = %#x, *(p+%d) = %d\n", i, p + i, i, *(p + i));
}
return 0;
}
可以
可以
------------恢复内容结束------------