您的位置:首页 > 其它

【高级语言程序设计期末复习No.2】数组与字符串

2017-06-14 14:11 399 查看
如果不出意外,数组的考察要占到一道题。根据以往考试的出题风格一般难度不会太大,在这次考试里应该算作简单题。例题1  现在有一个n*m行的矩阵A 逆时针旋转90度形成一个新的矩阵B,将B矩阵输出来。这个题目基本没有难度。基本的处理思路是首先输入数据,其次按照一定格式重新输出。(来源大作业J题)
#include <stdio.h>
#include <stdlib.h>

int main()
{
int m,n,i,j;
int a[100][100];
while(scanf("%d%d",&m,&n)!=EOF)
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(j=n-1;j>=0;j--)
{
for(i=0;i<m-1;i++)
printf("%d ",a[i][j]);
printf("%d\n",a[i][j]);
}

}
return 0;
}
着重注意输出的时候的格式。一般数组的输出格式要求比较严格。这道题的难点无非就是输出的顺序。例题2:方阵下标给你一个N阶方阵,请你计算出方阵中的最大值和最小值的下标(下标从0开始计算)
#include <stdio.h>
#include <stdlib.h>

int main()
{
int nn;
int i,j,k,l,m,n,p1,p2,q1,q2;
int a[10][10];
while(scanf("%d",&nn)!=EOF)
{
m=0;n=100;
for(i=0;i<nn;i++)
for(j=0;j<nn;j++)
scanf("%d",&a[i][j]);
for(i=0;i<nn;i++)
for(j=0;j<nn;j++)
{
if(a[i][j]>=m)
{
m=a[i][j];
p1=i;
p2=j;
}
if(a[i][j]<=n)
{
n=a[i][j];
q1=i;
q2=j;
}
}
printf("%d %d %d %d\n",p1,p2,q1,q2);

}
}
利用for循环直接进行查找即可。定义几个变量对数据进行记录。最大值和最小值查找刚开始对m和n设置两个极端的初值,逐渐筛选出最大值最小值。数组的考查方式无非就这些类别。在复习时一个是注意for循环的正确使用,一个是输出格式。剩下的都是一些简单的数据处理了。对于字符串的考察,主要的思路和数组差不多。和数组不同的是有以下几个方面:1、字符串输入输出scanf和gets的区别2、getchar的使用3、逐个查找字符时的结束条件4、字符串如果建立数组,最好以行为单位输入,也就是利用%s。
<span style="font-size:18px;"><strong>例题3:星星和月亮天空中有很多星星,这些星星用*号来表示;另外天空中有许多月亮,这些月亮用@来表示;现在让你计算星星的个数与月亮的个数的乘积,聪明的你能计算出来吗?</strong></span>
#include<stdio.h>int main(){int i,j,k,l,m,n;char a[100];while(scanf("%s",&a)!=EOF){m=0;n=0;for(i=0;a[i]!='\0';i++){if(a[i]=='*')m=m+1;if(a[i]=='@')n=n+1;}printf("%d\n",m*n);}}
<strong style="font-size:18px;"> </strong><span style="font-size:12px;">额我只想说期末考试不可能有这么简单的题……</span>不过这里基本涉及到了字符串和数组的使用方式的不同。字符串和数组整体考查方式大致就这么多,涉及到的特殊语法也不是很多,剩下的都是一些数学操作了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: