- kikcik
-
给出的问题不严密:
只有大于和小于,没有等于的情况,比如说平均分在50到70之间,然后第2个和第3个数之和正好等到于140分时,一楼上程序便没有输出,我想是题目出得不太严密吧,不可能出题者是故意把这些情况漏掉吧!所以呢,经过笔者的修改呢,我觉得以下程序能包括出题者的全部意思:
如果题目非我所想,那你也可以自己根据情况改一下那几个>或者=号,你自己看看吧!
#include <stdio.h>
main()
{
float a[3],i,average;
for(i=0;i<3;i++)
scanf("%f",&a[i]);
average=(a[0]+a[1]+a[2])/3.0;
if(average>=90)
printf("Grade=A");
if(average>=70&&average<90&&a[2]>=90)
printf("Grade=A");
if(average>=70&&average<90&&a[2]<90)
printf("Grade=B");
if(average>=50&&average<70&&a[1]+a[2]>=140)/*这个地方与以一楼上程序不同,题目要求的是第2和3个数之和要大于140,一楼上的是第1和2个之和大于140,与题意不合(因为数组是从0开始计数的)*/
printf("Grade=C");
if(average>=50&&average<70&&a[1]+a[2]<140)
printf("Grade=D");
if(average<50)
printf("Grade=F");
}
- 七秒真人
-
#include <stdio.h>
void main(){
int a,b,c;float avg;
scanf("a=%d,b=%d,c=%d",&a,&b,&c)
avg=a+b+c/3;
if(avg>90)printf("%s","Grade=A");
else if(avg>70&&avg<90){
if(c>90)printf("%s","Grade=A");
else{printf("%s","Grade=B");}
}
else if(avg>50&&avg<70){
if(b+c>140)printf("%s","Grade=C");
else{printf("%s","Grade=D");}
}
else{
printf("%s","Grade=F") }
}
不知道有米错误,你拿去试试把
- 二分好久没看
-
#include <stdio.h>
main()
{
float a[3],i,average;
for(i=0;i<3;i++)
scanf("%f",&a[i]);
average=(a[0]+a[1]+a[2])/3.0;
if(average>90)
printf("Grade=A");
if(average>70&&average<90&&a[2]>90)
printf("Grade=A");
if(average>70&&average<90&&a[2]<90)
printf("Grade=B");
if(average>50&&average<70&&a[0]+a[1]>140)
printf("Grade=C");
if(average>50&&average<70&&a[0]+a[1]<140)
printf("Grade=D");
if(average<50)
printf("Grade=F");
getch();
}
相关推荐
C语言中分数如何表示
分数恐怕要转化为小数了,用float型数表示。另外,也可以用两个数表示分数,即一个分子,一个分母。2023-11-30 19:20:436
请问在C语言中分数怎么表示啊,即10/9
首先 10/9 是表达式,但是在C语言中没有表示分数的形式,也就是当你要以这种形式给出的时候C已经帮你运算出结果了。所以你可以选择两种表达方式。1 使用字符串,在使用使用时在转化一下。2 使用小数,就是1.1111...这种,申请一个Double型来储存。。。2023-11-30 19:21:005
C语言的分数在程序中怎么表示?比如2/3?
有两种方法。1.可以用2.0/3或2/3.0;2.可以用强制转换表示成(float)2/3;2023-11-30 19:21:235
c语言中分数怎么表示
c语言中没有分数。 3/5 要写成 0.6 如果直接写分数的话,c 语言会理解为除法,而如果两边都是整数,那是整数除法。 3/5 等于 0 3.0/5 才等于 0.6 扩展资料 下面是c语言中基本数据的分类: char 字符型 int 整型 short int 短整型 long int 长整型 float 单精度浮点型 doubl 双精度浮点型2023-11-30 19:21:391
请问在C语言中分数怎么表示啊,即10/9
C语言没有分数,只有浮点数float或者double 10/9 可以表示为float型或者double型10.0/92023-11-30 19:22:071
c语言中分子和分母用什么表示
c语言中分子和分母用基数和序数表示。在C预言的环境中,分子用基数词,分母用序数词。分子如果是1以上,分母用复数。同时分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。简介:C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。2023-11-30 19:22:131
在c语言和C++中的分数怎么表示,请把程序写出来下,比如表示1+2*2的倒数+3*3的倒数
分数就是用/来表示的。你看看笑面的程序熟悉下题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。 2.程序源代码: #include "stdio.h" main() { int n,t,number=20; float a=2,b=1,s=0; for(n=1;n<=number;n++) { s=s+a/b; t=a;a=a+b;b=t;/*这部分是程序的关键*/ } printf("sum is %9.6f ",s); getch(); }2023-11-30 19:22:304
C语言编程中怎样使数字输出格式为分数
1、C语言没有分数,只有实型的float或者double,输出时是printf("%f",a)。2、C语言中有float单精度和double双精度两类可以有小数部分的实型变量。一般,单精度型占4个字节(32位)内存空间,只能提供七位有效数字;双精度型占8个字节(64位)内存空间,可提供16位有效数字。2023-11-30 19:22:402
请问在C语言中分数怎么表示啊,即10/9
如果想保存成数值,只能保存小数值,10/9只能保存它对应的小数值,也就是1.11111,这个小数值实际上是无限循环的,无限小数保存不了,所以存在精度问题,即保存到小数点后几位,一般用float或者double型变量保存小数,double精度更高一些。如果必须要保存精确地10/9分数,可以使用字符串类型,保存“10/9”,这样存下来的就不是一个数,只是普通的字符串,使用时可以做相应的转换输出。2023-11-30 19:22:583
c语言程序中怎么打出分数
分数问题是一个比较有意思的。c语言并没有提供分数这个结构,所以你可以用结构体自己实现一个typedef struct{ int a;//分子 int b;//分母}fraction;与此同时,因为c语言不像c++那样可以在类/结构体中定义函数,所以你要单独定义处理分数的函数比如化简、判断是否合法(分母不为0)、加减乘除等等2023-11-30 19:23:073
在C语言中分数怎么表示啊,即10/9
没有分数,只有整数和浮点数(浮点数就是小数)。如果你只是想表示一个10/9,那就用char类型的,用字符串表示就可以了。打印出来就是10/9了2023-11-30 19:23:161
c语言,怎么实现对分数的加减乘除等等的运算
定义一个数据结构,可以是一个长度2的数组,也可以是一个struct,下面以数组为例定义两个长度2的数组 a[2],b[2],分子分别保存在a[0],b[0],分母分别保存在a[1],b[1](负数的话,符号同分子一起)乘:分母,分子分别相乘;除:乘以倒数(调换乘数的分子分母);然后约分(涉及最大公约数算法,可百度)加减:分母需要相同,涉及最小公倍数算法(可百度)以上思路和人工计算的方式相同,只是用c语言“翻译”一下另外提供一个思路,直接计算结果,然后从无限循环小数转化成分数形式2023-11-30 19:23:263
在C语言中分数怎么表示啊,即10/9
floatp;........p*=powf(1+n,10);....____________powf()是用于求浮点数乘方的,逗号前是底数,后面是次数。具体参阅pow()函数实例:p=2,n=3,次数=2,源代码如下#include#includeintmain(intargc,char*argv[]){intn=3;floatp=2;p*=powf(1+n,2);printf(" %f ",p);getch();return0;}输出:32.0000002023-11-30 19:23:351
c语言要怎么做?输入一个分数,输出其最简分式。但是要用scanf("%d%d,&a,&b");实现输入,再用while实现。
最简分式C语言2023-11-30 19:23:441
c语言问题 c中怎么表达分数,可以这样写吗,2/5? 或m=2 n=5 m/n
可以的加上括号就行,,,能用来计算但是不能作为分数用来输出,输出这样写的话会被计算出来2023-11-30 19:23:594
c语言中分数用什么格式符
格式符即在printf()中的%xd/i以大符号的十进制形式输出整数(整数不输出符号)o以八进制无符号形式输出整数(不输出前导符)x,x以十六进制无符号形式输出整数(大小写)u用于输出unsigned类型数据f实数格式输出,6位小数e以指数形式输出实数,输出13位,其中:1位整数,1位小数点,6位小数,5位指数(含字符e和指数的符号)g根据数值大小,自动选择f或e格式输出。c以字符形式输出,只输出一个字符s输出字符串另:printf("%#x ",20);输出0x14(如果%#x中没有#,则输出14没有0x表示)2023-11-30 19:24:171
C语言输入一个班级的成绩,求总分,平均分,最低分和最高分,输入-1表示结束
2023-11-30 19:24:262
请教,C语言中怎么输出数的分数形式
没有默认的分数形式只能根据值自己计算出分子和分母然后 输出两个整型 比如printf("%d/%d", a,b);从浮点数转为分数是不精确的 要计算分数, 最好的方法 就是最初就按照分数计算和存储。2023-11-30 19:25:211
c 语言中 score是什么意思
在C语言中没有score这个保留字,换句话它在C语言中只能算是一个标识符,没有特殊的语法功能。一般来说C语言的标识符,有两个基本的使用原则。1、要符合语法要求,C语言中规定,标识符有数字、字母、下划线(_)组成,而且第1符号只能为字母或者下划线。2、标识符的命名,尽量便于阅读。如问题中的score用于表示分数,就容易理解。2023-11-30 19:25:302
C语言中分数和小数转换
c语言本身并没有这种工能,不过可以通过函数来实现这种功能,大致思想就是想办法求出这个函数的分子和分母,然后在输出中做如下调整:cout<<s(就是分子部分)<<"/"<<z(分母部分);具体函数就要自己构思了,相信你一定能够做到的!2023-11-30 19:25:373
C语言编程:分数的形式为:a/b,这里a和b是整数(b不能为0),分别是分子,分母.请根
(1)struct Fraction{int a;int b;}(2)void display(struct Fraction x){ assert(x.b != 0); printf("%d/%d ",x.a,x.b)}struct Fraction multiply(structFraction x, struct Fraction y){ struct Fraction result; assert(x.b != 0); assert(y.b != 0); result.a = x.a * y.a; result.b = x.b * y.b;}(3)void main(){ struct Fraction x = {3,4}; struct Fraction y = {5,6}; display(x); display(y); display(multiply(x,y));}2023-11-30 19:25:461
百分号在C语言中是怎样用的?
求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。例如:5%2=1,1%2=1拓展资料求余是一种数学计算方法,指一个数除以另一个数,不够除的部分就是余数,就是求余的结果。整除就是一个数除以另一个数,刚刚好的倍数,这里没有四舍五入,不够一倍的都将舍去。例如:3/2,余数为1;其计算公式为:3/2 = (2+1)/2 = 2/2+1/2 = 0+1 = 1 ;上述公式中:2除2是可以除尽的,没有余数,所以余数为0;因为1小于2,1除2是不够除的,有余数,且余数是1;两者相加,综合结果为1。另外,数学中,整除是指:一个数除以另一个数,刚刚好的倍数;不够一倍的都将舍去,并不四舍五入。例如:3/2,整除得1。其计算公式为:3/2 = (2+1)/2 = 2/2+1/2 = 1+0 = 1 ;上述公式中:2除2是可以除尽的,整除结果为1;因为1小于2,1除2是不够除的,不够除的都将舍去,整除结果为0;两者相加,综合结果为1。2023-11-30 19:25:574
C语言矩阵怎样表示分数
C语言没有分数类型。想要表示分数的话需要自己构造数据结构。2023-11-30 19:27:013
c语言中如何输入分数 scanf("%d/%d",&a,&b)可以吗
C语言中并没有明确的分数表示,你这么写语法上是没有问题的,只不过你这样属于形式像分数,但是计算机并不知道你想输入的是一个分数,所以你还得将这个分数获得并保存起来,比如float f=a/b*1.0,你可以通过 scanf("%d/%d",&a,&b)这个类分数形式获得分数的值,通过f来进行运算2023-11-30 19:27:081
C语言编程:用两个正整数来精确表示一个正真分数,其中,一个表示分子,另一个表示分母,例如,
#include<stdio.h>#define n 100int gcd(int a, int b)//求公约数{ if(a == 0) { return b; } else { return gcd(b % a, a); }}int main(){ int a[n], b[n]; int i, j, tempa,tempb, g; printf("请输入100组分数: "); for(i = 0; i < n; i++) { scanf("%d%d", &a[i], &b[i]); } for(i = 0; i < n; i++)//约分 { if(a[i] % b[i] == 0) { a[i] = b[i] = a[i] / b[i]; } else { g = gcd(a[i], b[i]); a[i] /= g; b[i] /= g; } } for(i=1;i<n;i++)//插入排序法 { j=i-1; tempa=a[i]; tempb=b[i]; while((tempa*1.0/tempb)<(a[j]*1.0/b[j])&&j>0) { a[j+1]=a[j];//a[i]=a[i-1]; b[j+1]=b[j]; j--; } a[j+1]=tempa; b[j+1]=tempb; } for(i=0;i<n;i++) { if(a[i]==b[i]) printf("%d ",a[i]); else printf("%d/%d ",a[i],b[i]); }}2023-11-30 19:27:171
c语言编程,根据分数划分成绩
理 二、目的与要求 1. 目的: (1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题 2. 要求 基本要求: 1. 要求利用C语言面向过程的编程思想来完成系统的设计; 2. 突出C语言的函数特征,以多个函数实现每一个子功能; 3. 画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握C语言对文件的各种操作。 创新要求: 在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同 三、信息描述 输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求: 1)排序用一个函数实现。 2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。 3)按实验报告电子模板格式填写实验内容。 四、功能描述 1. 学生基本信息及成绩所选科目成绩的录入。 2. 基本信息的查询(分系、班级;分科目)与修改。 3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率); 4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分); 5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息) 五、解决方案 1. 分析程序的功能要求,划分程序功能模块。 2. 画出系统流程图。 3. 代码的编写。定义数据结构和各个功能子函数。 4. 程序的功能调试。 5. 完成系统总结报告以及使用说明书 六、进度安排 此次课程设计时间为两周,分四个阶段完成: 1. 分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。 2. 编码调试阶段:根据设计分析方案编写C代码,然后调试该代码,实现课题要求的功能。 3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。 4. 考核阶段。 #include <stdio.h> #include <stdlib.h> #define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/ { char stu_id[20]; /*学生学号;*/ float score[3]; /*三门课成绩;*/ float total; /*总成绩;*/ float aver; /*平均成绩;*/ }; /*排序用一个函数来实现*/ void SortScore(student *stu,int n) { student stud; for(int i = 0; i < n-1; i++) for(int j = i+1 ; j < n; j++) { if(stu[i].total < stu[j].total) { stud = stu[i]; stu[i] = stu[j]; stu[j] = stud; } } } int main( ) { student stu[STU_NUM]; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/ /*输入这十个学生的相关信息*/ for(int i = 0; i<STU_NUM; i++) { printf("请输入第%d个学生的学号:",i+1); scanf("%s",&stu[i].stu_id); printf("输入第%d个学生的数学成绩:",i+1); scanf("%f",&stu[i].score[0]); printf("输入第%d个学生的英语成绩:",i+1); scanf("%f",&stu[i].score[1]); printf("输入第%d个学生的计算机成绩:",i+1); scanf("%f",&stu[i].score[2]); stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; stu[i].aver = stu[i].total/3; } printf(" "); SortScore(stu,STU_NUM);/*调用排序函数*/ /*输出排序后的各学生的成绩*/ for(i = 0 ; i < STU_NUM; i++) { printf("序号: %d ",i); printf("学号:%s ",stu[i].stu_id); printf("数学:%f ",stu[i].score[0]); printf("英语:%f ",stu[i].score[1]); printf("计算机:%f ",stu[i].score[2]); printf("平均成绩:%f ",stu[i].aver); printf("总分:%f ",stu[i].total); printf(" "); } return 0; } 注:(源程序中主要标识符含义说明) #define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/ { char stu_id[20]; /*学生学号;*/ float score[3]; /*三门课成绩;*/ float total; /*总成绩;*/ float aver; /*平均成绩;*/ } 实验结果: 输入 :(只输入后面的数字,前面的文字是自己产生的)。 请输入第1个学生的学号:001 输入第1个学生的数学成绩:1 输入第1个学生的英语成绩:1 输入第1个学生的计算机成绩:1 请输入第2个学生的学号:002 输入第2个学生的数学成绩:2 输入第2个学生的英语成绩:2 输入第2个学生的计算机成绩:2 请输入第3个学生的学号:003 输入第3个学生的数学成绩:3 输入第3个学生的英语成绩:3 输入第3个学生的计算机成绩:3 请输入第4个学生的学号:004 输入第4个学生的数学成绩:4 输入第4个学生的英语成绩:4 输入第4个学生的计算机成绩:4 请输入第5个学生的学号:005 输入第5个学生的数学成绩:5 输入第5个学生的英语成绩:5 输入第5个学生的计算机成绩:5 请输入第6个学生的学号:006 输入第6个学生的数学成绩:6 输入第6个学生的英语成绩:6 输入第6个学生的计算机成绩:6 请输入第7个学生的学号:007 输入第7个学生的数学成绩:7 输入第7个学生的英语成绩:7 输入第7个学生的计算机成绩:7 请输入第8个学生的学号:008 输入第8个学生的数学成绩:8 输入第8个学生的英语成绩:8 输入第8个学生的计算机成绩:8 请输入第9个学生的学号:009 输入第9个学生的数学成绩:9 输入第9个学生的英语成绩:9 输入第9个学生的计算机成绩:9 请输入第10个学生的学号:010 输入第10个学生的数学成绩:10 输入第10个学生的英语成绩:10 输入第10个学生的计算机成绩:10 输出: 序号: 0 学号:010 数学:10.000000 英语:10.000000 计算机:10.000000 平均成绩:10.000000 总分:30.000000 序号: 1 学号:009 数学:9.000000 英语:9.000000 计算机:9.000000 平均成绩:9.000000 总分:27.000000 序号: 2 学号:008 数学:8.000000 英语:8.000000 计算机:8.000000 平均成绩:8.000000 总分:24.000000 序号: 3 学号:007 数学:7.000000 英语:7.000000 计算机:7.000000 平均成绩:7.000000 总分:21.000000 序号: 4 学号:006 数学:6.000000 英语:6.000000 计算机:6.000000 平均成绩:6.000000 总分:18.000000 序号: 5 学号:005 数学:5.000000 英语:5.000000 计算机:5.000000 平均成绩:5.000000 总分:15.000000 序号: 6 学号:004 数学:4.000000 英语:4.000000 计算机:4.000000 平均成绩:4.000000 总分:12.000000 序号: 7 学号:003 数学:3.000000 英语:3.000000 计算机:3.000000 平均成绩:3.000000 总分:9.000000 序号: 8 学号:002 数学:2.000000 英语:2.000000 计算机:2.000000 平均成绩:2.000000 总分:6.000000 序号: 9 学号:001 数学:1.000000 英语:1.000000 计算机:1.000000 平均成绩:1.000000 总分:3.000000 七、撰写课程设计报告或课程设计总结 课程设计报告要求: 总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。 C语言常见错误 书写标识符时,忽略了大小写字母的区别 main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。 3.将字符常量与字符串常量混淆。 char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a"和‘",而把它赋给一个字符变量是不行的。 4.忽略了“=”与“==”的区别。 在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写 if (a=3) then … 但C语言中,“=”是赋值运算符,“==”是关系运算符。如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。 5.忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2 编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 { z=x+y; t=z/100; printf("%f",t); } 对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。 6.多加分号。 对于一个复合语句,如: { z=x+y; t=z/100; printf("%f",t); }; 复合语句的花括号后不应再加分号,否则将会画蛇添足。 又如: if (a%3==0); I++; 本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。 再如: for (I=0;I<5;I++); {scanf("%d",&x); printf("%d",x);} 本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。 7.输入变量时忘记加地址运算符“&”。 int a,b; scanf("%d%d",a,b); 这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。 8.输入数据的方式与要求不符。①scanf("%d%d",&a,&b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。 ②scanf("%d,%d",&a,&b); C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的: 3,4 此时不用逗号而用空格或其它字符是不对的。 3 4 3:4 又如: scanf("a=%d,b=%d",&a,&b); 输入应如以下形式: a=3,b=4 9.输入字符的格式与要求不一致。 在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。 scanf("%c%c%c",&c1,&c2,&c3); 如输入a b c 字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。 10.输入输出的数据类型与所用格式说明符不一致。 例如,a已定义为整型,b定义为实型 a=3;b=4.5; printf("%f%d ",a,b); 编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。 11.输入数据时,企图规定精度。 scanf("%7.2f",&a); 这样做是不合法的,输入数据时不能规定精度。 12.switch语句中漏写break语句。 例如:根据考试成绩的等级打印出百分制数段。 switch(grade) { case "A":printf("85~100 "); case "B":printf("70~84 "); case "C":printf("60~69 "); case "D":printf("<60 "); default:printf("error "); 由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如 case "A":printf("85~100 ");break; 13.忽视了while和do-while语句在细节上的区别。 (1)main() {int a=0,I; scanf("%d",&I); while(I<=10) {a=a+I; I++; } printf("%d",a); } (2)main() {int a=0,I; scanf("%d",&I); do {a=a+I; I++; }while(I<=10); printf("%d",a); } 可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I>10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。 14.定义数组时误用变量。 int n; scanf("%d",&n); int a[n]; 数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。 15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。 main() ; printf("%d",a[10]); } C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。 16.初始化数组时,未使用静态存储。 int a[3]=; 这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为: static int a[3]=; 17.在不应加地址运算符&的位置加了地址运算符。 scanf("%s",&str); C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为: scanf("%s",str); 18.同时定义了形参和函数中的局部变量。 int max(x,y) int x,y,z; {z=x>y?x:y; return(z); } 形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为: int max(x,y) int x,y; {int z; z=x>y?x:y; return(z); } C语言心得体会 通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。 这次实训是老师给了范例程序,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。 通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。 计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。 八、参考资料 :《C语言程序设计教程》另外,团IDC网上有许多产品团购,便宜有口碑2023-11-30 19:27:276
求:C语言程序,比较两个分数的大小,两个分数以a/b方式表示。
函数实现://第一个分数az/am,第二个bz/bm//输入第一个分数的分母到am,分子到az,第二个分母到bm,分子到bz//返回值1为az/am > bz/bm//返回值0为az/am = bz/bm//返回值-1为az/am < bz/bmint fraccmp(int am, int az, int bm, int bz) { if(az * bm > bz * am) return 1; else if(az * bm == bz * am) return 0; else return -1;}main()函数中调用方式:fraccmp(第一个分数分母,第一个分子,第二个分母,第二个分子);返回值不用说了吧在前面注释原理: 比较a/b与c/d,若a/b > c/d 则ad > bc2023-11-30 19:27:453
c语言里要输入输出分数,该怎么定义变量?
c语言里要输入输出分数,可以定义分子和分母均为整型,或长整型量。然后按照分数的定义对其进行相关的运算,最后也是分别输出分子和分母。例如,要计算一个分数乘以一个整数:int a,b,k,c=0;printf("请输入一个分数:");scanf("%d/%d",&a,&b);printf("请输入要乘以几:");scanf("%d",&k);printf("%a/%b的%d倍是",a,b,k);a*=k;if(a>=b){ c=a/b; a%=b;}if(c>0)printf("%d ",c);if(a>0)printf("%d/%b",a,b);printf(" ");2023-11-30 19:28:102
C语言百分之2怎么表示?
C语言中,百分之2可以表示为 0.02。在C语言中使用小数表示百分数时,需要将百分数除以100,即把百分数转换成小数。例如,百分之50可以表示为 0.5,百分之125可以表示为 1.25。因此,百分之2表示为 0.02。2023-11-30 19:28:172
C语言的分数计算和输出格式问题
C语言里面没有分数,1/3会被当作是1除以3来计算,结果是一个小数。要输出1/3,必须是像字符串一样的输出:printf("1/3");也可以这样:int a = 1, b = 3; printf("%d/%d", a, b);N个分数相加的结果还是会被当作小数处理,必须你自己设计算法让它成为a/b的形式2023-11-30 19:28:353
C语言中的分数四则运算
#include<stdio.h> #include<stdlib.h> main() { int a,b,c,d,i,x,y; char op; scanf("%d/%d%c%d/%d",&b,&a,&op,&d,&c); if(a==0||c==0) exit(0); if(op=="+"){y=b*c+d*a;x=a*c;} if(op=="-"){y=b*c-d*a,x=a*c;} if(op=="*"){y=b*d;x=a*c;} if(op=="/"){y=b*c;x=a*d;} if(y==0&&x!=0) { printf("%d/%d%c%d/%d=0 ",b,a,op,d,c); } else if(x==0) exit(0); //你的这里怎么可以再用一个ELSE呢,条件已经变化了。后面跟前面没有联系啊if(x>y) i=y; while(i>1) { if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;} i--; } if(x/i==1) printf("%d/%d%c%d/%d=%d ",b,a,op,d,c,y); else printf("%d/%d%c%d/%d=%d/%d. ",b,a,op,d,c,y,x);//不明白你后面这里为什么会多出两个花括号。//由于百度上不能空行,我也不猜测错误原因。你自己理解下。}//程序运行无误2023-11-30 19:28:433
c语言怎么表示百分数,如图2-1?
整型÷整型=整型,比如 5 / 10 = 0 。实型÷整型=实型,比如 5.0 / 10 = 0.5 。所以应写成 x * 1.0 / y * 100 。#include <stdio.h>int main(){ int x,y; puts("请输入两个整数。"); printf("整数x:"); scanf("%d",&x); printf("整数y:"); scanf("%d",&y); printf("x的值是y的%.0f%%", x * 1.0 / y * 100); return 0;}2023-11-30 19:28:522
C语言 分数计算怎么编 如1+1/2+1/3+1/4+……1/n ?
#include<stdio.h>int main(void){int n;scanf("%d",&n);int i;double sum=0;double sign=1.0;for(i=1;i<=n;i++){sum=sum+sign/i;sign=-sign;}printf("f(%d)=%f ",n,sum);return 0;}扩展资料:include用法:#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。插入头文件的内容#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:1、#include<文件名>2、#include"文件名"如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:#include<math.h>//一些数学函数的原型,以及相关的类型和宏2023-11-30 19:29:114
C语言初学者~分数的加法
#include<stdio.h>int main(void){ int i,m,n,k,a,b,c,d; char e,f,g; scanf("%d%c%d%c%d%c%d",&a,&e,&b,&f,&c,&g,&d); m=b*d; n=a*d+b*c; k=(m>n)?n:m; for(i=k;i>=2;i--) { if(((m%i)==0)&&((n%i)==0)) { m=m/i; n=n/i; } else continue; } if(m==1) printf("%d/%d+%d/%d=%d",a,b,c,d,n); else printf("%d/%d+%d/%d=%d/%d",a,b,c,d,n,m); return 0;}显现了你所说的功能,而且如果输入7/4+1/4可以输出2而不输出2/1。哪里不满意和我说,记得给分哦。呵呵2023-11-30 19:30:042
c语言中,分数怎么输入和输出
这个需要自定义类,c++更容易实现。2023-11-30 19:30:132
c语言编程,输入学号和成绩,90到100为优秀,80到89为良好,70到79为中等,60到69及格,0到59不及格
按这个题的意思 应该在考你使用 switch() case 不过你这样写也可以 但麻烦了许多。 另外 这个程序没有问题 先输入n的个数 然后输入 ID 和分数时 中间要有空格 如:1 99请采纳2023-11-30 19:31:372
怎么用c进行分数加法运算 谢谢各位了!
把你的程序改造了一下,加的功能实现了,但没有约分:#include<stdio.h>#include<stdlib.h>struct Fs{ int n; //numerator int d; //denominator};#define N 10main(){ struct Fs a[N],s; int n,i,m,t; char tag[N];// long s; //这段代码是用于处理输入和初始化的 printf("input n(<=%d):",N); scanf("%d",&n); printf("input %d numbers:",n); for(i=0;i<n;i++){ printf("input numerator and denominator:"); scanf("%d%d",&a[i].n,&a[i].d); } printf("input m(<=%d):",n); scanf("%d",&m); for(i=0; i<n-1; i++) tag[i]=0; tag[n-1]=1; //一个数都不选,这种组合肯定不是答案,所以直接从选一个数开始 printf(" "); while(1){ s.n=0; s.d=1; for(i=0;i<n;i++) if(tag[i]){ //如果二进制数的第i位是1,选中第i个数 s.n=s.n*a[i].d + a[i].n*s.d; s.d=s.d*a[i].d; } if(s.n%m==0){ for(int j=0;j<n;j++) if(tag[j]) printf("%d/%d ",a[j].n,a[j].d); printf(" s=%d/%d ",s.n,s.d); printf(" "); }//这段是模拟将一个N位二进制数加1的过程 tag[n-1]++; i=n-1; while(i>0 && tag[i]==2) { tag[i]=0; tag[i-1]++; i--; } if(i==0 && tag[0]==2) //如果已经将模拟的二进制数遍历到2^n,结束遍历 break; }return 0;}2023-11-30 19:31:523
c语言 可以输出分数吗或者使用分数计算吗
不可以输出分数,但是可以使用分数计算,其实1/2在计算机中的意思就是1“除以”2,输入的时候,可以输出小数,但要将变量定义呈float或者double类型如:float x=1.0;x=x+1/2;printf("%f",x)输出结果为:1.5;2023-11-30 19:32:095
c语言怎么输入分数
scanf函数是输入的功能,没有强大到能帮你连计算都能一步完成。所以我提供两种方法到达类似的效果,一种是先将1/3计算好,再输入赋值到相应的变量中去,另一种是采用初始化,不过由于1/3的值是0.3333,所以在初始化的时候应该这样初始化float c=1.0/3;2023-11-30 19:32:252
计算机二级C语言怎么计分的?
上机、笔试都是按照100分计算,计算机二级C语言的笔试部分只要考到60分视为及格通过。 3.0——优秀,即不小于90分; 2.0——良好,即不小于80分但小于90分; 1.0——及格,即不小于60分但小于80分; 0.0——不及格,即小于60分。 总成绩取笔试和上机成绩中最低的一个,总成绩在及格及其以上者为通过考试。2023-11-30 19:32:342
c语言输入10个整数,定义一个函数求平均分数
在上述代码中,首先定义了一个名为calculateAverage的函数,该函数接受一个整数数组和数组的长度作为参数。函数使用循环将数组中的所有元素相加,然后除以数组长度得到平均值。最后,calculateAverage函数返回计算得到的平均值。在main函数中,我们声明一个长度为10的整数数组numbers,并通过scanf函数从用户处获取输入的整数。然后,我们调用calculateAverage函数,并将得到的平均值打印输出。请注意,这段代码假设用户会输入10个整数,并且没有对输入进行错误检查。在实际应用中,可以根据需要添加输入验证和错误处理的代码。2023-11-30 19:32:411
怎样用c语言写一个将小数转化成最简分数的算法
算法很简单,程序中已经说明。重要的是系统对浮点数是有修正的,导致结果出现问题。如何解决,详见程序。 //#include "stdafx.h" //VS 默认使用#include<stdio.h>#include<stdlib.h>#include<math.h>#pragma warning(disable: 4996)//为了最大限度支持(目前)小数,整数定义成:__int64//支持32位:以下分别为 int(__int32) 1E8#define ZHENGSHU __int64#define XIAOSHUDIANZUOYI 1E15 //double 最多只能确精确到15位有效数字#define XIUZHENG 1E-16 //用于修正浮点数计算误差int _tmain(int argc, _TCHAR* argv[]){ //怎样用c语言写一个将小数转化成最简分数的算法 //开始 double xs = 0.000625; //为了简便,直接指定。也可以让用户输入 //scanf("%lf", &xs); ZHENGSHU fz, fm, zs, k, fh; //数学算法是:如 0.123456 = 123456/1000000 ,然后约分 //实现第一步转换 if (xs < 0) { fh = -1; xs = -xs; } else { fh = 1; } zs = (ZHENGSHU)xs; //支持假分数 //计算整数部分的有效数位数 k = 1; while (zs / k > 0) k *= 10; xs -= (double)zs; fm = XIAOSHUDIANZUOYI / k; //分母 xs = (double)((ZHENGSHU)((xs + XIUZHENG * k) * fm)) / fm; //修正浮点数计算误差 xs += XIUZHENG; //修正浮点数计算误差 fz = (ZHENGSHU)(xs * fm); //分子 for (;;) //这样循环,是因为 C/C++ 中,for 循环效率最高 { //约去多乘的 10 的倍数 if ((fz % 10 == 0) && (fm % 10 == 0)) { fz /= 10; fm /= 10; } else { break; } } //实现第二步:约分。以下看起来有点麻烦,目的是为了减少算法的时间复杂的 while ((fz % 2 == 0) && (fm % 2 == 0)) { //将公约数 2 约尽 fz /= 2; fm /= 2; } k = 3; for (;;) { while ((fz % k == 0) && (fm % k == 0)) { fz /= k; fm /= k; } k += 2; if (k > (ZHENGSHU)sqrt(fz)) break; } //将整数部分加上,形成假分数。如果原数为不为0整数,则化成分母为 1 的假分数 //如果原数为 0,则化成分子为 0,分母为 1。 if (fz == 0) { fz = fh * zs; fm = 1; } else { fz = fh * (fz + fm * zs); } //结束 //显示一下结果 printf("%lf = %lld/%lld ", fh * (zs + xs), fz, fm); //printf("%lf = %ld/%ld ", fh * (zs + xs), fz, fm); //32位 system("pause"); //防止窗口一闪而退 return 0;}2023-11-30 19:32:563
c语言 埃及分数
#include <stdio.h> void main() { int a,b,c,d; printf("please input a&b: "); scanf("%d%d",&a,&b); c=b/a+1; printf("%d/%d=1/%d",a,b,c); while(a!=1) { a=a*c-b; b=b*c; c=b/a+1; if(a!=3) printf("+1/%d",c); else {d=b/2; printf("+1/%d+1/%d",d,b); getch(); } } } 搞定了,你的(a!=3)条件放错了,呵呵,好好看看,是不? 判断完了以后才得到的a=3;所以那个C还是要打印的。2023-11-30 19:33:034
c语言中如何实现一个数的1/2
c语言中如何实现一个数的1/2方法代码如下:#includeintmain(){inti;ints=2;printf("r="i/s");return0;}一个数的1/2,即把一个数除以2,分成两份,取其中一份的值现代的称为bhinnarasi的分数似乎起源于印度在Aryabhatta(c。ad500),[引用需要]Brahmagupta(c。628)和Bhaskara(c。1150)的工作。他们的作品通过将分子(Sanskrit:amsa)放在分母(cheda)上,但没有它们之间的条纹,形成分数。在梵文文献中,分数总是表示为一个整数的加和减。整数被写在一行上,其分数在两行的下一行写成。如果分数用小圆_0was或交叉_+was标记,则从整数中减去;如果没有这样的标志出现,就被理解为被添加。2023-11-30 19:33:231
求一份C语言代码,分数的四则运算
分数实质就是小数,但是如果化成小数去结算可能会失去精度。所以我们采用两个整数去表示分子和分母,假设分子用a表示,分母用b表示:a1/b1 + a2/b2 的实现为:(a1*b2+a2*b1)/(b1*b2)然后去化简,化简就是分子分母同时除于他们的最大公约数。求最大公约数方法为:假设 求 n和m的最大公1、取绝对值n1=abs(n);m1=abs(m)2、保证n的绝对值大于m的绝对值,如果n的绝对值小于m的绝对值,则n和m交换(交换代码省略)3、int temp=0;while(temp=(n1%m1)){n1=m1; m1=temp;}最后m1就是n和m的最大公约数2023-11-30 19:33:331
c语言编程
#include<stdio.h>void main(){ double sum; int fz,fm,i,k; sum=0; fz=1; fm=2; for ( i=0;i<10;i++ ) { sum+=(double)fz/fm; k=fz; fz=fm; fm+=k; } printf("%llf ",sum);}当前项:分子是前项分母,分母是前项分子分母之和。2023-11-30 19:33:422
c语言学生成绩的等级
#include<stdio.h>int main(){ int s=0; printf("请输入学生的成绩:"); scanf("%d",&s); if (s < 0 || s>100) { printf("error "); } else if (s<60) { printf("fail "); } else if (s < 70) { printf("pass "); } else if (s < 80) { printf("medium "); } else if (s < 90) { printf("good "); } else { printf("excellent "); } return 0;} 楼主你要加油了2023-11-30 19:33:523
C语言怎样编程用键盘输入学生的分数,并求平均分和不及格人数?
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){//num代表总人数,score用于记录当前输入的分数,sum记录总分,//average记录平均分,failed记录不及格人数,所有分数都定为“整数”。int num=0, score=0,sum=0,average=0,failed=0;while(scanf("%d", &score) != EOF) { if (score < 0) { break; } sum += score; num ++; if (score < 60) { failed++; }}average = sum / num;printf("num: %d, sum: %d, average: %d, failed: %d ", num, sum, average, failed);return 0;}2023-11-30 19:34:011
C语言读入学生分数的函数问题
问题中的代码有这么两个需要改进的地方:1. main函数中score的定义,不能写成float score[][5]={0};,因为这样的写法二维数组score将只有1行5列,所以没法存储多个学生的4门课成绩信息,而且还需要写成 float score[A+1][N+1]; ,因为问题中的代码里面下标没有从0开始,这样就行列都需要多留一个空间了。2. Readscore函数中,scanf里面应该使用%f,而不是%d,因为成绩数据是浮点数。这样就可以正确的读入成绩数据了2023-11-30 19:34:131
c型钢每米重量计算公式
C型钢计重方式有两种,过磅和理论计算。过磅计算大家都知道,将打包好的C型钢用航吊放到专用磅上面,看显示数字即可。而理论计算就没有这么简单,现将搜集到的计算方式整理供大家参考: 1.把C型钢展开面的尺寸加起来乘以厚度然后乘以密度(7.85) 例如160*60*20*2.3C型钢 160+120+40*2.3*0.0078每米的理论重量 2.直接用带钢的宽度进行计算;计算公式是 长*宽*高*0.785(钢材密度) 例:宽度12公分,高度4公分,翼边为0.5公分,板厚为2毫米的C型钢带宽为194mm,1件1米长的型钢重量是 19.4*100*0.02*0.785=30.458KG。 4.C型钢重量=展开面的断面尺寸相加*厚度*100*0.00785=KG/M即每米的理论重量 注:C型钢展开面的尺寸和厚度均为厘米 5.C型钢重量按断面展开面积*厚度计算/1000*7.85*壁厚=0000kg/m。如C160*70*20*3重量=(160+70*2+20*2-4*3)/1000*7.85*3=0.00kg/m 每米计算公式 C型钢重量=展开面的断面尺寸相加*厚度*100*0.00785=KG/M即每米的理论重量注:C型钢展开面的尺寸和厚度均为厘米 举例C100*50*20*2每米重量=(100+50*2+20*2)*2*7.85/1000=3.768kg/m。2023-11-30 19:35:104