一步一步写算法(查找指定学生的成绩)

v 查找指定学生信息:

v 程序示例:

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

#define PERSONS 1000
#define NAME_LEN 50

char *memory_init()
{
	return (char *)malloc(sizeof(char)*10);  //知识点1:malloc 
}

int getinfo(char *name[],int *score,char *target)
{
	int i;

	printf("Please input the name and score:\n");
	for(i = 0;i < PERSONS;i++)
	{
		scanf("%s",name[i]);      //知识点2:如何获取多个字符串的信息 

		if(strcmp(name[i],"end") == 0)
		{
			break;
		}

		scanf("%d",score+i);
	}

	printf("Please input the target student:\n");
	scanf("%s",target);
	
	return 1;

}

int lookup(char *name[],char *target)
{
	int i = 0;

	for(i = 0;i < PERSONS;i++)
	{
		if(strcmp(name[i],target) == 0)   //查找到指定学生则返回i 
		{
			printf("i : %d\n",i);
			return i;
		}
	}
	
}

int main()
{
	char *name[PERSONS] = {0};
	int  score[PERSONS] = {0};
	char target[NAME_LEN] = {0};
	int i = 0;
	int result;
	int n;

	for(i = 0;i < PERSONS;i++)
	{
		name[i] = memory_init();   //为指针数组开辟一段合理的空间 
	}

	result = getinfo(name,score,target);  //获取学生信息的模块 
	if(result == 0)       //模块返回值为0,则getinfo函数运行不成功 
	{
		printf("Get the name and score fail.\n");	
	}

    n = lookup(name,target);     //查找指定学生的模块 
	printf("The target student is: %s grade:%d\n",target,score[n]);
	return 0;
}

v 感悟:

这个程序是我在学习完数组和指针后写的,程序代码不超过100行。不过当初自己写的时候,却出现了不少错误。在调试这些错误的过程中,我也获得了一些关于C语言编写程序的感悟。

1.    C语言是一个面向过程的语言,所以每次在写一个程序的时候,一定要先想好这个程序的算法是怎样的。可以先在草稿纸上整理好自己的思路,再开始编写。否则,写着写着很容易乱掉。

2.    C程序编写要养成分模块的习惯,这样可以使自己的程序结构更清晰。

3.    编写C程序的一个个模块的时候,尤其是程序要实现的功能还比较多的时候,最好一个模块编写完就测试一下(可以使用最简单的printf函数),看运行是否正确。这样有利于最后的调试,也可以减少一些不必要的错误。我觉得像我这样刚刚入门C的人来说,这样写还是有好处的。

4.最后调试结果时,如果没有出现结果,在几个关键的地方加上printf,可以让我们清晰的看到一些错误

 

 

以上就是我对于这个程序的一些学习感悟,希望自己好好养成这些比较的程序编写习惯,一步一步将C语言的基础打好,向程序编写的更高阶段进发。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值