C语言的一道题 求助求助

作者&投稿:无真 (若有异议请与网页底部的电邮联系)
c语言一道题求助~

原因:fgets把输入的最后一个换行字符也放到你那个数组里面了,所以总是多出一个换行符
修改如下,希望能帮到您。


你的代码是什么,提示的错误又是什么

一、统计输入的字符个数
同学们在学习C语言课程中,经常会遇到一道题,就是要求你写一个C程序,这个C程序能够读取你从键盘上输入的字符,并且统计其中的字符个数,最后输出总的字符个数并且把这些输入的字符再输出来。
不少同学遇到这道题没啥思路,不知该如何上手。其实需要按照分解题目、每个分解的部分对应的C语言的哪些知识点、每个分解的部分写成伪C程序代码,最后完善为一个可以编译与执行的C程序代码的步骤来。每一个C程序上机题看着难,其实不然,同学们需要掌握做题的思路,按照思路一步一步地走下去。这篇文章及后续的上机题都会教同学们思路。C程序代码不重要,重要的是思路。
二、题目分解思路
同学们在拿到一道C程序上机题时,要仔细审题,就像我们小时候写作文一样要仔细审题。通过审题,同学们要分解题目,通过分解提炼出题目中的关键点,也就是只要把这些关键点做出来,这道题也就做出来了。
关于这道题,我们仔细分解试题后可以提取出这道题的几个关键点,如下:
1、要求实现一段C程序。
2、C程序要读取你从键盘上输入的字符。
3、统计字符的个数。
4、输出字符的个数。
5、输出所有的字符。
好了,这道C程序题的关键点我们都提取出来了,下面来说说每个关键点对应的C语言知识点。
三、C语言知识点
上面提取出了5个关键点,同学们要能迅速在脑海中找到这5个关键点对应的C语言知识点,这个就需要同学们平时认真地学习C语言、打好C语言的基础了。如果不记得的话,赶紧查查书再温习温习。
这5个关键点对应的C语言知识点如下。
1、要求实现一段C程序。
但凡是C程序,总有一些固定的东西,比如该包含的头文件要包含进来,然后把main函数先写好,就像这样:
剩下的事儿不就是慢慢地填其他代码吗。
2、C程序要读取你从键盘上输入的字符。
要从键盘上读取输入的字符,同学们想想有哪些函数是可以从键盘读入字符的?这个时候你应
该能快速地想打scanf、getchar等,对吧。最起码你得想到scanf吧,这个都想不到的话赶紧再去看看书,温习温习。
这里我们先用getchar吧。
3、统计字符的个数。
既然要统计字符的个数,那么就需要一个变量吧,这个变量专门存放字符的个数的。而且字符的个数肯定是个整数对吧,又不可能是个小数。既然是整数,同学们脑海里立马就应该想到C语言中标记整数的那些类型,比如short,int,long等。这道题输入的字符数不会很多,那么这个变量的类型可以选用int。
4、输出字符的个数。
输出字符的个数,那当然就要用到输出函数了,同学们脑海里就应该立即想到有哪些输出的函数呢?最常见的肯定是printf函数了,行,我们就用printf函数吧。
5、输出所有的字符。
哎呀,还要输出所有的字符。那么同学们就要想想了,C程序里什么时候输出呢?是把所有的字符都收下来再输出还是一边收字符一边输出呢?
如果是都收下来再输出的话,那么就需要一个能够存放字符的地方,比如数组。
如果是边收边输出的话,那就无需数组了。
这里我建议采用边收边输出的方法,我留道题给同学们思考,如果采用数组的方式,会有什么问题呢?欢迎留言讨论。
好了,5个关键点对应的C语言知识点都讲到了,下面我们试着用这些C语言知识点写一段C程序的伪代码吧。
四、C程序伪代码
现在我们把上面分析到的结果用C程序伪代码写出来。伪代码就是你自己随便写,只要能帮助你自己理解就行。一个C程序伪代码如下:
{!-- PGC_COLUMN --}
五、最后生成一个完整的C程序
完成伪代码之后,我们就要对伪代码做“艺术加工”,慢慢完善它,使得它成为一个可以被编译和运行的C程序。下面我们来把伪代码变成真正的C程序代码吧。
1. 声明一个字符变量val。这个字符变量用来存储输入的每一个字符。
这句伪代码转换成正式的C程序代码不难吧,如下:
char val = ‘\0’;
这里我再次强调啊,声明一个变量的时候最好是给它一个初始值哦。
2.声明一个整型变量count,来存储字符的个数
这句伪代码转换成正式的C程序代码也不难吧,如下:
unsigned int count = 0;
由于count是专门存放字符个数的,所以它肯定是个正数,而unsigned int就表示正数的整型的意思。
3. while循环里
这段循环的C程序代码是本程序的关键部分,转换为正式的C程序代码如下:
每次使用getchar读取到一个字符后就给变量val。由于同学们输入完字符之后肯定会按下一个回车键,也就是产生了一个换行符\n,因此C程序判断变量val是换行符的话就认为输入结束了。
循环里面变量count就会自己不断地加1,同时输出读取到的字符。getchar也在不断地读取输入的字符。
5.printf函数输出字符的个数
输出字符个数很简单,如下:
printf("\n输入的字符个数为: %u", count);
这里由于count是正数,因此使用%u来输出count的值而不是%d。
C程序运行结果如下:
同学们以后在做上机题时,需要按照本文介绍的方法:题目分解、想起对应的知识点、写出伪代码、写出正式的C程序。

