C语言第二次实验报告

一.实验题目,设计思路

1.实验题目

  题1:11-6 方阵循环右移(20 分)

    本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n1列变换为第nm、nm+1、⋯、n1、0、1、⋯、nm1列。

  题2:12-5 查找指定字符(15 分)

    本题要求编写程序,从给定字符串中查找某指定的字符。

  题3:13-5 判断回文字符串(20 分)

    本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。

  题4:14-8 字符串排序(20 分)

    本题要求编写程序,读入5个字符串,按由小到大的顺序输出。

  题5:15-6 按等级统计学生成绩(20 分)

    本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。

2.设计思路

   11-6 方阵循环右移

    对给定的数组,通过其下标数值以及周期进行移动。

  12-5 查找指定字符

    对输入的字符串进行循环查找,从i=0开始,若找到与ch相同的字符,则立刻跳出循环,并将下标数值记录并输出。

  13-5 判断回文字符串

    将字符串分为两部分,前部由小到大推进,后部由大到小推进,在对应的字符部分,若有发现不相等的情况,即该字符串非回文字符串。

  14-8 字符串排序

    通过排序法,将所给定的字符串组进行大小比较,将较小的排至字符串组前,较大的排至后。

  15-6 按等级统计学生成绩

    设定判断条件,在相关的区间内给定相应的等级,并且在出现小于额定分数的情况时,对统计人数进行加一处理。


二.源程序(可只截取最关键的部分)

11-6 方阵循环右移

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int i, j, m, n, index;
 6     int Array1[6][6], Array2[6][6];
 7     scanf("%d %d", &m, &n);
 8     for (i = 0; i < n; i++) {
 9         for (j = 0; j < n; j++)
10             scanf("%d", &Array1[i][j]);
11     }
12     for (i = 0; i < n; i++) {
13         for (j = 0; j < n; j++) {
14             index = (j+m)%n;
15             Array2[i][index] = Array1[i][j];
16         }
17     }
18     for (i = 0; i < n; i++) {
19         for (j = 0; j < n; j++)
20             printf("%d ", Array2[i][j]);
21         printf("\n");
22     }
23 
24     return 0;
25 }

12-5 查找指定字符

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include <string.h>
int main()
{
    char str[81];
    char b;
    int i=0,j=-1; // j = -1
    int len;
    scanf("%c\n",&b);
    gets(str);
    len=strlen(str);//¼ÆË㳤¶È 
    for (i=len-1;i>=0;i--)
    {
        if (b==str[i])
        {
            j=i;
            break;
        }
    }
    if (j == -1)
        printf("Not Found\n");
    else
    {
        printf("index = %d",j);
    }
    return 0;
}

13-5 判断回文字符串

bool palindrome( char *s )
{
    int len = strlen(s), i;
    for (i = 0; i < len/2; ++i){
        if (s[i] != s[len-1-i]){
            return false;
        }
    }
    return true;
} 
#include <stdio.h>
#include <string.h>

#define MAXN 20
typedef enum {false, true} bool;

bool palindrome( char *s );

int main()
{
    char s[MAXN];

    scanf("%s", s);
    if ( palindrome(s)==true )
        printf("Yes\n");
    else
        printf("No\n");
    printf("%s\n", s);

    return 0;
}

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

14-8 字符串排序

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    int i,j,n;
    scanf("%d",&n);
    char a[n][80], t[80];
    for (i = 0; i < 5; i++)
    {
        scanf("%s",a[i]);
    }
    for (i=1;i<5;i++)
    {
        for (j =0; j < 5-i ;j++)
        if (strcmp(a[j], a[j+1]) > 0)
        {
        strcpy(t,a[j]);
        strcpy(a[j], a[j + 1]);
        strcpy(a[j + 1], t);
        }
    }
    for (i = 0; i < 5; i++)
    puts(a[0]);
    return 0;
}

15-6 按等级统计学生成绩

int set_grade( struct student *p, int n )
{
    int count=0;
    for(int i=0;i<n;i++){
        if(85<=p[i].score&&p[i].score<=100){
            p[i].grade='A';
        }
        else if(70<=p[i].score&&p[i].score<=84){
            p[i].grade='B';
        }
        else if(60<=p[i].score&&p[i].score<=69){
            p[i].grade='C';
        }
        else if(0<=p[i].score&&p[i].score<=59){
            p[i].grade='D';
            count++;
        }
    }
    return count;
}
#include <stdio.h>
#define MAXN 10

struct student{
    int num;
    char name[20];
    int score;
    char grade;
};

int set_grade( struct student *p, int n );

int main()
{   struct student stu[MAXN], *ptr;
    int n, i, count;

    ptr = stu;
    scanf("%d\n", &n);
    for(i = 0; i < n; i++){
       scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
    } 
   count = set_grade(ptr, n);
   printf("The count for failed (<60): %d\n", count);
   printf("The grades:\n"); 
   for(i = 0; i < n; i++)
       printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);
    return 0;
}

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

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

  在解题过程中,可能会出现对新的概念不理解的情况,这就要求我们去多熟悉课本知识,并且在熟悉课本知识的条件下,多多练习代码。

  而解题中,若是有思路不清晰的情况,则需要先静下心,仔细观察题目的要求,写出需要的步骤,列出所需的功能,最后通过书写代码实现功能。

  

posted @ 2018-01-26 16:23  Chitanda_Eru  阅读(1211)  评论(0编辑  收藏  举报