一道c语言面试问题问题

C语言问题第一部分编写一段程序,程序名称命名为1.c,完成如下任务:(1)从键盘上输入一个成绩(float类型),输出该成绩对应的等级。其中,成绩为[90, 100]时,等级为A;成绩为[80, 90)时_百度作业帮
C语言问题第一部分编写一段程序,程序名称命名为1.c,完成如下任务:(1)从键盘上输入一个成绩(float类型),输出该成绩对应的等级。其中,成绩为[90, 100]时,等级为A;成绩为[80, 90)时,等级为B,成绩为[70, 80)时,等级为C,成绩为[60, 70)时,等级为D;成绩为<60时,等级为E。(2)要求使用if-else if结构。(3)在输入和输出时要有提示性语句。第二部分编写一段程序,程序名称命名为2.c,完成如下任务:(1)从键盘上输入一个成绩(float类型),输出该成绩对应的等级。其中,成绩为[90, 100]时,等级为A;成绩为[80, 90)时,等级为B,成绩为[70, 80)时,等级为C,成绩为[60, 70)时,等级为D;成绩为<60时,等级为E。(2)要求使用switch-case结构。(3)在输入和输出时要有提示性语句。提示:switch-case结构如下所示: 其中,switch后面括号内的“表达式”的值必须为离散型,而从键盘上输入的成绩是连续型,因此,必须把连续型的成绩转化为离散型的值。假设成绩变量为grade(float类型),则switch后面括号内的“表达式”应该写成(int)grade/10,也就是说,假设grade=85.5,则(int)grade/10=85/10=8,推而广之,成绩为[80, 90)时,都可以转换为8,则case后面的“常量表达式”为8时,对应的等级为B。对于其他分数段,也是同样的推导方法。需要注意的是,对于分数段[90, 100],需要分解为[90, 100)和100两部分,之后分别转换。思考一下,为什么这么做?第三部分编写一段程序,程序名称命名为3.c,实现如下任务:(1)编写一个子函数,使其可以完成加、减、乘、除的运算功能。(2)在主函数中,从键盘输入两个double类型的变量和一个char类型的运算符号,调用(1)中的子函数,得出运算结果。例如,如果运算符号为’+’时,返回两个数的和;如果运算符号为’-’时,返回两个数的差;如果运算符号为’*’时,返回两个数的积;如果运算符号为’/’时,返回两个数的商。(3)在输入和输出时要有提示性语句。提示:子函数的形参应该有3个,两个double类型的变量(用来存放运算量)和一个char类型的变量(用来存放运算符号)。
#include void main () {
printf("请输入一个成绩\n"); scanf("%f",&cj); if(cj>=90 && cj<=100)
printf("你的成绩等级为A\n"); else if(cj>=80 && cj<90)
printf("你的成绩等级为B\n");
else if(cj>=70 && cj<80)
printf("你的成绩等级为C\n"); else if(cj>=60 && cj<70)
printf("你的成绩等级为D\n"); else
printf("你的成绩等级为E\n");}#include void main () {
printf("请输入一个成绩\n"); scanf("%f",&cj); switch((int)cj/10) { case 10: case 9:printf("你的成绩等级为A\n");
case 8:printf("你的成绩等级为B\n"); case 7:printf("你的成绩等级为C\n"); case 6:printf("你的成绩等级为D\n"); default:printf("你的成绩等级为E\n"); }
}#include double cal(double a,double b,char c);void main () {
double a,b,
printf("请输入一个数\n"); scanf("%lf",&a); printf("请输入另一个数\n"); scanf("%lf",&b); getchar(); printf("请输入一个运算符\n"); scanf("%c",&f); jg=cal(a,b,f);
printf("运算的结果是:%lf\n",jg);}double cal(double a,double b,char c){ switch(c) { case '+':jg=a+b; case '-':jg=a-b; case '*':jg=a*b; case '/':jg=a/b; }}
扫描下载二维码一个猴子吃桃问题的C语言程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
一个猴子吃桃问题的C语言程序
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢求教一道C语言问题_百度知道
求教一道C语言问题
【问题描述】输入2个正整数m和n(m≥1,n≤10 000),输出m ~n 之间所有的Fibonacci数&#65377;Fibonacci数列(第一项起):1,1,2,3,5,8,13,21,…&#65377;要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci 数&#65377;例如,fib(7)的返回值是13&#65377;我的答案:#include&stdio.h&int main(void){ int m,n,i; int fib(int n); printf(&Input m: &); scanf(&%d&,&m); printf(&Input n: &); scanf(&%d&,&n); for(i=1;i&=n;i++){
if(fib(i)&=m&&fib(i)&=n){
printf(&%d&,fib(i));}
return 0;}int fib(int n){ if(n==1)
return 1; else if(n==2)
return 1; else
return f俯常碘端鄢得碉全冬户ib(n-1)+fib(n-2);}编译之后没有结果输出,求教哪里出了问题?谢谢了~~
提问者采纳
为甚么要break??思路是对的!!!你是输出中间的是吧!!!copy下我的,在运行下(我也是copy你的代码,然后改了下!!!)#include&stdio.h&void main(){ int m,n,i;
int fib(int n);
printf(&Input m: &);
scanf(&%d&,&m);
printf(&Input n:俯常碘端鄢得碉全冬户 &);
scanf(&%d&,&n);
for(i=1;i&=n;i++){
if(fib(i)&=m&&fib(i)&=n){
printf(&%d&#92;t&,fib(i));
printf(&&#92;n&); system(&pause&);}int fib(int n){ if(n==1)
else if(n==2)
return fib(n-1)+fib(n-2);}
提问者评价
其他类似问题
为您推荐:
其他1条回答
i=1;while(fib(i)&=n){if (fib(i) &= m){ &#俯常碘端鄢得碉全冬户47;/}i++;}
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁> 一道C语言题目(数字模式的识别),高手来找好算法我的在OJ上提交要超时。Description数字
一道C语言题目(数字模式的识别),高手来找好算法我的在OJ上提交要超时。Description数字
patience_0808 & &
发布时间: & &
浏览:54 & &
回复:8 & &
悬赏:0.0希赛币
一道C语言题目(数字模式的识别),高手来找好算法!!!!我的在OJ上提交要超时。Description 数字的模式是指在一堆给定数字中出现次数最多的数值,如5,5,5,3,3,2,6,4,它的模式就是5。现在你的任务,就是从数字中找到它的模式.Input 第一行为整数N.从第二行开始为N个整数。对于输入的每个数,有( |input_number| &= 2000000 ).Output 输出这些数字的模式,如果模式个数不为1,选择它们之中较小的。Sample Input101 2 3 4 5 6 7 8 9 9Sample Output9超时代码:#include &stdio.h&int main(){int n,str[2000000];//我是先绛序排列,再找int i,j,a,g=0,b=0,c;scanf(&%d&,&n);for(i=0;i&n;i++)scanf(&%d&,&str[i]);for(i=0;i&n;i++){for(j=i+1;j&=n;j++){if(str[j]&str[i])a=str[j],str[j]=str[i],str[i]=a;else if(str[i]==str[j]){g++;if(g&=b){b=g,c=str[i];}}elseg=0;}}printf(&%d\n&,c);return 0;}求好算法啊!!!~~~
请问N的大小是多少?程序所要求的时间是多少?没有数据范围,没有时间要求?
patrickbo & &
& & (0)(0)输入值的最大值为2000000,开一个的int数组,直接hash然后扫描一遍就可以了。O(n)的算法
patrickbao & &
& & (0)(0)引用#include &stdio.h&#define
N 4000001int hash[N];& int main(){
int i,n,y,a,max,;
for(i=0;i&N;i++)
hash[i] = 0;&
scanf(&%d&,&n);
for (i = 1 ;i&=n;i++)
scanf(&%d&,&a);
hash[a+2000000]++;
for(i =0 ;i& N;i++)
if (hash[i] & max
max = hash[i];
printf(&%d\n&,y-2000000);
return 0;}
lizand & &
& & (0)(0)1.从小到大排序2.遍历数组,将值相等的放入同一数组,如 数组0:2 数组1:3,3 数组2:4 数组3:5,5,5 数组4:63.取出size最大的数组即可,若存在相同size的数组,取数组序号较小者
lizan658 & &
& & (0)(0)你是那个OJ上面的那个题目,地址弄出来,还有上面你写的那个代码for (i=1; i&=4000000; ++i){
if (b[i] & max){
max = b[i]; max_i = &这个地方的I应从0开始 而不是1算法的思想是:将-200万-200万的数字映射到0-400万,因为hash的时候,数组的下标不能使负数。所以每一个数字都要加200万。
lizaixiong & &
& & (0)(0)探讨引用:引用#include &stdio.h&#define
N 4000001int hash[N];& int main(){
int i,n,y,a,max,;//这里多写了一个‘,’,去掉就可以了,OJ上面有报错信息的,为什么不看看错误原因呢?我去提交了一次,可以通过。
for(i=0;i&N;i++)
hash[i] = 0;&
scanf(&%d&,&n);
for (i = 1 ;i&……
lizaijuncg & &
& & (0)(0)代码优化了一下#include &stdio.h&#include &string.h&#define
N 4000001int hash[N];& int main(){
int i,n,y,a,
scanf(&%d&,&n);
y = - 2000001;
for (i = 1 ;i&=n;i++)
scanf(&%d&,&a);
( ++hash[a+2000000] & max )
max = hash[a+2000000];
if ((hash[a+2000000] == max) && (a &= y)){
printf(&%d\n&,y);
return 0;}
lizaixiong & &
& & (0)(0)  C/C++ code  int count = 18;
int arr[18] = {10, 5, 5, 1, 1,2,3,4,5,6,7,7,8,100,102,123,10,9};
int exchange = 1;
for (int i = 0; i & 17 && i++)
exchange = 0;
for (int j = 0; j& 17-i; j++)
if(arr[j] & arr[j+1]){
exchange = 1;
int tmp = arr[j+1];
arr[j+1] = arr[j];
int descValue = arr[0];
int descCount = 1;
int descValueTmp = arr[0];
int descCountTmp = 1;
for (int k = 1; k&18; k++)
if(descValueTmp == arr[k]){
descCountTmp ++;
if(descValue == descValueTmp){
descCount = descCountT
if(descCountTmp & descCount){
descValue = descValueT
descCount = descCountT
else if(descCountTmp == descCount){
descValue = descValueTmp & descValue
descValue : descValueT
descValueTmp = arr[k];
descCountTmp = 1;
printf(&%d&, descValue);liz123c & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 c语言面试问题 的文章

 

随机推荐