C语言的问题,怎么都编译不成功,求解答哪里出了问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的问题,怎么都编译不成功,求解答哪里出了问题相关的知识,希望对你有一定的参考价值。
如题,代码作用是输入一个正整数,不超过5位。1.显示该数是几位数2.显示该数各位都是几3.将该数各位数打乱后以从大到小的顺序排列组成一个新的数再输出。
以下是我写的代码:
#include<stdio.h>
int main()
int num,a,b,c,d,e,weishu;
int newnum(int new1,int new2,int new3,int new4,int new5);
int fin=newnum(a,b,c,d,e);
scanf("%d",&num);
if(num>0&&num<=99999)
a=num/10000;
b=(num-a*10000)/1000;
c=(num-a*10000-b*1000)/100;
d=(num-a*10000-b*1000-c*100)/10;
e=num-a*10000-b*1000-c*100-d*10;
if(a!=0)
weishu=5;
if(b!=0)
weishu=4;
if(c!=0)
weishu=3;
if(d!=0)
weishu=2;
else weishu=1;
printf("1.weishu=%d\n2.a=%d,b=%d,c=%d,d=%d,e=%d\n3.newnum=%d",weishu,a,b,c,d,e,newnum);
else printf("You stye this number is wrong!!\n");
return 0;
int newnum(int new1,int new2,int new3,int new4,int new5)
int x,new;
for(int z=4;z>0;z--)
if (new1<=new2)
x=new2;
new2=new1;
new1=x;
if(new2<=new3)
x=new3;
new3=new2;
new2=x;
if(new3<=new4)
x=new4;
new4=new3;
new3=x;
if(new4<=new5)
x=new5;
new5=new4;
new4=x;
new=new1*10000+new2*1000+new3*100+new4*10+new5;
return (new);
编译后的错误提示:
$ g++ -o 20 20.c
20.c: In function 'int newnum(int, int, int, int, int)':
20.c:38: error: expected unqualified-id before 'new'
20.c:58: error: expected type-specifier before '=' token
20.c:58: error: lvalue required as left operand of assignment
20.c:59: error: expected type-specifier before ')' token
20.c:59: error: invalid conversion from 'int*' to 'int'
我没用指针,只用了循环和条件选择,望各位大神指点,究竟错在哪儿了?
我试了一下,的确是换个名字就好使了,能编译了。但是执行出来的结果明显不对,比如说:
输入:12345
1.weishu=2
2.a=1,b=2,c=3,d=4,e=5
3.newnum=4199228
谢谢在帮忙看看,如果能把这个解决我会再加分
你这个程序写的一点通用性都没有,再帮你写一个
#include
int main()
int num,a,b,c,d,e,weishu;
int nenum(int ne1,int ne2,int ne3,int ne4,int ne5);
scanf("%d",&num);
if(num>0&&num0;z--)
if (new1
#define DIGIT_MAX 5
int digit_num;
int each_digit[DIGIT_MAX];
int new_num;
void sort(int * a, int n)
int i, j, tmp;
for (i = 0; i a[j + 1])
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
void inf_set(int a)
digit_num = 0;
while (a)
each_digit[digit_num++] = a % 10;
a /= 10;
void print()
int i;
printf("1. digit number is %d\n", digit_num);
printf("2. each digit is: ");
for (i = digit_num - 1; i >= 0; i--)
printf("%d ", each_digit[i]);
sort(each_digit, digit_num);
printf("\n3. new number is: ");
for (i = digit_num - 1; i >= 0; i--)
printf("%d", each_digit[i]);
printf("\n");
int main()
int a;
scanf("%d", &a);
inf_set(a);
print();
return 0;
大概能看明白,void sort是比较大小并排序,void inf_set是列出5个数并显示位数,void print()
是输出,int main()是输入。问题小弟是初学者,现在还没学到指针,所以能不能有个不用指针的方法啊?书上的习题,还没到指针就出了这么道题所以应该不用指针也能写出来。不用费那么大劲儿吧所有代码都给我写出来,就是给我指出哪里错了或者给点儿思路就行,谢谢啦!!
我也没用指针哪,void sort(int * a, int n)里的int *a你把它看成是数组就完了,改成void sort(int a[], int n)也行,知道是把数组传进去就行了,另外,如果数组也没学过的话就当我没说……
参考技术A int newnum(int new1,int new2,int new3,int new4,int new5);前面不需要这句 lz 参考技术B int x,new; new是关键字,不能作变量名
以上是关于C语言的问题,怎么都编译不成功,求解答哪里出了问题的主要内容,如果未能解决你的问题,请参考以下文章
将一个正整数分解质因数。python3.6问题,输出为空,是哪里出了问题,求大神解答
ASP.NET编译成功后,为啥有些功能不会执行?麻烦高手解答!
同一段代码,扩展名为cpp就可以成功编译,扩展为c就不能编译,求解答