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

来源:互联网 发布:哪家淘宝店铺可以套现 编辑:程序博客网 时间:2024/06/04 23:55

如果不出意外,数组的考察要占到一道题。

根据以往考试的出题风格一般难度不会太大,在这次考试里应该算作简单题。

例题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>
不过这里基本涉及到了字符串和数组的使用方式的不同。



字符串和数组整体考查方式大致就这么多,涉及到的特殊语法也不是很多,剩下的都是一些数学操作了。

原创粉丝点击