急,一个关于c语言基础面试题的题,请打下看下

请教高手,关于C语言的问题,(1)位数大小排序(掌握数值排序算法)(2)简单计算器_百度知道
请教高手,关于C语言的问题,(1)位数大小排序(掌握数值排序算法)(2)简单计算器
(1)位数大小排序(掌握数值排序算法)程序说明:输入一个五位整数,对此整数中的五个数值进行从大到小的顺序排序,形成一个新的五位整数,并输出这个整数。要求:用函数调用。(2)简单计算器请编写一个程序计算表达式:data1 op data2的值。其中,op为运算符+、-、*、/。 不要复制的,在网上复制的都是程序出错,比如第一题的数位排序代码:#include &stdio.h&#include &stdlib.h&int cmp(const void* a, const void* b){ return (int)(*(char*)b - *(char*)a);}int sort(int n){ char buf[8]; sprintf(buf, &%d&, n); qsort(buf, 5, 1, cmp); return atoi(buf);}int main(void){ scanf(&%d&, &n); if(9999 & n && n & 100000)
printf(&%d\n&, sort(n)); return 0;}代码是错误的,请高手指点,那里出错?谢谢!!!
提问者采纳
等我有时间可以给你写!
提问者评价
谢谢!先给你5分!
其他类似问题
排序算法的相关知识
其他2条回答
你复制少了,,很多代码没复制过来,,,这就是错的地方。
第1 个#include &stdio.h&#include &stdlib.h&int NumChange(int n){ char s[6]; char c1,c2; int i,j,r; itoa(n,s,10); for(i=0;i&5;i++) {
for(j=i+1;j&5;j++)
if(s[j]&c1)
s[i]=c1; } r = atoi(s);};main(){ scanf(&%d&,&x); x = NumChange(x); printf(&%d&,x);} 第2个int arithmetic(char * str){ char s[100]; char s1[50]={0}; char s2[50]={0}; int i=0,j=0,r=0,sign=0; strcpy(s,str); for(i=0;*(s+i);i++) {
if(sign==0&&s[i]&='0'&&s[i]&='9')
s1[i]=s[i];
if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
if(sign==1&&s[i]&='0'&&s[i]&='9')
s2[j++]=s[i];
} i=atoi(s1); j=atoi(s2); switch(c) {
case '+':
case '-':
case '*':
case '/':
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
mTextView.setText("正在检测网络1...");
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
mTextView.setText(statusTextView.getText()+"正在检测网络2...");
问:为什么mTextView不会先显示1,再显示2,而是直接就显示2去了.按照逻辑应该是停顿1秒后就显示第一个内容,再3秒就第2个内容才对啊.除学java,请指点指点,谢谢。------解决方案--------------------
我已经说了两次操作都是运行在UI线程的,同一个线程中代码的执行顺序是从上到下,sleep 1000ms后就更改了第一次 然后紧跟着又sleep,再改第二次,最后才会把界面展示出来,所以你第一眼看到的就是第2次的结果。
------解决方案--------------------
我已经说了两次操作都是运行在UI线程的,同一个线程中代码的执行顺序是从上到下,sleep 1000ms后就更改了第一次 然后紧跟着又sleep,再改第二次,最后才会把界面展示出来,所以你第一眼看到的就是第2次的结果。
------解决方案--------------------LS的都说的比较有道理,另外一点就是activity的生命周期中,create方法只是在启动一个activtiy的时候调用,真正显示是在start方法里面。也就是说,当调用完start方法后就会显示屏幕。。resume方法是用户能活的屏幕焦点的时候调用的。所以你的代码如果放在resume方法里面,就会有效果的。!!!!
vb6.0中怎么比较两个double数大小相等?
vb6.0中如何比较两个double数大小相等?在线等,急!vb6.0中如何比较两个double数大小相等?我用了一个判断If (i ^ i1 + j ^ j1) = (k ^ k1) Then结果却发现,当j ^ j1=k ^ k1=2.99E+21,而i ^ i1不等于0时,居然也会成立这是怎么回事啊,还有一个问题是:可不可以让k ^ k1不用E+表达,直接显示数字大小啊------解决方案--------------------
由于浮点数是不准确数据(小数点后某位开始会不准确),因此一般不能使用等号判断相等可以使用if abs(f1-f2)&delta then '相减后绝对值小于某个很小的数,则认为相等
------解决方案--------------------
另一个问题,可以自己写一个函数转化。判断是否有E,然后用Mid函数提取数字和指数,最后用数字乘以10的指数次方。
------解决方案--------------------
在我看来比较两个Double数据的大小很容易的事情啊?不就是d1-d2,看结果啊?难道楼主的提问另有含义?有个想法,不论什么类型的数据都是存储在内存中的,那么比较两个Double类型的数据可以使用CopyMemroy来读取Double类型的每一个字节,对位比较。如果某个字节不一致,那么这两个数据就不相等。
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:C语言的题目,判断3个数,由大大小排列。初学者,就不是不可以运行,大家帮我看下,思路对没对_百度知道
C语言的题目,判断3个数,由大大小排列。初学者,就不是不可以运行,大家帮我看下,思路对没对
#include &stdio.h&void main(){
int a,b,c;
scanf(&%a,%b,%c&,&a,&b,&c);
if{(a&b&c)
printf(&%a,%b,%c,&,a,b,c);
printf(&%b,%c,%a,&,b,c,a);
printf(&%c,%a,%b&,c,a,b); }
//你那个语法、逻辑太离谱了。#include &stdio.h&void exchange(int *a,int *b){int t=*a;*a=*b;*b=t;}int main(){int x,y,z,t;scanf(&%d%d%d&,&x,&y,&z);if(x&y) exchange(&x,&y);if(y&z) exchange(&y,&z);if(x&y) exchange(&x,&y);printf(&x=%d y=%d z=%d\n&,x,y,z);return 0;}
其他类似问题
按默认排序
其他13条回答
if那段好奇特。if(a&b) {
你的if语句错了吧? 输入也错了...输出也是……等一下帮你打个正确的,你等几分钟 #include &stdio.h&void main(){
int a,b,c,t; scanf(&%d,%d,%d&,&a,&b,&c); if(a&b) {
b=t; } if(b&c) {
c=t; } if(a&b) {
b=t; } printf(&%d,%d,%d&,a,b,c);} //你的思路太奇特,我换了个思路(一个没用循环的冒泡排序)
#include&stdio.h&void main(){ int a,b,c,t; scanf(&%d,%d,%d&,&a,&b,&c); if(a&b) {
b=t; } printf(&%d,%d,%d&,a,b,c);
printf(&\n&);}
这个是什么东东,有这样写的吗?
我给你解释下这个是什么意思
首先a&b是否成立,成立的话返回为1,否则返回为0
然后这个结果0或者1再与c在进行比较 如果比c大就成立 你的if语句里面也真是莫名其妙的,后面两句表达式不是表达式。
学习编程的时候别把数学的一套套的弄进来了,还有输入的时候别乱用逗号这样的字符去隔断,因为你输入数据的时候必须也要输入上,还有你下面的两个printf输出事什么意思呢,有点怪怪的 . 你可以这样写 max_1 = a&b?a:b; min = a&b?a:b;max = c&max_1?c:max_1;
printf(&%d\t%d\t%d\n&,max,max_1,min);
如果数据多余三个的建议用选择排序或者冒泡排序去进行大小的比较排序。
作为前辈,提点小建议学习C的时候要扎扎实实,重要的是自己动脑筋去思考去一点点弄懂,而不是一遇到问题就想着找人解决。从头仔细的看书做章节后面的习题,规则基础弄懂了代码调试跟踪 仍有BUG自己无法解决的时候再去求助。
学编程一定要扎扎实实,一步一步的来,祝你成功!
#include &stdio.h&void main(){
int a,b,c,d;
scanf(&%d,%d,%d&,&a,&b,&c);
d=(a&b&&a&c)? a:((b&c)? b:c);//判断最大的
printf(&%d,&,d);//判断剩下的两个
printf(&%d,%d&,(b&c? b:c),(b&c?c:b));
else if(b==d)
printf(&%d,%d&,(a&c? a:c),(a&c?c:a));
printf(&%d,%d&,(b&a? b:a),(b&a ? a:b));
书写格式错了,逻辑也不是太好.if(a&b){
print(c,a,b);
print(a,c,b);
print(a,b,c);
print(c,b,a);
print(b,c,a);
print(b,a,c);
写程序,要先认识问题,先在现实中对问题进行求解。先在纸上把这个问题的求解过程详细地写出来。记得,这种排序问题,都是用第一个与后面的比较,第二个与后面的比较...........这是我修改的你的程序,#include &stdio.h&void main(){
int a,b,c,n;
scanf(&%a,%b,%c&,&a,&b,&c);
if(a&b)//如果第一个数大于第二个数,变换位置,否则不变
if(a&c)//如果第二个数大于第三个数,变换位置,否则不变
if(b&c) //如果第三个数大于第四个数,变换位置,否则不变
printf(&%a,%b,%c,&,a,b,c);
}不足之处,请指正。好好理解一下这个:设个程序一般过程:1,认识问题并找出其中的数据及它们之间的关系。2,设计出合理的数据结构;3,根据数据结构设计出求解问题的算法。
#includes&stido.h&int main(){int a,b,c;scanf(&%d,%d,%d&,&a,&b,&c);if(a&b)a=b;if(a&c)a=c;if(b&c)b=c;printf(&由大到小排列为:%d\t%d\t%d&,a,b,c);}
C没有这种语法
if那里错的东西太多了。。
逻辑错了哇
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言问题。现在有int a,b,c,d四个数字,比较大小,后输出还是按着int a,b, c,d顺序输出。新手求教,急
C语言问题。现在有int a,b,c,d四个数字,比较大小,后输出还是按着int a,b, c,d顺序输出。新手求教,急
#include &stdio.h&int max(int *x,int *y){
if(*x&*y){*t=*x;*x=*y;*y=*t;}}void main(){
int a,b,c,d;
scanf(&%d%d%d%d&,&a,&b,&c,&d);
max(&a,&b);
max(&a,&c);
max(&a,&d);
max(&b,&c);
max(&b,&d);
max(&c,&d);}
最后加个输出语句printf(&%5d%5d%5d%5d&,a,b,c,d);这个忘了,呵呵
#include &stdio.h& int max(int *x,int *y) { int *t; if(*x>*y){*t=*x;*x=*y;*y=*t;} } void main() { int a,b,c,d; scanf(&%d%d%d%d&,&a,&b,&c,&d); max(&a,&b); max(&a,&c); max(&a,&d); max(&b,&c); max(&b,&d); max(&c,&d); printf(&%5d%5d%5d%5d&,a,b,c,d);}
等待您来回答
编程领域专家C语言输入10个整数,按大小顺序输出用选择法求大神看哪里有问题_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:254,341贴子:
C语言输入10个整数,按大小顺序输出用选择法求大神看哪里有问题收藏
C语言键盘输入10个整数,按大小顺序输出要求用选择法。输出排序后的整数,数和数之间有一个空格。求大神#include&stdio.h&int main(){
int a[10];
int i,t,j,m;
for(i=0;i&=9;i++)
scanf("%d ",&a[i]);
for(i=0;i&9;i++)
for(j=i+1;j&=9;j++)
if(a[t]&a[j])
a[i]=a[t];
for(i=0;i&=9;i++)
printf("%d",a[i]);
if(i!=9) printf(" ");
}return 0;}运行时打上10个数后回车必须要再输入一个随便的数再回车才能出正确答案,请大神看下哪里有问题。
scanf("%d",&a[i]);%d后面不要加空格,不然要多输入一个空格
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 c语言选择题 的文章

 

随机推荐