`
ylxg12345
  • 浏览: 4651 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

HDU 2399 GPA 之关于char型指针的使用

阅读更多
最近在做杭电acm,关于HDU 2399 GPA 纠结了很久,调试也没有发现问题所在,后来经过参考分析发现是char型指针与数组的问题,用指针不好使,提交失败,但是数组却可以成功,上代码,大家可以对比参考一下。
#include<stdio.h>
#include<string.h>
int main(){
	char *str,*p,grade; //因为使用了char型指针,HDU提交是总是Runtime Error(ACCESS_VIOLATION),
	int sum,num,flag;   //后来改用char型数组就好用了,神奇!
	flag=0;
	while(gets(str)!=NULL){
		sum=0;
		num=0;
		p=str;
		while(p<str+strlen(str)){
			grade=*p;
			switch(grade){
				case 'A':sum+=4;num++;break;
				case 'B':sum+=3;num++;break;
				case 'C':sum+=2;num++;break;
				case 'D':sum+=1;num++;break;
				case 'F':num++;break;
				case ' ':break;
				default:flag=1;
			}
			if(flag==1)
				break;
			else
                p++;
		}
		if(flag==1){
			printf("Unknown letter grade in input\n");
			flag=0;
		}
		else if(strlen(str)>0){
		    printf("%.2f\n",sum/(num*1.0));
        }
        str=(char *)malloc(20*sizeof(char));
	}
}




下面这个是正确的代码
#include<stdio.h>
#include<string.h>
int main(){
	char str[30];
	int sum,num,flag,i;
	flag=0;
	while(gets(str)!=NULL){
		sum=0;
		i=0;
		num=0;
		while(i<strlen(str)){
			switch(str[i]){
				case 'A':sum+=4;num++;break;
				case 'B':sum+=3;num++;break;
				case 'C':sum+=2;num++;break;
				case 'D':sum+=1;num++;break;
				case 'F':num++;break;
				case ' ':break;
				default:flag=1;
			}
			if(flag==1)
				break;
			else
                i++;
		}
		if(flag==1){
			printf("Unknown letter grade in input\n");
			flag=0;
		}
		else if(strlen(str)>0){
		    printf("%.2f\n",sum/(num*1.0));
        }
	}
}

分享到:
评论

相关推荐

    hdu.rar_hdu

    压缩包内的文件名“朝花夕拾——hdu”可能表示这是一系列关于HDU题目的代码记录,"朝花夕拾"是一个成语,意味着回忆过去的事情,这里可能是暗示这些代码是作者在过去解决HDU题目时留下的,现在整理出来分享或复习。...

    HDU_2010.rar_hdu 2010_hdu 20_hdu acm20

    【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...

    HDU题目java实现

    【标题】"HDU题目java实现"所涉及的知识点主要集中在使用Java编程语言解决杭州电子科技大学(HDU)在线评测系统中的算法问题。HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案...

    hdu1250高精度加法

    ### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...

    ACM HDU题目分类

    ACM HDU 题目分类 ACM HDU 题目分类是指对 HDU 在线判题系统中题目的分类,总结了大约十来个分类。这些分类将有助于编程选手更好地理解和解决问题。 DP 问题 DP(Dynamic Programming,动态规划)是一种非常重要...

    HDU4802解题报告

    本题是HDU4802题,名为"GPA",是一道关于计算学生GPA的编程题目。题目要求根据学生所修课程的学分(ci)和成绩(si)来计算学生的GPA。成绩用A、B、C、D、F以及特殊的P、N表示,其中P代表通过,N代表不通过。对于...

    HDU DP动态规划

    总的来说,"HDU DP动态规划"是一个关于使用动态规划解决HDU平台上某一题目的主题,它要求掌握动态规划的基本概念、方法,并能灵活应用到实际问题中,同时可能涉及到文件交互和调试,以完成问题的求解。

    hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj

    【标题】"hdu.rar_HDU 1089.cpp_OJ题求和_hdu_horsekw5_杭电obj" 提供的信息是关于一个压缩文件,其中包含了一个名为 "HDU 1089.cpp" 的源代码文件,这个文件是为了解决杭州电子科技大学(Hangzhou Dianzi ...

    HDU1059的代码

    HDU1059的代码

    hdu1001解题报告

    hdu1001解题报告

    hdu 1574 passed sorce

    hdu 1574 passed sorce

    杭电ACMhdu1163

    【标题】:杭电ACMhdu1163 【描述】:这是一道源自杭州电子科技大学(Hangzhou Dianzi University,简称HDU)的ACM编程竞赛题目,编号为1163。这类问题通常需要参赛者利用计算机编程解决数学、逻辑或算法上的挑战,...

    hdu2101解决方案

    hdu2101AC代码

    ACM HDU

    【标签】"ACM题解 HDU"意味着这是一个关于如何解答HDU ACM题目的资源,可能包含了解题思路、算法解析、代码实现等方面的内容。这样的资料对于准备ACM比赛的选手或者希望提升算法能力的程序员来说非常有价值。 在...

    解题代码 hdu1241

    本例中的代码使用了递归的方式。 #### 三、代码分析 ##### 1. 数据结构定义 ```c #include #define N 101 char graph[N][N]; ``` - **`#include&lt;stdio.h&gt;`**:引入标准输入输出头文件。 - **`#define N 101`**:...

    hdu 5007 Post Robot

    hdu 5007 Post Robot 字符串枚举。 暴力一下就可以了。

    Hdu1000—2169部分代码

    HDU是杭州电子科技大学(Hangzhou Dianzi University)举办的一个在线编程竞赛平台,全称为HDU Online Judge。ACM是国际大学生程序设计竞赛(International Collegiate Programming Contest)的缩写,是一个全球性的...

    hdu_acm_1084.rar_ACM_HDU10_acm10_hdu_hdu 1084

    【标题】"hdu_acm_1084.rar_ACM_HDU10_acm10_hdu_hdu 1084" 提供的是一个关于杭电(HDU)ACM竞赛第1084题的解决方案。该题目可能是在编程竞赛中常见的算法问题,而ACM(国际大学生程序设计竞赛)是全球知名的编程...

    HDU最全ac代码

    HDU(Hangzhou Dianzi University)是国内外知名的在线编程竞赛平台,主要服务于ACM/ICPC(国际大学生程序设计竞赛)以及相关的算法训练。"HDU最全ac代码"这个压缩包很可能是包含了在HDU平台上解题通过的完整源代码...

    hdu acm1166线段树

    hdu 1166线段树代码

Global site tag (gtag.js) - Google Analytics