实验4

实验1

 1 #include <stdio.h>
 2 #define N 4
 3 
 4 void test1( ){
 5     int a[N] = {1,9,8,4};
 6     int i;
 7     
 8     printf("sizeof(a) = %d\n", sizeof(a));
 9     
10     for(i=0;i<N;++i)
11     printf("%p:%d\n",&a[i],a[i]);
12     
13     printf("a=%p\n",a);
14 } 
15 
16 
17 
18 void test2(){
19     char b[N]={'1','9','8','4'};
20     int i;
21     
22     printf("sizeof(b)=%d\n",sizeof(b));
23     
24     for(i=0;i<N;++i)
25     printf("%p:%c\n",&b[i],b[i]);
26     
27     printf("b=%p\n",b); 
28 } 
29 
30 int main(){
31     printf("测试1:int类型一维数组\n");
32     test1();
33     
34     printf("测试2: char类型一维数组\n");
35     test2();
36     
37     return 0;
38 }

 1 #include <stdio.h>
 2 #define N 2
 3 #define M 4
 4 void test1() {
 5     int a[N][M] = {{1, 9, 8, 4}, {2, 0, 4, 9}};
 6     int i, j;
 7 
 8     printf("sizeof(a) = %d\n", sizeof(a));
 9     for (i = 0; i < N; ++i)
10         for (j = 0; j < M; ++j)
11             printf("%p: %d\n", &a[i][j], a[i][j]);
12     printf("\n");
13 
14     printf("a = %p\n", a);
15     printf("a[0] = %p\n", a[0]);
16     printf("a[1] = %p\n", a[1]);
17     printf("\n");
18 } 
19 void test2() {
20     char b[N][M] = {{'1', '9', '8', '4'}, {'2', '0', '4', '9'}};
21     int i, j;
22 
23     printf("sizeof(b) = %d\n", sizeof(b));
24 
25     for (i = 0; i < N; ++i)
26         for (j = 0; j < M; ++j)
27             printf("%p: %c\n", &b[i][j], b[i][j]);
28     printf("\n");
29 
30     printf("b = %p\n", b);
31     printf("b[0] = %p\n", b[0]);
32     printf("b[1] = %p\n", b[1]);
33 }
34 int main() {
35     printf("测试1: int型两维数组");
36     test1();
37     
38     printf("\n测试2: char型两维数组");
39     test2();
40     
41     return 0;
42 }

 

实验2

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define N 80
 5 
 6 void swap_str(char s1[N], char s2[N]);
 7 void test1();
 8 void test2();
 9 
10 int main() {
11     printf("测试1: 用两个一维char数组,实现两个字符串交换\n");
12     test1();
13     
14     printf("\n测试2: 用二维char数组,实现两个字符串交换\n");
15     test2();
16     
17     return 0;
18 } 
19 void test1() {
20     char views1[N] = "hey, C, I hate u.";
21     char views2[N] = "hey, C, I love u.";
22     
23     printf("交换前: \n");
24     puts(views1);
25     puts(views2);
26     swap_str(views1, views2);
27     printf("交换后: \n");
28     puts(views1);
29     puts(views2);
30 } 
31 void test2() {
32     char views[2][N] = {"hey, C, I hate u.",
33                         "hey, C, I love u."};
34     printf("交换前: \n");
35     puts(views[0]);
36     puts(views[1]);
37     swap_str(views[0], views[1]);
38     printf("交换后: \n");
39     puts(views[0]);
40     puts(views[1]);
41 } 
42 void swap_str(char s1[N], char s2[N]) {
43     char tmp[N];
44     strcpy(tmp, s1);
45     strcpy(s1, s2);
46     strcpy(s2, tmp);
47 }

 

实验3

 1 #include <stdio.h>
 2 #define N 80
 3 
 4 int count(char x[]);
 5 
 6 int main() {
 7     char words[N+1];
 8     int n;
 9     while(gets(words) != NULL) {
10         n = count(words);
11     printf("单词数: %d\n\n", n);
12     } 
13     return 0;
14 }
15 
16  
17 int count(char x[]) {
18     int i;
19     int word_flag = 0; 
20     int number = 0; 
21     for(i = 0; x[i] != '\0'; i++) {
22         if(x[i] == ' ')
23             word_flag = 0;
24         else if(word_flag == 0) {
25             word_flag = 1;
26             number++;
27         }
28     } 
29     return number;
30 }

 1 #include<stdio.h>
 2 #define N 1000
 3 
 4 int main(){
 5     char line[N];
 6     int word_len;
 7     int max_len;
 8     int end;
 9     int i;
10     
11     while(gets(line)!=NULL){
12         word_len=0;
13         max_len=0;
14         end=0;
15         
16         i=0;
17         while(1){
18             while(line[i]==' '){
19                 word_len=0;
20                 i++;
21             }
22             while(line[i]!='\0'&&line[i]!=' '){
23                 word_len++;
24                 i++;
25             }
26             if(max_len<word_len){
27                 max_len=word_len;
28                 end=i; 
29             }
30             if(line[i]=='\0')
31                 break;
32         }
33         printf("最长单词:");
34         for(i=end-max_len;i<end;++i)
35             printf("%c",line[i]);
36         printf("\n\n");
37     }
38     
39     return 0;
40 }
41  

 

实验4

 

