c语言求挑错!还有,给数组赋值用花括号吗?

计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如:4018224312的阿尔法乘积等于8,它是按照以下的步骤来计算的:
  4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8
  编写一个程序,输入一个正整数(该整数不会超过6,000,000),输出它的阿尔法乘积。
  输入格式:输入只有一行,即一个正整数。
  输出格式:输出相应的阿尔法乘积。
# include <stdio.h>
int main()
{
int n=1,x,a[100],b[10],j,k=1;
b[0]=0;
scanf("%d",&x);
while(1)
{while(1)
{
while(x%10==0) {x=x/10;}
a[n]= x%10;
x=x/10;
if(x==0) break;
n++;
}
b[k]=n;k++;
x=1;
for(j=b[k-1]+1;j<=n;j++)
{
x=x*a[j];}
if(x<10) break;
下面这种方法错在哪?
#include <stdio.h>
int main()
{
int x,t=1,fig;
scanf("%d",&x);
if(x/10==0) printf("%d",x);
else{
while(1)
{
while(x!=0)
{
if(x%10==0) x=x/10;
else {fig=x%10;t=t*fig;x=x/10;}
}
if(t<10) break;
else x=t;}
printf("%d",t);}

输入值 4018224312 较大,MS VC++ 编译器 用 _int64,输入格式 %I64d
累乘 里 要 加条件 if (a[j] != 0) x=x*a[j];

#include <stdio.h>
int main() {
_int64 n=1,x,a[100],b[10],j,k=1;
b[0]=0;
scanf("%I64d",&x);
while(1){
while(1) { a[n]= x%10; x=x/10; if(x==0) break; n++; }
x=1;
for (j=1;j<=n;j++) if (a[j] != 0) x=x*a[j];
if (x<10) break;
printf("%d\n",x);
n = 1; // 恢复 1
}
printf("%d\n",x);
return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言数组后面是用圆括号还是花括号?
第一个图很明显是给单个数组元素赋值,而花括号是给整个数组初始化用得,你用错地方当然有问题 第二个图只是碰巧没有语法错误而以,并不是合适得赋值语句 第三个图错误在于number不是常量,而数组定义时需要元素个数是"常数",不要和前面int number=100混淆,那是运行时才知道得,编译时并不知道它值为10...

c语言共用体包含一个数组成员,我要对这个数组成员进行赋值,一定要一...
c语言共用体包含一个数组成员,对这个数组成员进行赋值,如果是在程序执行中,一定要一个一个的赋值的。如果是在定义的同时初始化,则能写在花括号中的。

c语言挑错啊 大神们帮忙啊
第一个错误是对 score 的赋值上。score 数组只有7个数值,而下标从0开始,因此,对score[7]的访问会造成指针越界。因此 scanf("%d", &score[7]); 这一句不仅不能对 score 数组赋值,本身还会出现问题。你没有对 score 进行初始化,也没有对它进行赋值,结果就造成 score 数组中的数据是未知的,...

c语言我把一个数组赋值给另外一个数组这样做为什么错了?
数组相当于常量指针,不能用赋值改变的。正确做法如下:include<stdio.h> int main(){int *b;\/\/此处改为普通指针即可 int i;int items[6]={32,11,21,32,43,3};b=items;for(i=0;i<6;i++)printf("%4d",b[i]);}

c语言如何换行输入500个数据赋值给一维数组
用花括号{}直接赋值。在c语言中,数组是用来处理一系列相同类型元素的集合。1、用花括号{}直接赋值。2、只给部分元素赋值,没有赋值的元素默认赋值为0。3、对全部元素初始化的时候,不指定数组元素的长度。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译...

c语言加花括号的原则
例如你在main()里面调用一个函数,调用的循环体语句就需要花括号 for(),if()while()等语句后的循环体也可以不加,程序也能正常运行。但最好把一个循环体语句放在一个花括号里 这对以后程序的维护有很大作用 看下面程序,自己领悟,阿弥陀佛。。。题目:计算1!+2!+3!+……+100!.要求定义和...

C语言 结构体的赋值
按规定,花括号内的 初始化 数值,必须为常量。struct student a[3]={zhangsan,{。。。}; \/\/错在初始化用了 非常量 你的结构数组a[3] 里用了变量 zhangsan, 语法上是错的。你可以改成:struct student a[3]={ {0}, {1002, 后面照抄。。。};其中 {0} 是给数组元素 a[0] 初始...

关于C语言字符数组的问题
如果使用 字符串 初始化数组,则可以不加 花括号,如:a[2][3]="ab";至于B 为什么对呢?① B 项的名称定义符合变量命名要求(字母和下划线开头,由字母、数字、下划线任意组合而成);② B 项的数组定义符合C语言要求,即 其一维长度不可省略。③ B 项的数组初始化符合C语言要求,使用 字符 ...

c语言 中花括号有哪些作用?
大括号的作用是把内部的多个语句绑在一起,当成一个语句。 在c中大括号的作用是将很多语句复合为一个语句块,在这个大括号括起来的语句块中可以定义变量,该变量内存出了该语句块就会被释放。 char a[10] = {“abcde”};这个表达式正确。我让他继续改一下这个例子:char a[10] {="abcde...

用C语言编程怎么给自己定义好的数组赋值
单片机编程是吧 unsigned char code Tab[8];这句话已经把Tab放进ROM里的,就不能再次赋值了 所以会出现unmodifiable lvalue(不能赋左值)的错误 把code去掉试试 下次出现这样的错误,就一定要去找左值的错误 是否是常量?是否是const修饰?是否放在ROM里等等 ...

相似回答