2024.1.3-C语言基础作业

本文档展示了C语言中的基础编程实例,包括一维数组的操作(查找最值、排序),二维数组的最值查找、杨辉三角的生成以及二维数组的转置。通过这些代码示例,读者可以了解如何在实际编程中处理数组数据和使用简单的排序算法。
摘要由CSDN通过智能技术生成

1>

要求:

源代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
        //打印ABC
        char a[4]={'A','B','C','D'};
        int i,j;

        for(i=0;i<4;i++) 
        { 
                for(j=0;j<i+1;j++) 
                { 
                 
                        printf("%c",a[j]); 
                }
        printf("\n");
        }
        return 0;
}

效果图:

2>

要求:

源代码:

 #include<stdio.h>
 #define N  10 //定义N次评分,此处N为10次
 int main(int argc,char *argv[])
 {
         int a[N];
         int sum=0;
         printf("enter %d times score:&&\n",N);                                      
         for(int i=0;i<N;i++)
         {
 
                 scanf("%d",&a[i]);
                 sum+=a[i];       //对十次全部评分求和
         }
         int maxIndex=0;   
         int minIndex=0;
         for(int i=0;i<N;i++)
         {
                 if(a[i]>a[maxIndex])
                 {       maxIndex=i;    //记录最大值下标
                 }
                 if(a[i]<a[minIndex])
                         minIndex=i;    //记录最小值下标
         }
 
    //最后的平均值为:(sum-最大值-最小值)除以(N-1-1)
 printf("除去最大值最小值后平均值为%.2f\n",1.0*(sum-a[maxIndex]-a[minIndex])/(N-2));
 
 
         return 0;
 }

效果图:

3>

要求:

i>计算以为数组最值

源代码:
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {
         int n;
         printf("please enter n\n");
         scanf("%d",&n);
         int arr[n];
         int max,min,t;
 
         for(int i=0;i<n;i++)
         {
                 printf("enter the NO.%d  data\n",i+1);
                 scanf("%d",&arr[i]);
         }
                 max=arr[0];
                 min=arr[0];
          for(int i=1;i<n;i++)
         {
                 if(arr[i]>max){max=arr[i];}
                 if(arr[i]<min){min=arr[i];}
         }
          printf("max=%d,min=%d\n",max,min);
                                                       
         return 0;
 }
效果图:

ii>一维数组查找

源代码:
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {

        //定义n维数组
         int n,j;
         printf("Please enter n\n");
         scanf("%d",&n);            
 
         int key,arr[n],count=0,b[n];
 
         for(int i=0;i<n;i++)                                    
         {
                 printf("Enter the No.%d data\n",i+1);
                 scanf("%d",&arr[i]);
         }

        //输入key值                                    
         printf("enter key number\n");
         scanf("%d",&key);
         for(int i=0,j=0;i<n;i++)
         {
                 if(key==arr[i]) {count++;b[j++]=i; }//遍历数组,如果找到与key相等值,则匹配次数count++,并将此i记录在b[j]中,最后j++ 。
 
         }
         if(count==1){printf("Only one,index is [%d]\n",b[0]);}
         else if(count>1)
         {
                 for(j=0;j<count;j++)
                 printf("Not only,No.%d index=%d\n",j+1,b[j]);
 
                 printf("total=%d\n",count);
         }
         else printf("no match\n");
 
 
 
         return 0;
 }
效果图:

iii>一维数组冒泡

源代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
        //冒泡
        int a[]={1,10,20,7,18};
        int t,i;
        printf("原序列:");

        for(i=0;i<5;i++)
        printf("%3d",a[i]);

        printf("\n");                         
        for(i=0;i<5;i++)
        {
                for(int j=0;j<5-i-1;j++)
                {

                        if(a[j]>a[j+1])
                        {
                                t=a[j];
                                a[j]=a[j+1];
                                a[j+1]=t;
                        }
                }
        }
                printf("冒泡排序后:");
                for(i=0;i<5;i++)
                printf("%3d",a[i]);

        printf("\n");


        return 0;
}
效果图:

iv>一维数组简单选择排序

源代码:
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {
         //选择
         int a[]={1,10,20,7,18};
         int t,i,minIndex;
         printf("原序列:");
 
         for(i=0;i<5;i++)
                 printf("%3d",a[i]);
 
         printf("\n");
         for(i=0;i<5-1;i++)
         {       minIndex=i;
                 for(int j=i+1;j<5;j++)
                   {
                         if(a[minIndex]<a[j])
                                 minIndex=j;
                   }
                 if(minIndex!=i)
                 {
                         t=a[minIndex];
                         a[minIndex]=a[i];       
                         a[i]=t;
                 }
           }
         printf("选择排序后序列:");
 
         for(i=0;i<5;i++)
         printf("%3d",a[i]);
 
         printf("\n");
         return 0;
 }
效果图:

4>

要求:

i>二维数组最值

源代码:
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {
         int a[2][3];
         int i,j;
         for(i=0;i<2;i++)
         {
                 for(j=0;j<3;j++)
                 {
                         scanf("%d",&a[i][j]);
                 }
         }
         int max=a[0][0];
         int mline,mrow;
         printf("数组为:\n");
         for(i=0;i<2;i++)
         {
                 for(j=0;j<3;j++)
                 {
                         printf("a[%d][%d]=%d\t",i,j,a[i][j]);
                         if(max<a[i][j])
                         {
                                 max=a[i][j];
                                 mline=i;
                                 mrow=j;
                         }
                 }
         }
         printf("最大值是:%d,在第%d行第%d列\n",max,mline,mrow);
         return 0;
 }
效果图:

ii>杨辉三角

源代码:
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {
         //杨辉三角
         int n;
         printf("please enter levels\n");
         scanf("%d", &n);
         printf("\n");                                                          
         int arr[50][50];
         arr[1][1] = 1;
         for(int i = 1; i <= n; i ++)
         {
                 for(int j = 1; j <= i; j ++)
                 {
                         if(j == i || j == 1)//第一列和对角线都是元素1
                         {
                                 arr[i][j] = 1;
                         }
                         else
                         {
                                 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
 
                         }
                         printf("%-4d ", arr[i][j]);
 
                 }
                         printf("\n");
         }
         return 0;
 }
效果图:

iii>二维数组简单转置

源代码:
 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {
         int a[][3]={2,3,5,
                     1,6,9};
         int n=sizeof(a)/sizeof(a[0]);//计算出数组a的行数
         int b[3][n];
         printf("原数组为:\n");
         for(int i=0;i<n;i++)
         {
                 for(int j=0;j<3;j++)
                 {
                         b[j][i]=a[i][j];
                         printf("a[%d][%d]=%d\n",i,j,a[i][j]);
                 }
         }
         printf("转置后数组为:\n");
         for(int i=0;i<3;i++)
 {
         for(int j=0;j<n;j++)
                 printf("b[%d][%d]=%d\n",i,j,b[i][j]);
 }                                                            
         return 0;
 }
效果图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值