C语言第二次实验报告

集美大学计算机工程学院实验报告

 

课程名称:高级语言程序设计

班级:网络1713

实验成绩

指导教师:贺冰琰

姓名:罗俊

 

实验项目名称

学号:201721123088

上机实践日期

 

 

 

 

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

1.实验题目

11-2 求矩阵各行元素之和

12-3字符串逆序

13-2 利用指针找最大值

14-2 删除字符

15-5 建立学生信息链表

2.设计思路、实现方法

11-2:程序中将输入的矩阵存入二维数组a中,按矩阵的形式输出a,然后遍历该数组,通过每行的行下标和列下标两两相加,并输出相加之后的和

12-3:通过数组初始化,赋值或输入的方法把字符串存入数组,对字符串的草这就是对数组的操作。

13-2 :指针的值是某个变量的地址,通过指针间接访问那个变量,由取地址运算符&和接访问运算符*完成;将整形变量a的地址赋给整形指针p,使指针p指向变量a,即遍历全部,最后指向最大值,并输出

14-2 :结构数组的的元素师连续存放的,每个元素都分配足够的存储单元,通过使用数组下标找到所删除的元素,并使用空格代替

15-5:链表中,每个结点由数据部分和下一个结点的地址部分组成,利用递归定义方法构造出单向链表的数据结构,此题中,程序要求链表结构点式按学生的学号排序,因此,还需通过调用函数InserDoc()来实现

二、源程序

11-2 求矩阵各行元素之和:

#include<stdio.h>
int main(void)
{
int a[6][6],m,n,i,j,sum[6];
scanf("%d %d",&m,&n);
for(i=0;i<m;i++){
sum[i]=0;
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
sum[i]=sum[i]+a[i][j];
}
}
for(i=0;i<m;i++){
printf("%d ",sum[i]);
}
return 0;
}

12-3字符串逆序:

#include<stdio.h>
int main(){
char s[81]={0};
char c;
int i=0;
do{
scanf("%c",&s[i++]);
if(c!=' '){
s[i++]=c;

}while(s[i-1]!=' ');
i=i-2;
while(i>=0){
printf("%c",s[i--]);
//i--;
}
printf(" ");
return 0;

13-2 利用指针找最大值:

#include <stdio.h>

void findmax( int *px, int *py, int *pmax );

int main()
{	
    int max, x, y; 

    scanf("%d %d", &x, &y);
    findmax( &x, &y, &max );
    printf("%d
", max);

    return 0;
} 
/* 我的将被嵌在这里 */

void findmax( int *px, int *py, int *pmax )
{
if(*px>*py) 
*pmax=*px;
else *pmax=*py;
return *pmax;
}

14-2 删除字符:

#include <stdio.h>
#define MAXN 20

void delchar( char *str, char c );
void ReadString( char s[] );
int main()
{
    char str[MAXN], c;

    scanf("%c
", &c);
    ReadString(str);
    delchar(str, c);
    printf("%s
", str);

    return 0;
}

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

void delchar( char *str, char c )
{
char* ret = str; 
if( str != NULL )

char* p = str; 
while( *str )

if( *str != c )

*p = *str; 
p++; 

str++; 

*p = *str; 

return ret;
}

15-5 建立学生信息链表:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct stud_node {
     int    num;
     char   name[20];
     int    score;
     struct stud_node *next;
};
struct stud_node *head, *tail;

void input();

int main()
{
    struct stud_node *p;
	
    head = tail = NULL;
    input();
    for ( p = head; p != NULL; p = p->next )
        printf("%d %s %d
", p->num, p->name, p->score);

    return 0;
}

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

void input()
{
struct stud_node *q;
q=(struct stud_node *)malloc(sizeof(struct stud_node));
scanf("%d", &q->num);
while(q->num != 0)
{
scanf("%s %d", q->name, &q->score);
if(head == NULL)
{
head = q;
head->next = NULL;
}
if(tail != NULL)
{
tail->next = q;
}
tail = q;
tail->next = NULL;
q=(struct stud_node *)malloc(sizeof(struct stud_node));
scanf("%d", &q->num);
}

}

二.学习小结

(1)动态输入多个字符串

    用指针数组操作多个字符串时,都是通过初始化的方式对指针数组赋值,使指针的数组元素指向字符串。

(2)使用命令行的程序不能在编译中执行,需要将源程序经编译,链接为相应的命令文件,然后回到命令状态,再在该状态下直接输入命令文件名。

(3)链表定义,使用,指向。

原文地址:https://www.cnblogs.com/lj1507899927/p/8379455.html