复习

题目

  1. 从用户处获取两个字符串(使用gets函数)
  2. 比较这两个字符串是否相等(使用strcmp函数)
  3. 如果字符串相等,则输出"The strings are equal.";如果不等,则将第二个字符串附加到第一个字符串的末尾(使用stract函数),并输出合并后的字符串。
  4. 最后,程序需要输出合并后字符串的长度(使用strlen函数)

结果样例

答案

#include "stdafx.h"
#include <string.h>

int _tmain(int argc, _TCHAR* argv[])
{
    char str1[100],str2[100];
    printf("请输入第一个字符串:\n");
    gets(str1);
    printf("请输入第二个字符串:\n");
    gets(str2);
    if(strcmp(str1,str2)==0)
    {
        printf("The strings are equal.");
    }
    else
    {
        strcat(str1,str2);
        printf("合并之后的字符串为:%s\n",str1);
    }
    int len = strlen(str1);
    printf("合并后的总长度为:%d",len);
    return 0;
}    

题目

  1. 定义一个5位的一维数组,给数组每一位通过键盘赋值。
  2. 输出整个一维数组。
  3. 计算整个一维数组的平均值(带小数)
    结果展示

答案

int num[5],i=0;
printf("输入一个5位的数组:\n");//输出显示
for(i=0;i<5;i++)
{
    printf("输入第%d个数:",i);
    scanf("%d",&num[i]);
    if(i == 4)
    {
        printf("\n\n");
    }
}

for(i=0;i<5;i++)
{
    printf("第%d个数字为:%d \n",i,num[i]);
    if(i == 4)
    {
        printf("输出完成\n\n");
    }
}

double avg=0;
int count=0,sum=0;
for(i=0;i<5;i++)
{
    sum = sum + num[i];
    count ++;
}
printf("和为%d,共有%d位,平均值为%f",sum,count,(double)sum/count);

二维数组的定义和引用

定义

一般形式:类型说明符 数组名常量表达式1

int a3;
float b5;

应用说明

二维数组的逻辑结构就如同一张表格,按行存放

a[0] a[0][0] a[0][5] a[0][6] a[0][7]
a[1] a[1][0] a[1][8] a[1][9] a[1][10]
a[2] a[2][0] a[2][11] a[2][12] a[2][13]

表格助理解

int a3就像一个坐标系的第一象限
a行
看表格有助于理解

初始化

int i=0,j=0;
printf("\n");
int a1[3][16]={{11,22,13,24},{45,26,47,78},{39,510,211,112}};
for(i=0;i<3;i++)
{
    for(j=0;j<4;j++)
    {
        printf("%d",a1[i][j]);
    }
    printf("\n");
}

此类型至少有两个for

int i=0,j=0;
printf("\n");
printf("-----------------------2----------------------\n");
int a2[3][17]={41,32,783,34,125,876,37,678,29,10,2311,7612};
for(i=0;i<3;i++)
{
    for(j=0;j<4;j++)
    {
        printf("%d",a2[i][j]);
    }
    printf("\n");
}

-

int i=0,j=0;
printf("\n");
printf("-----------------------3----------------------\n");
int a3[ ][18]={231,42,893,344,235,96,47,38,29,610,211,412};///只能省略行!!
//int a3[3][]={231,42.893.344};行固定的时候,这个数组不唯一
for(i=0;i<3;i++)
{
    for(j=0;j<4;j++)
    {
        printf("%d",a3[i][j]);
    }
    printf("\n");
}

二维数组的初始化

初始化:指在定义时指定初始值,编译器把初值赋给数组变量

  1. 对全部数组元素赋数值
int a3={{1,2,3,4}{5,6,7,8}{9,10,11,12}};
int a3={1,2,3,4,5,67,89,10,11,12};
  1. 全部赋初值,第一纬长度省略
int [][21]={1,2,3,4,5 6 7,8,9,10,11,12};
  1. 对每行部分元素赋初值
int a3={{1},{5,6},{9,10,11}};
  1. 可以只给一部分元素赋初值
int a3={,2,3,4,5,6,7,8,9};

缺少的元素自动变为0

例题

  1. 定义一个2行3列的数组,键盘输入二维数组中所有元素的值
  2. 找出二维数组所有元素的最大值
  3. 求出二维码数组中所有元素的平均值

答案

int num[2][24]={0};//赋初值,否则部分编译器报错
int max = num[0][0];
for(int i=0;i<2;i++)
{
    for(int j=0;j<3;j++)
    {
        printf("请输入%d行%d列的元素:\n",i,j);
        scanf("%d",&num[i][j]);
        if(num[i][j]>max)
        {
            max = num[i][j];
        }
    }
}
printf("输入的元素如下:\n");
for(int i=0;i<2;i++)
{
    for(int j=0;j<3;j++)
    {
        printf("%d\n",num[i][j]);
    }
}

printf("最大值为:%d\n",max);
float avg=0;
int sum=0,count=0;
for(int i=0;i<2;i++)
{
    for(int j=0;j<3;j++)
    {
        sum=sum+num[i][j];
        count++;
    }
}
printf("和为%d,共%d位,平均数为%f",sum,count,(double)sum/count);

字符数组在二维数组中的应用

【相关知识】

  • 二维字符数组的定义与引用

二维字符数组的定义格式为:

char 数组名长度1;

字符数组元素也可以通过数组名和下标引用。字符数组也可以在定义时初始化,方法和其他类型的数值一样。若没有对字符数组全部元素赋值,编译系统会对剩余的元素自动赋值为空字符。空字符用'\0'来表示,是ASCII码值为0的字符。表示什么都不做,也不显示。在定义字符数组后。只能逐个给数组元素赋值。

上文助记

char a[2][3]
'1'(a [0][0]='1') '2' '3'
'4' '5' '6'

看一下代码,思考该程序会输出什么

题目

答案/解析


"ABCD"代表'A''B''C''D''\0'↓
解析

题目

前三道
1题:*c3没学。是指针
2题D选项:给字符串和字符串之间赋值用strcpy | 字符串"B"='B''\0'
3题:define相当于定义一个常量,没问题

字符串数组 - 复习

字符串处理的函数 #include<string.h>
char a[10]="abc",b[10]="ABC"
输出字符串 puts(a)
输入字符产 gets(a)
字符串连接 stract(a,b)
字符串复制 strcpy(a,b)
字符串比较 strcmp(a,b)
字符串长度 strlen(a)
大写字母转换成小写字母函数 strlwr(b)
小写字母转换成大写字母函数 strupr(a)

最后修改:2024 年 08 月 12 日
如果觉得我的文章对你有用,请随意赞赏