【C语言】数组习题

1、假如10个整数存储在数组a[10]中,要求把其中能被12整除的数标记为T,其他标记为F。标记存储在字符数组b[10]中下标相同的对应位置。试编写程序,实现以上功能,并输出两个数组。

#include <stdio.h>
int main() {
    int a[10]={12,23,34,36,24,11,77,98,48,15,};//数字数组
    char b[10];//下标数组
    for(int i=0;i<10;i++){
        if(a[i]%12==0){
            b[i]='T';
        }else{
            b[i]='F';
        }
    }
    for(int j=0;j<10;j++){
        printf("%d ",a[j]);
    }
    printf("\n");
    for(int j=0;j<10;j++){
        printf("%c ",b[j]);
    }
    return 0;
}

 2、编写程序,将输入的20名学生的成绩保存在数组中,求出其最高分、最低分及平均分。

#include <stdio.h>
int main() {
    float a[10],max[1],min[1];
    int i,t;
    float sum=0;
    printf("请输入10名学生的成绩:");
    for(i=0;i<10;i++){
        scanf("%f",&a[i]);
        sum+=a[i];
    }
    printf("\n");
    //求最高分和最低分
    max[0]=a[0];
    min[0]=a[0];
    for(i=1;i<10;i++){
        if(max[0]<a[i]){
            t=max[0];
            max[0]=a[i];
            a[i]=t;
        }
        if(min[0]>a[i]){
            t=min[0];
            min[0]=a[i];
            a[i]=t;
        }
    }
    printf("最高分为:%.1f,最低分为%.1f,平均分:%.2f",max[0],min[0],sum/10);
    return 0;
}

3、 设计一个程序统计某班全体学生3门课的考试成绩,要求能输入学生人数,并按编号从小到大的顺序依次输入学生的成绩,再统计出每门课程的全班总分,平均分及每个考生所有考试的总分和平均分。

#include<stdio.h>
#define M 100
int main(){
	int str1[M],str2[M],str3[M];//分别储存全班的三门成绩 
	int n,i,sum1=0,sum2=0,sum3=0;
	float ave1,ave2,ave3;
	float ave[M];
	int sum[M];
	printf("请输入学生人数:");
	scanf("%d",&n);
	for(i=0;i<n;i++){
		printf("请输入第%d位学生的成绩:\n",i+1);
		printf("语文成绩:");
		scanf("%d",&str1[i]);
		printf("数学成绩:");
		scanf("%d",&str2[i]);
		printf("英语成绩:");
		scanf("%d",&str3[i]); 
	}
	for(i=0;i<n;i++){
		//全班总分
		sum1+=str1[i];//语文全班总分
		sum2+=str2[i];//数学全班总分
		sum3+=str3[i];//英语全班总分 
	}
	ave1=sum1/n;//语文平均分
	ave2=sum2/n;//数学平均分
	ave3=sum3/n;//英语平均分
	printf("全班语文总分:%d 数学总分:%d 英语总分:%d\n",sum1,sum2,sum3);
	printf("全班语文平均分:%.2f 数学平均分:%.2f 英语平均分:%.2f\n",ave1,ave2,ave3); 
	for(i=0;i<n;i++){
		sum[i]=str1[i]+str2[i]+str3[i];
		ave[i]=sum[i]/3;
		printf("第%d位学生的全科总分:%d 三科平均分:%.2f\n",i+1,sum[i],ave[i]);
	}
	return 0;
}

4、编写程序,输出二维数组的鞍点,鞍点的元素值在该行上最大,在该列上最小,若没有鞍点输出“No”。

思路:外循环次数由行数决定,先找出每行最大的数,记下该数及该数的列,再将该数与该列的所有数进行比较若最小,则存在鞍点,若不是最小则跳过此次循环进入下一个外循环。注意:判断存在鞍点放在大循环里面,最后才判断没有鞍点

#include<stdio.h>
#define M 6
#define N 6
int main(){
	int x,y;//行,列 
	printf("请输入行数和列数:");
	scanf("%d %d",&x,&y);
	int str[M][N];
	int i,j,maxY,max,k,flag;
	//输入数组
	printf("请输入数组:\n");
	for(i=0;i<x;i++){
		for(j=0;j<y;j++){
			printf("输入第%d行第%d列:",i+1,j+1);
			scanf("%d",&str[i][j]);
		}
	}
	for(i=0;i<x;i++){
		max=str[i][0];//假设每行最大值为每行第一个数 
		maxY=0;
		for(j=0;j<y;j++){
			if(max<str[i][j]){
				max=str[i][j];
				maxY=j;//记下行最大的列 
			}
		}
		flag=1;
		//遍历行最大数所在列的数与行最大数比较,判断是否是最小值,若是将flag值不变,若不是改flag值为0 
		for(k=0;k<x;k++){
			if(max>str[k][maxY]){
				flag=0;//不存在 
				continue;
			}
		}
		if(flag){
		printf("存在鞍点!鞍点所在位置是:str[%d][%d]=%d",i,maxY,max);
		break;
		}
	} 
	if(!flag){
		printf("不存在鞍点!");
	} 
	return 0;
} 

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年12月22日
下一篇 2023年12月22日

相关推荐