加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言:利用循环打印出对应个数的'*'。

(2014-11-10 10:56:12)
标签:

it

对应

数据

循环

数组

分类: c

题目:假设有40个学生被邀请来给餐厅的饮食和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分)编程统计并按如下格式输出餐饮服务质量调查结果。

     Grade                 Count                   Histogram

                                                    *****

                             10                       **********

                                                     *******

         ......

 

当我拿到这题时,我的思路不是很清晰,因为我不知道这是在问什么。多读了两遍题目才明白原来难点是在count和Histogram这两组数据中char类型的数据要和int类型数据对应的打印出来。这个就让我有点不知所措了,一开始我想用二维数组,但是输出成了问题让我很乱,我认为是可以利用二维数组一步到位的,但目前对我来说应该是使用的还不够熟练。

此时把乱如麻的思路从新理一遍╮(╯_╰)╭

①既然要输出字符,则有两种方法,

1) 输出单个字符 putchar( );

2) 输出字符串(多个字符) printf( );

ps: putchar在目前使用的频率上没有printf高。

 

②我可以可以吧grade 和count这两行的数据先打出来然后再打'*'这样的话应该可以使用一个循环是控制打印行数的,再在里面套一个循环控制打印星星数量的

如下

//让人数n对应打印出那个*
#include
#define A 10
void ReadList(int []);                                     // 定义一个数组来读取数据,得到每一个等级评分的人数
int main()

    int a,i,p;
 int list1[]={1,2,3,4,5,6,7,8,9,10};
 int list2[A];
 
 ReadList(list2);
 printf("  Grade        Count           Histogram \n");                        //先打印Grade Count 
 a='*';                                                                       //接着再每打印完一数字后用putchar的for循环,这样可以控制打印*的个数
 for(i=0;i
    printf("\n");
  printf("   %d            %d            ",list1[i],list2[i]);
  for(p=0;p
  {
   putchar(a);
  }
   printf("\n");
 }
 return 0;
}
void ReadList(int list2[A])
{
 int i;
  for(i=0;i

   
   printf("Grade %d ,the num of student: ",i+1);
   scanf("%d",&list2[i]);
  }
}

这段代码便是能最初步实现这个功能的程序。

 但是还有问题:

   如何去控制输入的总人数为40?

       可以这样去实现:ReadScore的时候,可以只输入9个。因为前边那些人余下的肯定都是选择10分。所以这样控制也可以减少数据的输入。不过要保证输入的数据的时候在grade9之前的总和都不能超过40。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有