实验四c语言数组应用


 

 
1.实验一
 #include<stdio.h>
  #define N 4
  
  void test1()
  {
      int a[N] = {1,9,8,4};
      int i;
      printf("sizeof(a) = %d\n",sizeof(a));
      for(i = 0;i < N;++i){
         printf("%p:%d\n",&a[i],a[i]);
     }
     printf("a = %p\n",a);
 }
 void test2()
 {
     char b[N] = {'1','9','8','4'};
     int i;
     printf("sizeof(b) = %d\n",sizeof(b));
     for(i = 0;i < N;++i){
         printf("%p:%c\n",&b[i],b[i]);
     }
     printf("b = %p",b);
 }
 
 int main(){
     printf("测试1:int类型一维数组\n");
     test1();
     printf("\n测试2:char类型一维数组\n");
     test2();
     
     return 0; 
 }

  

 

#include<stdio.h>
  #define N 2
  #define M 4
  
  void test1()
  {
      int a[N][M] = {{1,9,8,4},{2,0,4,9}};
      int i,j;
      
     printf("sizeof(a)= %d\n",sizeof(a));
     for(i = 0;i<N;++i){
         for(j = 0;j<M;++j){
             printf("%p:%d\n",&a[i][j],a[i][j]);
         }
     }
     printf("\n");
     printf("a = %p\n",a);
     printf("a[0] = %p\n",a[0]);
     printf("a[1] = %p\n",a[1]);
     printf("\n");
 }
 void test2()
 {    char b[N][M] = {{'1','9','8','4'},{'2','0','4','9'}};
     int i,j;
     
     printf("sizeof(b) = %d\n",sizeof(b));
     
     for(i = 0;i<N;++i){
         for(j = 0;j < M;++j){
             printf("%p:%c\n",&b[i][j],b[i][j]);
         }
     }
     printf("b = %p\n",b);
     printf("b[0] = %p\n",b[0]);
    printf("b[1] = %p\n",b[1]);
      
 }
int main()
 {
    printf("测试1:int类型两维数组\n");
     test1();
     printf("\n测试2:char;类型两维数组\n");
     test2();
    
     return 0;
 }

  

 

int型数组a,在内存中是连续存放的,每个元素占用4个内存字节单元,数组名a与&a[0]对应的值一样。

char型数组b,在内存中是连续存放的,每个元素占用1个内存字节单元,数组名b与&b[0]对应的值一样。

2.实验二

 #include<stdio.h>
  #include<string.h>
  
  #define N 80
  void swap_str(char s1[N],char s[N]);
  void test1();
  void test2();
  
  int main()
 {
     printf("测试1:用两个一维char数组,实现两个字符串交换\n");
     test1();
     printf("\n测试2:用二维char数组,实现两个字符串交换\n");
     test2();
     
     return 0;
 }
 void test1() {
     char views1[N] = "hey, C, I hate u.";
     char views2[N] = "hey, C, I love u.";
 
     printf("交换前: \n");
     puts(views1);
     puts(views2);
 
     swap_str(views1, views2);
 
     printf("交换后: \n");
     puts(views1);
     puts(views2);
 }
 
 void test2() {
     char views[2][N] = {"hey, C, I hate u.", 
                         "hey, C, I love u."};
 
     printf("交换前: \n");
     puts(views[0]);
     puts(views[1]);
 
     swap_str(views[0], views[1]);
 
     printf("交换后: \n");
     puts(views[0]);
     puts(views[1]);
 }
 
 void swap_str(char s1[N], char s2[N]) {
     char tmp[N];
 
     strcpy(tmp, s1);
     strcpy(s1, s2);
     strcpy(s2, tmp);
 }

  

 3.实验三

#include <stdio.h>
  
  #define N 80
  
  int count(char x[]);
  
  int main() {
      char words[N+1];
     int n;
 
     while(gets(words) != NULL) {
         n = count(words);
         printf("单词数: %d\n\n", n);
     }
 
     return 0;
 }
 
 int count(char x[]) {
     int i;
     int word_flag = 0;  
     int number = 0; 
 
     for(i = 0; x[i] != '\0'; i++) {
         if(x[i] == ' ')
             word_flag = 0;
         else if(word_flag == 0) {
             word_flag = 1;
             number++;
         }
     }
 
     return number;
}

  

 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) { char ans[N]; char map[16]={"0123456789ABCDEF"}; int r; int cnt = 0; int i; do{ r = x %n; ans[cnt++]=map[r]; x=x/n; }while(x != 0); for(i = cnt-1;i>= 0;--i) printf("%c",ans[i]); printf("\n"); return 0; }

 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 i;
     double s=0,ave;
     for(i=0;i<n;++i){
         s+=x[i];
     }
         ave=s/n;
     
     printf("\n");
     return ave;    
 }
 void bubble_sort(int x[],int n)
 {
     int i,j,t;
     for(i=0;i<n-1;i++){
        for(j=0;j<n-i-1;j++){
             if(x[j]<x[j+1]){
                 t=x[j];
                 x[j]=x[j+1];
                 x[j+1]=t;
             }
             
         }
     }
     
 }


 实验六

 #include<stdio.h>
  #include<string.h>
  
  #define N 5
  #define M 20
  
  void output(char str[][M],int n);
  void bubble_sort(char str[][M],int n);
  
 int main()
 {
     char name[][M] = {"Bob","Bill","Joseph","Taylor","George"};
     int i;
     
     printf("输出初始名单:\n");
    output(name,N);
     
     printf("\n排序中...\n");
     bubble_sort(name,N);
     
     printf("\n按字典序输出名单:\n");
     output(name,N);
    
     return 0;
 }
 //函数定义 功能:按行输出二维数组中的字符串
 void output(char str[][M],int n)
 {
     int i;
     for(i = 0;i<n;++i)
         printf("%s\n",str[i]);
  } 
  void bubble_sort(char str[][M],int n)
  {
      int i,j;
      char s[20];
      for(i=0;i<n-1;++i){
          for(j=0;j<n-1-i;++j){
              if(strcmp(str[j],str[j+1])>0)
              {
                  strcpy(s,str[j]);
                  strcpy(str[j],str[j+1]);
                  strcpy(str[j+1],s);
              }
          }
      }
  }

 实验7

#include<stdio.h>
  
  int main()
  {
      char s[100];
      while(scanf("%s",&s)!=EOF)
      {
          int i,j,flag = 0;
          for(i=0;s[i]!='\0';i++){
             for(j=i+1;s[j]!='\0';j++){
                 if(s[i] == s[j]){
                     flag = 1;
                 }
 
             }
         }
         if(flag == 1)
         printf("YES\n");
         else
         printf("NO\n");
     }
     return 0;
 }

 实验8

#include<stdio.h>
  #define N 100
  #define M 4
  
  void output(int x[][N],int n);
  void retate_to_right(int x[][N],int n);
  
  int main()
  {
     int t[][N] = {{21,12,13,24},
                   {25,16,47,38},
                   {29,11,32,54},
                   {42,21,33,10}};
     printf("原始矩阵:\n");
     output(t,M);
     
     retate_to_right(t,M);
     
     printf("变换后矩阵:\n");
     output(t,M);
     
     return 0;              
 }
 void output(int x[][N],int n)
 {
     int i,j;
     
     for(i = 0;i<n;++i){
         for(j=0;j<n;++j){
             printf("%4d",x[i][j]);
         }
         printf("\n");;
     }
 }
 void retate_to_right(int x[][N],int n)
 {
     int i,j,t;
     for(i=0;i<M;++i){
         t=x[i][M-1];
         for(j=M-1;j>0;--j){
             x[i][j]=x[i][j-1];
         }
         x[i][0]=t;
     }
 }

 

 
posted @ 2023-11-19 16:15  二硫化碳  阅读(42)  评论(0)    收藏  举报