| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 397 人关注过本帖
标题:运用数组和循环结构输入输出信息的问题
只看楼主 加入收藏
不是土豆
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2011-7-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
运用数组和循环结构输入输出信息的问题
[code]#include<stdio.h>
void main()
 {
      int a;               /*定义整型变量a*/
    char name[1];               /*定义字符数组*/            
    float b;               /*定义浮点型变量b*/     
    for(a=0;a<3;a++)           /*顺序输入信息*/  
    {   
           switch(a)
            {
              case 0: printf("请输入学生姓名:"); scanf("%s",&name[a]); break;   /*将字符串储存在数组元素name[0]中*/
          case 1: printf("请输入课程名:"); scanf("%s",&name[a]); break;    /*将字符串储存在数组元素name[1]中*/
          case 2: printf("请输入分数:"); scanf("%f",&b); break;      /*将分数储存在变量b中*/
         }   
    }
    for(a=0;a<3;a++)          /*顺序输出信息*/  
    {
            switch(a)
        {
        case 0:  printf("姓名:%s\n",name[a]); break;             /*输出姓名*/
                case 1:  printf("课程:%s\n",name[a]); break;             /*输出课程名*/
        case 2:  printf("分数:%f3.1\n",b); break;               /*输出分数*/
        }
           }
 }

我编写的时候编译器没报错,但是运行的时候电脑却给出了"该内存不能为read",请各位高手看看这代码哪里出错了,谢谢!
搜索更多相关主题的帖子: include 学生姓名 
2011-07-25 22:57
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
char name[2];               /*定义字符数组*/

My life is brilliant
2011-07-25 23:16
myWay007
Rank: 2
等 级:论坛游民
帖 子:1
专家分:20
注 册:2011-7-25
收藏
得分:20 
#include<stdio.h>
void main()
{
      int a;               /*定义整型变量a*/
    char name[1];               /*定义字符数组*/           
    float b;               /*定义浮点型变量b*/   
    for(a=0;a<3;a++)           /*顺序输入信息*/
    {  
           switch(a)
            {
              case 0: printf("请输入学生姓名:"); scanf("%s",&name[a]); break;   /*将字符串储存在数组元素name[0]中*/
          case 1: printf("请输入课程名:"); scanf("%s",&name[a]); break;    /*将字符串储存在数组元素name[1]中*/
          case 2: printf("请输入分数:"); scanf("%f",&b); break;      /*将分数储存在变量b中*/
         }  
    }
    for(a=0;a<3;a++)          /*顺序输出信息*/
    {
            switch(a)
        {
        case 0:  printf("姓名:%s\n",name[a]); break;             /*输出姓名*/
        case 1:  printf("课程:%s\n",name[a]); break;             /*输出课程名*/
        case 2:  printf("分数:%f3.1\n",b); break;               /*输出分数*/
        }
           }
}
-------------------------编译后的警告:--------------------------------------------
>gcc test.c
test.c: In function ‘main’:
test.c:21: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
test.c:22: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’
----------------------------------------------------------------------------------------
很明显你的程序错误在于,想要用来存储字符串但是又没有分配空间(无论是静态的或是动态的)
把char name[1]声明改为: char name[2][30];用二维字符数组存储名字。
改后程序如下:
#include<stdio.h>
void main()
{
    int a;                 /*定义整型变量a*/
    char name[2][30];     /*定义字符数组*/           
    float b;               /*定义浮点型变量b*/   
   
    for(a=0;a<3;a++)           /*顺序输入信息*/
    {  
         switch(a)
         {
          case 0: printf("请输入学生姓名:"); scanf("%s",name[a]); break;   /*将字符串储存在数组元素name[0]中*/
          case 1: printf("请输入课程名:"); scanf("%s",name[a]); break;    /*将字符串储存在数组元素name[1]中*/
          case 2: printf("请输入分数:"); scanf("%f",&b); break;      /*将分数储存在变量b中*/
         }  
    }
    for(a=0;a<3;a++)          /*顺序输出信息*/
    {
        switch(a)
        {
        case 0:  printf("姓名:%s\n",name[a]); break;             /*输出姓名*/
        case 1:  printf("课程:%s\n",name[a]); break;             /*输出课程名*/
        case 2:  printf("分数:%f3.1\n",b); break;               /*输出分数*/
        }
    }
}

2011-07-25 23:44
不是土豆
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2011-7-25
收藏
得分:0 
太感谢了!
2011-07-26 12:00
快速回复:运用数组和循环结构输入输出信息的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031142 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved