编程 给出一个不多于6位的正整数,求它是几位数,并分别打印出各位上的数字

快速,是free pascal的
这是做题 。。。

第1个回答  2010-02-21
一、系统菜单的主要功能
(1)输入若干条记录
(2)显示所有记录
(3)按学号排序
(4)插入一条记录
(5)按姓名查找,删除一条记录
(6)查找并显示一条记录
(7)输出统计信息 (新增)
(8)从正文中添加数据到结构体数组中
(9)将所有数据写入文件中
(0)退出程序
二、题目分析
该题主要考察学生对结构体,指针,文件的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
菜单中的每一个选项都对应一个子程序,子程序的算法几乎囊获了所有C语言学过的技巧,下面就各个子程序中的功能进行说明:
功能1和4的算法相似,输入一条记录到结构体中去,其中有一部很关键,就是通过gets将所有的多余的字符,回车读去,否则就会出错。
功能2是显示所有的记录,通过循环输出,格式也比较重要。
功能3为按学号排序,因为学号定义成了字符数组的形式,因此在运用冒泡法进行排序的时候,要用到strcmp,strcpy等函数。
功能5为按姓名删除记录,先输入姓名,再一一比较,如果没有则返回失败信息,如果找到就将此记录都向前移一位,返回n-1。
功能6的算法在5中就已经体现了,输入姓名,一一比较。
功能7为新增的功能,因为考虑到原来给出的函数中竟然没有对学生成绩的统计功能,因此新增此功能,可以得出所有的记录个数,最高、最低、平均分,并输出相关的学生信息等。
功能8和9是对文件的操作,提前准备好数据。

总体设计
一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。

3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。

4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:可用一个函数exit()

学生成绩管理系统

请选择相应的数字执行相应的功能:
1:是否输入其他数据
2:查看数据
3:插入数据
4:查找数据
5:更新数据
6:保留数据
7:显示或打印数据
8:语文成绩状况
9:数学成绩状况
10:英语成绩状况
11:计算机成绩状况
12:?
13:退出系统

程序中出现的问题及解决方法

问题一、学生初始信息模块:
其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。

解决办法及步骤:
1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错
3、输出用于循环检查语句中的学生信息,发现乱码
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。

问题二、查询模块:
可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。

2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。

问题三、插入模块:
可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。

解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。

2、检查当我们在输入插入信息时,看是否我们输入的插入信息有

C语言课程设计报告
一、实践的目的和要求
加深对《C语言》课程所学知识的理解,进一步巩固C语言讲法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力
二、内容
在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、、绘图函数,以及文件的读写操作等
三、实践任务
1.学生成绩管理系统
建立一个5个学生的信息登记表,每个学生和信息包括:学号,姓名,和3门课程的成绩(MATH,C,ENGLISH)。程序运行时显示一个简单的菜单 例如:
(1):信息输入(INPUT)
(2):显示信息(DISPLAY)
(3):总分统计(COUNT)
(4):总分排序(SORT)
(5):查询(QUERY)
其中:
(1):对5个学生的信息进行输入;
(2):显示当前学生记录的信息,若无记录,则给出提示信息;
(3):对每个学生的3门课程统计总分;
(4):对5个学生的总分按升序序排序并显示出来;
(5):可以按“学号”、“姓名”查询该生的有关信息。
总体设计:

总结感想
开发一个编译器是一个比较漫长的过程。需要我对每一个模块都深思熟虑,每一个算法都充分理解,每一个数据结构都人身设计。在整个完成课程设计的过程中,我们主要收获了以下的几点经验。
1 要学会具体问题具体分析
在着手开始编写代码的时候,我已经将教材还有龙书看过一遍了,但是在实际动手的时候,才发现并不是像书上说的那么清楚明白,C语言的特性与书上举例用的语言特性有许多不同,这时就不能生搬硬套书上的算法,要结合C语言的特点,采用书上的思想,这样才能把问题解决。
2 设计数据结构的重要性
在我编写代码的过程中,最常出现的现象就是反复修改数据结构,甚至在进行优化的时候还回过头去修改中间代码的数据结构。这就导致了我编写代码效率的降低,还有由于数据结构的反复修改,使得整个工程维护起来极其困难。这就说明数据结构的设计在整个设计阶段是十分重要的,没有一个设计良好的数据结构,代码编写阶段就不会顺利的进行。
3 交流和沟通
我们在开发初期遇到的很多问题都是通过与同学交流和沟通解决的。同学间无私、耐心的讲解不仅让整个课程设计进展顺利,也让我们每一个人都学到了很多。
总的来说,这次编译课程设计对我来说真的是受益匪浅,通过这次实践,让我对书本上的知识有了深刻的理解,同时增强了自己的动手能力,更重要的是我学会了一系列处理问题的方法,有穷状态机,语法制导等技术都有非常广的应用范围,还有通过代码优化的学习还让我知道如何让我编写的代码运行效率更高,对我今后的实践工作奠定了基础。编译是一门将程序设计语言、数据结构、算法、计算机体系结构、软件工程等计算机知识紧密结合在一起的学科,它将对我今后的学习和工作产生巨大的帮助资料参考百度强不要跟我客气采纳我的答案哦
第2个回答  2010-02-26
var
s:string;
i,k,x:longint;
begin
readln(s);
k:=ord(s[0]); //算出几位数
writeln(k); //输出位数
val(s,x); //把字符串变成数字
writeln(x); //输出整个数
end.
第3个回答  2010-02-21
通过/和%运算符确定各位上的数字