#include <stdio.h>
#define N 100
void dec_to_n(int x, int n); 

int main() {
    int x;

    printf("输入一个十进制整数: ");
    while(scanf("%d", &x) != EOF) {
        dec_to_n(x, 2);  
        dec_to_n(x, 8);  
        dec_to_n(x, 16); 

        printf("\n输入一个十进制整数: ");
    }

    return 0;
}

void dec_to_n(int x,int n){
    int i=0,j, b;
     char map[] = "0123456789ABCDEF";
     int ans[N];
     do
     {
         b = x % n;
         ans[i++] = map[b];
         x = x / n;
     } while (x != 0);
     for ( j=i - 1; j >= 0; --j)
         printf("%c", ans[j]);
     printf("\n");
  }

 

实验5

 

#include <stdio.h>
#define N 5

 
void input(int x[], int n);
void output(int x[], int n);
double average(int x[], int n);
void bubble_sort(int x[], int n);

int main() {
    int scores[N];
    double ave;
    
    printf("录入%d个分数:\n", N);
    input(scores, N);
    
    printf("\n输出课程分数: \n");
    output(scores, N);
    
    printf("\n课程分数处理: 计算均分、排序...\n");
    ave = average(scores, N);
    bubble_sort(scores, N);
    
    printf("\n输出课程均分: %.2f\n", ave);
    printf("\n输出课程分数(高->低):\n");
    output(scores, N);
    
    return 0;
}


void input(int x[], int n) {
    int i;
    
    for(i = 0; i < n; ++i)
        scanf("%d", &x[i]); 
}


void output(int x[], int n) {
    int i;
    
    for(i = 0; i < n; ++i)
        printf("%d ", x[i]);
    printf("\n");
}


double average(int x[],int n){
    int sum=0,i=0;
    double ans;
    for(;i<n;i++){
        sum=sum+x[i];
    }
    ans=(double)sum/n;
    return ans;
}


void bubble_sort(int x[],int n){
    int i,j,t;
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++){
            if(x[j]<x[j+1]){
                t=x[j];
                x[j]=x[j+1];
                x[j+1]=t;
            }
        }
    }
    
}

 

实验6

 

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define N 5
 5 #define M 20
 6 
 7 
 8 void output(char str[][M], int n);
 9 void bubble_sort(char str[][M], int n);
10 
11 int main() {
12     char name[][M] = {"Bob", "Bill", "Joseph", "Taylor", "George"};
13     int i;
14 
15     printf("输出初始名单:\n");
16     output(name, N);
17 
18     printf("\n排序中...\n");
19     bubble_sort(name, N);  
20     
21     printf("\n按字典序输出名单:\n");
22     output(name, N);
23 
24     return 0;
25 }
26 
27 
28 void output(char str[][M], int n) {
29     int i;
30 
31     for(i = 0; i < n; ++i)
32         printf("%s\n", str[i]);
33 }
34 
35 void bubble_sort(char str[][M],int n){
36     int i;
37     int j;
38     char x[M];
39     for(i=0;i<N-1;i++){
40         for(j=i;j<N-i-1;j++){
41             if(strcmp(str[j],str[j+1])>0){
42                 strcpy(x,str[j]);
43                 strcpy(str[j],str[j+1]);
44                 strcpy(str[j+1],x);
45             }
46         }
47     }
48 }

 

实验7

 

 1 #include <stdio.h>
 2 #include<stdlib.h>
 3 #define n 101
 4 int main() {
 5     char a[n];
 6     int i,j,k=0;
 7     while(gets(a)!=NULL){
 8  
 9     for(i=0;i<101&&a[i]!='\0';i++){
10         if(k==1)
11             break;
12         for(j=i+1;a[j]!='\0';j++)
13             if(a[i]==a[j])
14                  k=1;
15     }
16     if(k==1) 
17         printf("YES\n\n");
18     else
19         printf("NO\n\n"); k=0;
20     }
21     return 0;
22 }

 

实验8

 

 1 #include <stdio.h>
 2 #define N 100
 3 #define M 4
 4 void output(int x[][N], int n); 
 5 void rotate_to_right(int x[][N], int n); 
 6 int main() {
 7     int t[][N] = {{21, 12, 13, 24},
 8                   {25, 16, 47, 38},
 9                   {29, 11, 32, 54},
10                   {42, 21, 33, 10}};
11     printf("原始矩阵:\n");
12     output(t, M); 
13     rotate_to_right(t, M); 
14     printf("变换后矩阵:\n");
15     output(t, M); 
16     return 0;
17 }
18 
19 void output(int x[][N], int n) {
20     int i, j;
21     for (i = 0; i < n; ++i) {
22         for (j = 0; j < n; ++j)
23             printf("%4d", x[i][j]);
24             printf("\n");
25     }
26 }
27 
28 void rotate_to_right(int x[][N], int n)
29 {
30     int i,j,a[4];
31     for(i=0;i<4;i++)
32         {
33             a[i]=x[i][4-1];
34         }
35         for(i=0;i<n;i++)
36             {
37             for(j=4-1;j>0;--j)
38                 {
39                     x[i][j]=x[i][j-1];
40                    
41                 }
42             x[i][0]=a[i];
43             }
44 }

 

posted @ 2023-11-18 19:23  夏夜#  阅读(17)  评论(0)    收藏  举报