PTA 习题7-5 习题7-6

习题7-5
题目要求:
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。
代码如下:

#include

int main(void){
	int n,i,j,k,max,flag=1;  //0为没有,1为有 
	int h,l,count=0;
	scanf("%d",&n);
	int a[n][n];
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(i=0;i<n;i++){   //i检查行最大 
		flag=1;
		max=0;
		for(j=0;j<n;j++){
			if(a[i][j]>=max){  //注意是大于等于。
			   max=a[i][j];
			   h=i;
			   l=j;
			}
		} 
		for(k=0;k<n;k++){
			if(a[k][l]<max){
				flag=0;  //在列上有比最大值小的。 
			}
		}
		//printf("flag=%d\n",flag);
		if(flag==1){
		   printf("%d %d\n",h,l);
		   count++;
	    }
	}
	if(count==0){
		printf("NONE");
	}
    return 0;
} 

本题思路:
1、先依题意输入二维数组。for循环查找每行最大元素并做好标记。在第一层循环内部继续加入for循环判断是否在列上为最小值。
2、输出时使用了一个count来输出NONE,count=0则不存在鞍点。

习题7-6
题目要求:
英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。
代码如下:

#include

int main(void){
	char c[80];
	int count=0,i=0,j;
	while((c[i]=getchar())!='\n'){
		i++;
	}
    for(j=0;c[j]!='\0';j++){
    	if(c[j]>='A'&&c[j]<='Z'&&c[j]!='A'&&c[j]!='E'&&c[j]!='I'&&c[j]!='O'&&c[j]!='U'){
		    count++;
	    }
    }
	printf("%d",count);
    return 0;
} 

本题思路:
1、最开始用的是将除A,E,I,O,U以外的大写字母存入另一个字符串中,再拿来一一与原字符串比对,但是一直出问题。后边改成了现在这样,用单层for循环加if语句判断的形式。
2、另一个比较重要的点是字符串自行会有一个’\0’作为结尾。所以在跳出循环时只需要判断是否遇到这个标记就可以。

你可能感兴趣的:(基础)