精华内容
下载资源
问答
  • c语言中实现对对象的管理 前面的代码是这样的 #include #include #include "ObjMgt.h" typedef struct key{ unsigned int key1; unsigned int key2; unsigned int key3; struct key * next; }keyall ; /*...
  • 本题目要求从键盘读入一个整数M,输出大于1小于等于M能同时被7和5整除的数,如果读入的M小于等于1,表示输入不合法,...M输入不合法输出ERROR!”且结束程序。</p>
  • C语言中,所有的数据输入输出都是由库函数完成的。 因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    难道在C语言中结构能包含指向自己的指针吗? 1.15 如何定义一对相互引用的结构? 1.16 Struct{ }x1;和typedefstruct{ }x2;这两个声明有什么区别? 1.17 “typedefint(*funcptr)();”是什么意思? const...
  • 给出任意一个年月日(年>1900),现在我们能只是直接计算,要先判断给出的日期是否合法,对于非法的日期要给出错误提示信息,合法的日期要再计算是星期几。 输入格式: 年 月 日 输出格式: 0...
  • 难道在C语言中一个结构能包含指向自己的指针吗? o 2.7 怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示...
  • 6.1 下面代码的功能是将百分制成绩转换为 5 分制成绩具体功能是 如果用户输入的是 非法 字符或者在合理区间内的数据 例如输入的是 a ,或者 102 或 -45 等则程序输出 Input error! 并允许用户 重新输入 ,直到输入...
  • 下面代码的功能是将百分制成绩转换为 5 分制成绩具体功能是 如果用户输入的是 非法 字符或者在合理区间内的数据 例如输入的是 a,或者 102 或-45 等则程序输出 Input error! 并允许用户 重新输入 ,直到输入合法数据...
  • 6.1 "/*下面代码的功能是将百分制成绩转换为 5 分制成绩具体功能是如果用户输入的 是非法字符或者在合理区间内的数据例如输入的是 a,或者 102或-45 等则程序输 出 Input error! 并允许用户重新输入,直到输入合法...
  • "/*下面代码的功能是将百分制成绩转换为 5 分制成绩具体功能是如果用户输入的 是非法字符或者在合理区间内的数据例如输入的是 a,或者 102 或-45 等则程序输 出 Input error! 并允许用户重新输入 ,直到输入合法数据...
  • 实用文案 6.1 "/* 下面代码的功能是将百分制成绩转换为 5 分制成绩具体功能是如果用户输入的 是非法字符或者在合理区间内的数据例如输入的是 a,或者 102 或 -45 等则程序输 出 Input error! 并允许用户重新输入 ,...
  • 6.1 "/* 下面代码的功能是将百分制成绩转换为 5 分制成绩具体功能是如果用户输入的 是非法字符或者在合理区间内的数据例如输入的是 a, 或者 102 或 -45 等则程序输 出 Input error! 并允许用户重新输入 ,直到输入...
  • 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。 ②scanf("%d,%d",&a,&b); C规定:如果在“格式控制”字符串中...
  • 本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的...对每个非法输入,在一行中输出ERROR: X is not a legal number”,其

    本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。

    输入格式:

    输入第一行给出正整数N(<=100)。随后一行给出N个实数,数字间以一个空格分隔。

    输出格式:

    对每个非法输入,在一行中输出“ERROR: X is not a legal number”,其中X是输入。最后在一行中输出结果:“The average of K numbers is Y”,其中K是合法输入的个数,Y是它们的平均值,精确到小数点后2位。如果平均值无法计算,则用“Undefined”替换Y。如果K为1,则输出“The average of 1 number is Y”。

    输入样例1:
    7
    5 -3.2 aaa 9999 2.3.4 7.123 2.35
    
    输出样例1:
    ERROR: aaa is not a legal number
    ERROR: 9999 is not a legal number
    ERROR: 2.3.4 is not a legal number
    ERROR: 7.123 is not a legal number
    The average of 3 numbers is 1.38
    
    输入样例2:
    2
    aaa -9999
    
    输出样例2:
    ERROR: aaa is not a legal number
    ERROR: -9999 is not a legal number
    The average of 0 numbers is Undefined
    

    #include <ctype.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        int count = 0, N;
        double f, sum = 0;
        /* Maxium scenario: -1000.00. So just need to read 8 chars(+ '\0' = 9) */
        char s[9], *pEnd, *pDot, c;
    
        scanf("%d", &N);
        for(int i = 0; i < N; i++)
        {
            scanf("%8s", s);                /* Just read 8 chars */
    
            c = ungetc(getchar(), stdin);   /* If the next is non-white char, it is too long */
            f = strtod(s, &pEnd);           /* pEnd points to '\0' for a floating number */
            pDot = strchr(s, '.');          /* find the decimal point */
    
            if(!isspace(c)                          /* more than 8 chars */
            || *pEnd                                /* not floating number */
            || (f > 1000 || f < -1000)              /* out of range */
            || (pDot && pDot - s < strlen(s) - 3))  /* precision too high */
            {
                printf("ERROR: %s", s);
                /* this can avoid array overflow(we don't know how long input is) */
                while(!isspace(c = getchar())) putchar(c);
                printf(" is not a legal number\n");
            }
            else
            {   /* legel number */
                count++;
                sum += f;
            }
        }
    
        if(count == 0)  printf("The average of 0 numbers is Undefined\n");
        if(count == 1)  printf("The average of 1 number is %.2lf", sum);
        if(count >= 2)  printf("The average of %d numbers is %.2lf", count, sum / count);
    
        return 0;
    }
    展开全文
  • 题目 本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到...对每个非法输入,在一行中输出ERROR...

    题目

    本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。

    输入格式:

    输入第一行给出正整数N(<=100)。随后一行给出N个实数,数字间以一个空格分隔。

    输出格式:

    对每个非法输入,在一行中输出“ERROR: X is not a legal number”,其中X是输入。最后在一行中输出结果:“The average of K numbers is Y”,其中K是合法输入的个数,Y是它们的平均值,精确到小数点后2位。如果平均值无法计算,则用“Undefined”替换Y。如果K为1,则输出“The average of 1 number is Y”。

    输入样例1:

    7
    5 -3.2 aaa 9999 2.3.4 7.123 2.35
    

    输出样例1:

    ERROR: aaa is not a legal number
    ERROR: 9999 is not a legal number
    ERROR: 2.3.4 is not a legal number
    ERROR: 7.123 is not a legal number
    The average of 3 numbers is 1.38
    

    输入样例2:

    2
    aaa -9999
    

    输出样例2:

    ERROR: aaa is not a legal number
    ERROR: -9999 is not a legal number
    The average of 0 numbers is Undefined

    实现思路:相比较不合法的情况来说,合法的情况比较少一些,因此,总结合法的情况,然后取反比较简单。1.第一位只能是负号和数字0-9,如果是负号,后面不能只有0(即-0),如果是0,则后面或者没有元素(即0)或者跟小数点;2.从第二位开始,后面的元素只能是小数点或者数字0-9;3.只能有一个小数点;4.小数点只能在最后3位(即两位小数以内,经试验,最后一个测试点不通过是因为题目认为123.合法)。

    1.编写判断是否有效函数,有效则返回1,无效则返回0;

    2.定义字符数组临时存放输入数据,定义计数和总和变量;

    3.逐个输入,并判断是否有效,无效则输出,有效则计数(利用c自带的转换函数atof将字符串变为数字);

    4.输出。

    代码如下:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    int checkValid(char *s)
    {
      int flag=1;
      double temp=0;
      if(!(s[0]>='0'&&s[0]<='9'||s[0]=='-'))//第一位只能是负号或者数字
      {
        flag=0;
      }
      else if(s[0]=='0')
      {
        if(s[1]!='.'&&s[1]!='\0')//如果第一位为0,则后面只能为空或者小数点
        {
          flag=0;
        }
      }
      else if(s[0]=='-')//如果第一位为负,后面只能为1-9或者0.
      {
        if(!(s[1]>'0'&&s[1]<='9'||(s[1]=='0'&&s[2]=='.')))
        {
          flag=0;
        }
      }
      int dWZ=-1,cnt=0;//记录小数点位置和数量
      for(int i=1;i<strlen(s);i++)//从第二位向后
      {
        if(!(s[i]<='9'&&s[i]>='0'||s[i]=='.'))
        {
          flag=0;
          break;
        }
        if(s[i]=='.')
        {
          cnt++;
          dWZ=i;
        }
      }
      //小数点多于1个,或者不在后3位
      if(cnt>1||(cnt==1&&dWZ!=strlen(s)-3&&dWZ!=strlen(s)-2&&dWZ!=strlen(s)-1))
      {
        flag=0;
      }
      if(flag==1)//如果是数字,则验证范围
      {
        temp=atof(s);
        if(temp>1000||temp<-1000)
        {
          flag=0;
        }
      }
      return flag;
    }
    
    int main()
    {
      int iNum=0;
      scanf("%d",&iNum);
      double fSum=0;
      char temp[100]={0};
      int iCnt=0;
      for(int i=0;i<iNum;i++)
      {
        scanf("%s",&temp);
        if(checkValid(temp))
        {
          iCnt++;
          fSum+=atof(temp);
        }
        else
        {
          printf("ERROR: %s is not a legal number\n",temp);
        }
      }
      if(iCnt==0)
      {
        printf("The average of 0 numbers is Undefined");
      }
      else if(iCnt==1)
      {
        printf("The average of 1 number is %.2lf",fSum);
      }
      else
      {
        printf("The average of %d numbers is %.2lf",iCnt,fSum/iCnt);
      }
      return 0;
    }

    错误分析:

    1.最后一个测试点不过是因为认定123.这样的形式合法,所以小数点位置判断加了一条就通过了。

    展开全文
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    难道在C语言中结构能包含指向自己的指针吗? 7  1.15 如何定义一对相互引用的结构? 9 1.16 Struct{ } x1;和typedef struct{ } x2; 这两个声明有什么区别? 10 1.17 “typedef int(*funcptr)();”是什么...
  • 如果输入的n不是自然数或者输入不合法的数字,则输出"Input error!"。 提示 用两个双重循环分别计算nn矩阵的左上三角和右下三角,设置一个计数器从1开始记录当前要写入矩阵的元素值,每次写完一个计数器...

    用c++写的,小白一个。
    题目如下
    从键盘任意输入一个自然数n(n表示矩阵的大小,假设不超过100),请编程输出一个nn的蛇形矩阵。如果输入的n不是自然数或者输入了不合法的数字,则输出"Input error!"。
    提示 用两个双重循环分别计算n
    n矩阵的左上三角和右下三角,设置一个计数器从1开始记录当前要写入矩阵的元素值,每次写完一个计数器加1,在计算左上角和右下角矩阵元素时,分奇数和偶数两种情况考虑待写入的元素在矩阵中的行列下标位置。
    这道题的思路如下:
    主要是判断是i=0还是j=0;如果是j=0就让i++,如果是i=0就让j++;然后再按照对角线的方向一次的递加1就行了,这是输出上三角形,还有下三角形,主要的思路和这个一样,不过要让i和j都从n-1开始按着n*n递减,也是沿着对角线递减,知道i>1就行
    具体输出的实例如下:

    在这里插入图片描述
    在这里插入图片描述

    #include <iostream>
    #define N 10
    using namespace std;
    **//这个函数的功能就是产生蛇形矩阵。**
    void chanshe(int a[][N], int n)
    {
    **//这是输出上三角**
    	int c=1,i=0,j=0;
    	int s;
    	s=n*n;
    	a[i][j]=c;
    	while(j<n&&i<n)//循环结束条件
    	{
    	if(i==0)//判断i==0,就让j++;
    	{
    		j++;
    		a[i][j]=++c;
    		while(j!=0)//按照对角线的顺序输出
    	{
    		i++;
    		j--;
    		a[i][j]=++c;
    	}
    	}
    	if(j==0)//判断j==0;让i++;
    	{
    		i++;
    		a[i][j]=++c;
    		while(i!=0)//沿对角线递加
    		{
    			j++;
    			i--;
    			a[i][j]=++c;
    		}
    	}
    }
    **//这是输出下三角,思路和上面一样**
        i=n-1;
        j=n-1;
        a[i][j]=s;
        while(i>1&&j>1)
        {
        	if(i==n-1)
        	{
        		j--;
        		a[i][j]=--s;
        		while(j!=n-1&&j>0)
        		{
        			i--;
        			j++;
        			a[i][j]=--s;
    			}
    		}
    		if(j==n-1)
    		{
    			i--;
    			a[i][j]=--s;
    			while(i!=n-1&&i>0)
    			{
    				j--;
    				i++;
    				a[i][j]=--s;
    			}
    		}
    	}
    
    }
    //这个函数的功能是输出这个二维数组 也就是这个矩阵。
    void out(int a[][N],int n)
    {
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<n;j++)
    		{
    			printf("%5d",a[i][j]);
    		}
    		cout <<endl;
    	}
    }
    int main()
    {
    	int a[N][N],n;
    	cin >> n;
    	ZigzagMatrix(a,n);
    	out(a,n);
    	return 0;
    }
    

    大佬勿喷啊,谢谢,小白一个

    展开全文
  • 难道在C语言中结构能包含指向自己的指针吗? 7  1.15 如何定义一对相互引用的结构? 9 1.16 Struct{ } x1;和typedef struct{ } x2; 这两个声明有什么区别? 10 1.17 “typedef int(*funcptr)();”是什么...
  • #include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/ #include #include FILE *fp; struct Data { int fenlei; char name[10]; //姓名 char tel[15]; //电话 char age[8]; //年龄 ...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    难道在C语言中一个结构能包含指向自己的指针吗? . . . . 3 1.7 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义...
  • puts(" 数据不合法!请重新选择操作项(1~6): "); xy(40,10); continue; } else return i; } } void main() { int i,j; QBtree temp,bt=NULL; ReadFiles(&bt); while(1) { i=Menu(); system(...
  • 新手学习C++入门资料

    2008-12-28 23:58:50
    在C++中提供内在的输入输出运算符,这与其他语言是不同的。输入输出是通过C++类来实现的,cin和cout是这些类的实例,他们是在C++语言的外部实现。 在C++语言中,有了一种新的注释方法,就是‘//’,在该行//后...
  • 在C++中,有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字。另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。 2-8 什么叫做表达式?x = 5 + 7是一个...
  • //error处理:输出报错位置以及错误编号 void error(int n) { cc--;//出错时当前符号已经读完,cc-1 //printf("错误编号:%d\n",n); cout错误编号:"; fprintf(fo, "错误编号:%d\n", n); err++; if...
  • 通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: echo "Hello World!"; ?> First PHP page // Single line C++ style comment /* printing the message */ ...
  • 说明:将sql*plus屏幕中的内容输出到指定的文件 用法:开始印刷->spool 文件名 结束印刷->spool off 列子: 文件内容 9. 显示宽度 (linesize) 说明:设置显示行的宽度,默认是80个字符 用法:set linesize 120 ...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

c语言输入不合法输出error

c语言 订阅