你的程序一共有三个scanf语句。
第一个scanf后面增加语句:
getchar();
第二三个scanf合并为下面的两句:
scanf("%c%d",&a,&b);
getchar();
这样可能就好了。

将第二个scanf改为scanf("
%c",&a);



统计输入的字符个数
同学们在学习C语言课程中,经常会遇到一道题,就是要求你写一个C程序,这个C程序能够读取你从键盘上输入的字符,并且统计其中的字符个数,最后输出总的字符个数并且把这些输入的字符再输出来。

一、统计输入的字符个数
同学们在学习C语言课程中,经常会遇到一道题,就是要求你写一个C程序,这个C程序能够读取你从键盘上输入的字符,并且统计其中的字符个数,最后输出总的字符个数并且把这些输入的字符再输出来。


正阳县19518637219: 菜鸟求助:一道很简单的C编程题 -
藩艺阿乐: 这样是可以的,形式是输入一个数跟着输出绝对值 EOF指的是end of file.是一个特定的标记 #include <stdio.h> main() { float a; while(scanf("%f",&a)!=EOF) //这个语句的意思就是用a来接收输入的数 //并以Ctrl+z结束整个程序 { if (a<0) a=-a; ...

正阳县19518637219: c语言中的 一道题··求助··谢谢 -
藩艺阿乐: 第一种:main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<i;j++) printf(" "); for (j=0;j<4;j++) printf("*"); printf("\n"); } } 第二种:main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<4-i;j++) printf(" "); for (j=0;j<=i;j++) printf("*"); printf("\n"); } } 第三种:main...

正阳县19518637219: 求助:一道C语言程序的题,急!初学还不怎么会,谢谢,多给分 -
藩艺阿乐: main(){ int a[10],b[10],c[10]; int i; int *p; printf("please input a[10]:\n"); p=a; for(i=0;i<10;i++) scanf("%d...

正阳县19518637219: 求助高手 一道C语言题.
藩艺阿乐: #include <stdio.h> void Calc(int x, int y) { int a = x; int b = y; while(a!=b) { if(a > b) a-=b; else b-=a; } printf("%d与%d最大公约数为:%d\n", x, y, a); printf("%d与%d最小公倍数为:%d\n", x, y, x*y/a); } int main() { int x, y; printf("输入两个数:"); scanf("%d%d", &x, &y); Calc(x, y); return 0; }

正阳县19518637219: 求助C语言的一道题,哪个高手帮帮我啊!急 -
藩艺阿乐: #include<iostream>using namespace std;int main(){ int n,p;//n为个数,p为要找的数cin>>n>>p; int a[n-1];//数组bool b=0;//判断是否“数组中没有这个数”for(int i=0;i<n;i++)//输入这个数组cin>>a[i]; for(int i=0;i<n;i++)//判断{ if(a[i]==p) b=...

正阳县19518637219: 求助C语言的一道编程题,高手们帮忙解答一下 -
藩艺阿乐: 有两种改抄法:第一种是将double 改为float 数据类型的袭声明并将printf() 与scanf()的函数里的%d 改为%f 第二种改法是依然保留double 数据zhidao类型声明scanf()的函数里的%d 改为 %lfprintf()的函数里的%d 改为 %f或%lf总的来说就是输入与打印的数据说明写错了

正阳县19518637219: 一道想法很简单C语言题目,求助. -
藩艺阿乐: 这个不行了,因为程序执行一般都是将数据存储在内存当中的,一旦程序结束内存就会被重新释放,那些数据也就丢失了,唯一的办法就是将c的值存储在本地的文件当中,第二次执行程序的时候再把c的值从文档中读取出来就行了.现在给你改...

正阳县19518637219: c语言的一个简单问题 求助~~~~~~~~~~~~~~~求助~~~~~~~~~~ -
藩艺阿乐: #include "stdio.h"void main(){int sum=1;int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};for(int i=0;i<4;i++)for(int j=0;j<4;j++)sum*=a[i][j];printf("%d",sum);}

正阳县19518637219: 求助:C语言编程题 -
藩艺阿乐: 第一道题:#include<stdio.h> void main() { int a,b[5],i; printf("请输入一个五位整数:\n"); scanf("%d",&a); /*将输入的五位数赋给整型变量a*/ for(i=0;i<5;i++) { b[i]=a%10; a/=10; } /* 这个for循环的作用是将a从个位开始的每个数依次赋给整...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网