C语言第二次实验报告

C语言第二次实验报告

一、实验题目,设计思路,实现方法。

题目1:        11-4 判断上三角矩阵(15 分)

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

上三角矩阵指主对角线以下的元素都为O的矩阵;主对角线为从矩阵的左上角至右下角的连线。

输入格式:

输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

设计思路:运用循环嵌套,判断下三角元素全为0,即当行序数大于列序数时的元素值都为0

实现方法:运用两个for循环,定义b=0if语句判断当元素下标行序数大于列序数时元素值是否为0,若不是,b=1。循环结束时,若b=0,则改矩阵是上三角矩阵,若b=1,则该矩阵不是上三角矩阵。

 

题目2:        12-3 字符串逆序(15 分)

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

在一行中输出逆序后的字符串。

设计思路:先得出字符串的长度,再通过循环使字符交换位置,从而得到逆序的字符串。

实现方法:while循环中用getchar()得出字符串的长度i,然后字符逆序需要交换的次数为i/2,用for循环使的字符交换,从而得到逆序字符。别忘了字符串需要结束符’/0’

 

题目3:        13-3 在数组中查找指定元素(15 分)

函数接口定义:

int search( int list[], int n, int x );

其中list[]是用户传入的数组;n≥0)是list[]中元素的个数;x是待查找的元素。如果找到

则函数search返回相应元素的最小下标(下标从0开始),否则返回−1

裁判测试程序样例:

#include <stdio.h>

#define MAXN 10

int search( int list[], int n, int x );

int main()

{

    int i, index, n, x;

    int a[MAXN];

    scanf("%d", &n);

    for( i = 0; i < n; i++ )

        scanf("%d", &a[i]);

    scanf("%d", &x);

    index = search( a, n, x );

    if( index != -1 )

        printf("index = %d\n", index);

    else

        printf("Not found\n");

    return 0;

}

/* 你的代码将被嵌在这里 */

设计思路:用循环找到x所在的位置,找到其对应的下标。

实现方法:for循环找到x所对应元素的位置,记录其下标值,将值返回主函数。

 

题目4;        14-4 输出月份英文名(15 分)

本题要求实现函数,可以返回一个给定月份的英文名称。

函数接口定义:

char *getmonth( int n );

函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字,则返回空指针NULL。

裁判测试程序样例:

#include <stdio.h>

char *getmonth( int n );

int main()

{

    int n;

    char *s;

    scanf("%d", &n);

    s = getmonth(n);

    if ( s==NULL ) printf("wrong input!\n");

    else printf("%s\n", s);

    return 0;

}

/* 你的代码将被嵌在这里 */

设计思路:将月份对应的数组存入二维数组,再根据读取的月份数字对应输出月份英文字母。

实现方法:定义二维数组,将月份对应的英文字母存入数组,若月份存在则返回月份对应的英文字母,否则返回空指针。

题目5:        15-10 找最长的字符串(15 分)

本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:

输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:

在一行中用以下格式输出最长的字符串:

The longest is: 最长的字符串

如果字符串的长度相同,则输出先输入的字符串。

设计思路:得出字符串长度,通过循环将它们进行比较。

实现方法:引用字符串长度函数strlen()计算字符串的长度,再用for循环比较长度。加头文件#include<string.h>。

 

二、源程序

 

题目1:        11-4 判断上三角矩阵(15 分)                                                                                                                                                                                                     

 

 

题目2:        12-3 字符串逆序(15 分)

 

 

题目3:        13-3 在数组中查找指定元素(15 分

 

 

题目4;        14-4 输出月份英文名(15 分

 

 

题目5:        15-10 找最长的字符串(15 分)

 

 

三、遇到的问题及解决方法,心得体会

1、判断上三角矩阵的时候,一开始没有想到可以通过行序数大列序数来判断,绕了很多弯路。

2、输出月份对应英文单词,开始用switch()出现段错误,后面定义一维数组还是答案错误,在老师的讲解下,知道应该定义成二维数组。

3、知道了字符串长度函数strlen(),使得编程步骤简单很多。

 

 

 

 

posted @ 2018-01-23 10:02  张馨玙  Views(1077)  Comments(0Edit  收藏  举报