跪求高手支招!C语言改错!急!急!急!
#include"stdio.h"voidmain(){intm,n,r,s,q;printf("pleaseinputthelargenumber");scanf("m...
#include "stdio.h"
void main()
{
int m,n,r,s,q;
printf("please input the large number");
scanf("m=%d\n",&m);
printf("please input the small number");
scanf("n=%d\n",&n);
s=m*n;
for(r=1;r=0;)
{
r=m%n;
m=n;
n=r;
}
q=s/n;
printf("最大公约数是%d\n",n);
printf("最小公倍数是%d\n",q);
}
第二个:
#include "stdio.h"
int main( )
{
int n,s=1,j,i,k=0;
printf("计算");
scanf("%d\n",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
s=s*j;
k=k+s;
}
printf("所求级数和为k=%d\n",k);
return 0;
}
第三个:
#include "stdio.h"
void main()
{
int i,j,a[3][3],sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("please input numbers\n");
scanf("%d",&a[i][j]);
}
printf("\n");
for (i=0,j=0;i==j;i++,j++)
sum=sum+a[i][j];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d",a[i][j]);
}
printf("\n");
printf("sum=%d",sum);
}
万分感谢!@ 展开
void main()
{
int m,n,r,s,q;
printf("please input the large number");
scanf("m=%d\n",&m);
printf("please input the small number");
scanf("n=%d\n",&n);
s=m*n;
for(r=1;r=0;)
{
r=m%n;
m=n;
n=r;
}
q=s/n;
printf("最大公约数是%d\n",n);
printf("最小公倍数是%d\n",q);
}
第二个:
#include "stdio.h"
int main( )
{
int n,s=1,j,i,k=0;
printf("计算");
scanf("%d\n",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
s=s*j;
k=k+s;
}
printf("所求级数和为k=%d\n",k);
return 0;
}
第三个:
#include "stdio.h"
void main()
{
int i,j,a[3][3],sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("please input numbers\n");
scanf("%d",&a[i][j]);
}
printf("\n");
for (i=0,j=0;i==j;i++,j++)
sum=sum+a[i][j];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d",a[i][j]);
}
printf("\n");
printf("sum=%d",sum);
}
万分感谢!@ 展开
4个回答
展开全部
支持整数 + - * / () 混合运算 。
如:5*(6+814)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int addsubt();
int multdiv();
int number();
void error();
static char expr[81];
static int pos;
int main()
{
int ans;
do
{
pos=0;
printf("enter expression (0 to quit):\n");
gets(expr);
ans=addsubt();
if(expr[pos]!='\0')
error();
if(ans!=0)
printf("%ld\n",ans);
}
while(ans!=0);
return 0;
}
int addsubt() //加减运算函数 ,加减优先级比乘除低,所以这里加数,都是调用 乘除 函数来获得的,这样可以先执行乘除,。
{
int rtn=multdiv();
while(expr[pos]=='+'||expr[pos]=='-') //判断是不是 + -号
{
int op=expr[pos++];
int opr2=multdiv(); //加数2是调用乘函数得来。
if(op=='+') //+
rtn+=opr2; //求和
else rtn-=opr2;
}
return rtn;
}
int multdiv() // 乘函数
{
int rtn=number(); //得到一个数,。// 注意:::如果取得数后,后面不是*/就直接返回 这个数,返回给 加减函数 中调用的位置。
while(expr[pos]=='*'||expr[pos]=='/') //判断数后面的是不是*/号
{
int op=expr[pos++]; //提取符号,并位置 标识后移 一个
int opr2=number(); //数2 调用number 函数取得。
if(op=='*') // *
rtn*=opr2;
else rtn/=opr2; // /
}
return rtn;
}
int number() //取出表达式的数字
{
int rtn;
if(expr[pos]=='(') //表达式里有括号
{
pos++; //下标加1 ,就是下个字符
rtn=addsubt(); //把左括号后面的字符 赋给变量 rtn
if(expr[pos++]!=')') // 如果不是 右括号
error(); //
return rtn;
}
//以下是无括号
if(!isdigit(expr[pos])) //判断是否是数字
error();
rtn=atol(expr+pos); //把第pos开始 的字符 转化成等值长整型数字,赋值给rtn,。
while(isdigit(expr[pos])) //while 循环,判断是否是数字,是则位置向后移,直到 pos 位不是数字的位置。
pos++;
return rtn; //返回这个数 ,。
}
void error() //错误 提示函数
{
printf("'\r'");
while(pos--)
printf(" ");
printf("^ syntax error\n'\a'"); //输出 格式错误, 声音提示
exit(-1); //退出 。
}
如:5*(6+814)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int addsubt();
int multdiv();
int number();
void error();
static char expr[81];
static int pos;
int main()
{
int ans;
do
{
pos=0;
printf("enter expression (0 to quit):\n");
gets(expr);
ans=addsubt();
if(expr[pos]!='\0')
error();
if(ans!=0)
printf("%ld\n",ans);
}
while(ans!=0);
return 0;
}
int addsubt() //加减运算函数 ,加减优先级比乘除低,所以这里加数,都是调用 乘除 函数来获得的,这样可以先执行乘除,。
{
int rtn=multdiv();
while(expr[pos]=='+'||expr[pos]=='-') //判断是不是 + -号
{
int op=expr[pos++];
int opr2=multdiv(); //加数2是调用乘函数得来。
if(op=='+') //+
rtn+=opr2; //求和
else rtn-=opr2;
}
return rtn;
}
int multdiv() // 乘函数
{
int rtn=number(); //得到一个数,。// 注意:::如果取得数后,后面不是*/就直接返回 这个数,返回给 加减函数 中调用的位置。
while(expr[pos]=='*'||expr[pos]=='/') //判断数后面的是不是*/号
{
int op=expr[pos++]; //提取符号,并位置 标识后移 一个
int opr2=number(); //数2 调用number 函数取得。
if(op=='*') // *
rtn*=opr2;
else rtn/=opr2; // /
}
return rtn;
}
int number() //取出表达式的数字
{
int rtn;
if(expr[pos]=='(') //表达式里有括号
{
pos++; //下标加1 ,就是下个字符
rtn=addsubt(); //把左括号后面的字符 赋给变量 rtn
if(expr[pos++]!=')') // 如果不是 右括号
error(); //
return rtn;
}
//以下是无括号
if(!isdigit(expr[pos])) //判断是否是数字
error();
rtn=atol(expr+pos); //把第pos开始 的字符 转化成等值长整型数字,赋值给rtn,。
while(isdigit(expr[pos])) //while 循环,判断是否是数字,是则位置向后移,直到 pos 位不是数字的位置。
pos++;
return rtn; //返回这个数 ,。
}
void error() //错误 提示函数
{
printf("'\r'");
while(pos--)
printf(" ");
printf("^ syntax error\n'\a'"); //输出 格式错误, 声音提示
exit(-1); //退出 。
}
展开全部
1、 for(r=1;r=0;)改成 for(r=1;r==0;)
2、for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
s=s*j;
k=k+s;
}
改成:
k = 0;
for(i=1;i<=n;i++)
{
s = 1;
for(j=1;j<=i;j++)
s=s*j;
k=k+s;
}
3、错误较多,改成:
int i,j,a[3][3],sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{printf("please input numbers\n"); //注意加大括号,否则scanf不在循环之中
scanf("%d",&a[i][j]);}
}
printf("\n");
/* for (i=0,j=0;i==j;i++,j++) 将此行注释掉,sum在下面计算
sum=sum+a[i][j];*/
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf("%d ",a[i][j]);
sum += a[i][j]; //在此计算
}
printf("\n"); //加上打印空格,更清晰一点
}
printf("\n");
printf("sum=%d",sum);
2、for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
s=s*j;
k=k+s;
}
改成:
k = 0;
for(i=1;i<=n;i++)
{
s = 1;
for(j=1;j<=i;j++)
s=s*j;
k=k+s;
}
3、错误较多,改成:
int i,j,a[3][3],sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{printf("please input numbers\n"); //注意加大括号,否则scanf不在循环之中
scanf("%d",&a[i][j]);}
}
printf("\n");
/* for (i=0,j=0;i==j;i++,j++) 将此行注释掉,sum在下面计算
sum=sum+a[i][j];*/
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf("%d ",a[i][j]);
sum += a[i][j]; //在此计算
}
printf("\n"); //加上打印空格,更清晰一点
}
printf("\n");
printf("sum=%d",sum);
追问
谢谢高手啊!赞一个。。。
第三个程序中我的本意是求矩阵对角线上元素之和。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//第一题
#include "stdio.h"
void main()
{
int m,n,r=0,s=0,q=0;//没有初始化
printf("please input the large number");
scanf("%d",&m);//这是scanf()函数,不是printf()
printf("please input the small number");
scanf("%d",&n);
s=m*n;
for(r=1;r=0;)
{
r=m%n;
m=n;
n=r;
}
q=s/n;
printf("最大公约数是%d\n",n);
printf("最小公倍数是%d\n",q);
}
//================================
//第二题
#include "stdio.h"
int main( )
{
int n,s=1,j,i,k=0;
printf("计算");
scanf("%d",&n);\\没必要加\n,因为你回车默认就加\n了
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
s=s*j;
k=k+s;
}
printf("所求级数和为k=%d\n",k);
return 0;
}
//===========================
//第三题
#include "stdio.h"
void main()
{
int i,j,a[3][3],sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++){
/*嵌套里面的for语句这里少了个大括号
for(xxx;xxx;xxx)
printf("please input numbers\n");
scanf("%d",&a[i][j]);
就相当于
for(xxx;xxx;xxx){
printf("please input numbers\n");
}
scanf("%d",&a[i][j]);
*/
printf("please input numbers\n");
scanf("%d",&a[i][j]);
}
}
printf("=============\n");
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 3 ;j++)
{
sum += a[i][j];
printf("(%d,%d)%d , " ,i , j , a[i][j]);
}
printf("\n");
}
printf("=========sun========\n");
printf("sun=%d" , sum);
}
#include "stdio.h"
void main()
{
int m,n,r=0,s=0,q=0;//没有初始化
printf("please input the large number");
scanf("%d",&m);//这是scanf()函数,不是printf()
printf("please input the small number");
scanf("%d",&n);
s=m*n;
for(r=1;r=0;)
{
r=m%n;
m=n;
n=r;
}
q=s/n;
printf("最大公约数是%d\n",n);
printf("最小公倍数是%d\n",q);
}
//================================
//第二题
#include "stdio.h"
int main( )
{
int n,s=1,j,i,k=0;
printf("计算");
scanf("%d",&n);\\没必要加\n,因为你回车默认就加\n了
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
s=s*j;
k=k+s;
}
printf("所求级数和为k=%d\n",k);
return 0;
}
//===========================
//第三题
#include "stdio.h"
void main()
{
int i,j,a[3][3],sum=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++){
/*嵌套里面的for语句这里少了个大括号
for(xxx;xxx;xxx)
printf("please input numbers\n");
scanf("%d",&a[i][j]);
就相当于
for(xxx;xxx;xxx){
printf("please input numbers\n");
}
scanf("%d",&a[i][j]);
*/
printf("please input numbers\n");
scanf("%d",&a[i][j]);
}
}
printf("=============\n");
for(i = 0 ; i < 3 ; i++)
{
for(j = 0 ; j < 3 ;j++)
{
sum += a[i][j];
printf("(%d,%d)%d , " ,i , j , a[i][j]);
}
printf("\n");
}
printf("=========sun========\n");
printf("sun=%d" , sum);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是来打酱油的,顺便提醒一下,你的基本功太不扎实了。
--- 路人甲
--- 路人甲
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询