如:598
598%1000 = 598 确定3位
598%100 = 98
598%10 = 8

(598-98)/100 = 5 百
(98-8)/10 = 9 十
(8-0)/1 = 8 个
第4个回答  2010-02-21
好简单的题
第5个回答  2010-03-06
main()
{
long int l,a,b;
int i,j,k;
scanf("%ld",&l);
while(l!=0){
if(l!=9999 && l!=999 && l!=99 && l!=9){a=l+1;}
if(a/10000!=0){printf("It has 5 digits");break;}
if(a/1000!=0){printf("It has 4 digits");break;}
if(a/100!=0){printf("It has 3 digits");break;}
if(a/10!=0){printf("It has 2 digits");break;} l=1;
if(l==1){printf("It has 1 digits");break;}
l=0;
}
if(l==0)printf("I guess it is 0 or 6 digits");
getch();本回答被网友采纳

编程 给出一个不多于6位的正整数,求它是几位数,并分别打印出各位上的...
编程 给出一个不多于6位的正整数,求它是几位数,并分别打印出各位上的数字一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)

编程实现:从键盘输入一个不多于6位的正整数,要求: (1)求出它是几位数...
include<iostream>\/\/如果是c,把输入输出改下就可以了 using namespace std;int revers(int n){ int r=0,i=1;int m=n;while(m\/=10){ i*=10;} for(;i;i\/=10,n\/=10){ r+=i*(n%10);} return r;} int nbit(int n){ int b=1;while(n\/=10){ b++;} return b;} void...

C语言编程 给出一个不多于5位的正整数,要求: 求出他是几位数 分别输出...
n\/=10

...给一个不多于5位的正整数,要求:求出它是几位数,分别输出每个数...
int Digit(int n){ return n > 0 ? 1 + Digit(n\/10) : 0;} void rprint(int n)C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能...

给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位...
printf("每一位数字分别是:%d,%d,%d,%d\\n",b,c,d,e);printf("逆序输出各位数字:%d%d%d\\n",e,d,c,b);} if(a==0&&b==0&&c!=0){ m=3;\/\/3位正整数 printf("%u是%d位数\\n",i,m);printf("每一位数字分别是:%d,%d,%d\\n",c,d,e);printf("逆序输出各位数字:%d%d%d\\...

给一个不多于5位的正整数,要求编程实现(1)求它是几位数?(2)逆序输出各...
vz=pi*r*r*h; \/\/计算圆柱体积vz printf("圆周长为: l=%6.2f\\n",l); printf("圆面积为: s=%6.2f\\n",s); printf("圆球表面积为: sq=%6.2f\\n",sq); printf("圆球体积为: v=%6.2f\\n"

给定一个不多于5位的正整数,求它是几位数,并分别打印出每一位数字。
include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char a[99]; gets(a); int i=strlen(a); char *p=a; printf("%d位数\\n",i); while(*p) { printf("%c",*p); *p++; } return 0;} ...

...要求:一、求它是 几位数,二、逆序打印出各位数字。
\/\/改正后如下:include"stdio.h"main( ){ \/***FOUND***\/ long a,b,c,d,e,x; \/\/行末的逗号改分号。scanf("%ld",&x);a=x\/10000;\/***FOUND***\/ b=x%10000\/1000; \/\/X\/10000改为x%10000 c=x%1000\/100;d=x%100\/10;e=x%10;\/***FOUND***\/ if (a!=0) ...

...正整数要求:求出它是几位数;分别打印出每一位数字;按逆序输出各位数 ...
int main(void){ long int x;int y,i=1;printf("请输入一个不超过100000的整数:"); \/\/ <---请把,x去掉 scanf("%ld",&x);if (x>99999||x<1) printf("你所输入的数据超出计算范围\\n");else { while (x!=0) \/\/ <---请把 do 去掉 { y=x%10;printf("%d\\t",y);x=x\/...

...求出它是几位数 、分别输出每一位数字 、按逆序输出各位数字_百度...
include<stdio.h> void main(){ int num;printf("请输入一个不多于5位的数:");scanf("%d",&num);printf("逆序输出为:");while(num>0){ printf("%d",num%10);num\/=10;} printf("\\n");}

相似回答