我C语言了,C语言 我编了一个程序有错误请找出并修改

1,C语言 我编了一个程序有错误请找出并修改#include "stdio.h"#include "math.h"main(){int g,s,b,x,k=0;for(x=100;x<=999;x++)if(sqrt(x)==(int)sqrt(x)){g=x%10;s=x%100/10;b=x/100;if(g==s||s==b) //g==b可以不需要,g==s,s==b => g==b{printf("%4d",x);k++; //这里少了;}if(k%5==0)printf("\n"); //这里少了;}}
2,C语言编完了怎么运行初学者选清华大学出版社出版的谭浩强主编的那本绿色封面的c语言教程是最合适不过了 那本书的发行量、使用量很是不得了 此外,书中会向您推荐几款编程软件的c语言运行主要有三步:快捷键为编译ctrl+F7,组建F7,执行ctrl+F5差错的话在编译器的最下角,练会提示错误error数 , 和警告warning数,两个都为0的话就没错 , 双击每行的错误后,会有一个小箭头指向错误的行点上面的Build--> Rebuild All然后再点工具栏上的那个感叹号的键 , 就可以运行了 。窗口的下方会现实错误数error 和警告数warning,如果有错误,用鼠标双击下面的英文就会有一个小手指指向有错误的一行代码 。
3,为什么我运行C语言后显示不到结果为了系统兼容性考虑,使用system("pause");较好,将它加在主函数结尾,return 之前 , 注意包含头文件stdlib.h另外,用getch();最好包含头文件conio.h************************************************原程序有误,int a,b sum; 应改为 int a,b,sum;尝试以下程序://///////////////////////////////#include<stdio.h>#include<stdlib.h>void main()a=123;b=456;sum=a+b;printf("sum=%d\n",sum);system("pause");}如果显示"恭喜,编译成功"的话,那你就是对的,至于显示不出来,看看你有没有在程序上加"getch()"这样就应该没问题了,不会的再问我getchar();应该才可以吧现在C90的标准好象早就淘汰了程序编写有问题主要是对for语句的掌握不好首先看一下存在的其他问题1.main函数中缺少个“}”2.printf("%d its factors are");一句中没有给“%d”进行相应的赋值,应该为:printf("%d its factors are" , m);下面来看看for的应用,因为你写的是i<=m所以它计算的时候一直计算到了他的本身,每一个数都能被本身整除 , 所以累加到s时,肯定不相等了 。例如6是符合的数字,但是,计算结果却是1+2+3+6肯定不能等于6了所以应该将相应的i<=m改为i【我C语言了,C语言 我编了一个程序有错误请找出并修改】
4,我编了一个c语言程序输入一个元素为5的数组输出最大的元素#includeint max(int students[])int i,m,n;m=students[0];for(i=1;i<=4;i++)if(m>students[i])m=m;else m=students[i];}return m;}int main()int o,i,students[5],m,n;printf("now please input the scores of the students:\n");for(i=0;i<=4;i++)scanf("%d",&students[i]);m = max(students);printf("the max score is %d\n",m);return 0;}主函数与调用函数里的m是不一样的 , 让调用函数返回一个值int i,a[10]; 定义一个整形变量i和一个能包含10个元素且元素类型为整形的数组for (i=0;i<=9;i++)a[i]=i; 先把i设为0再看1<=9是否成立如果成立则执行a[0]=0既把0给数组的第一个元素完了之后执行i++既i增加一个现在i=1,看现在i<=9是否成立如果成立在执行a[1]=1.....直到执行完i=9后,i变成了10 , 不符合i<=9则跳出循环,继续下面的语句for(i=9;i>=0;i--)printf("%d",a[i]);从i=9开始依次在屏幕上输出a[9],a[8].a[7]直到i=0输出完a[0]后i=-1跳出循环执行最后一句printf("/n");}在屏幕上回车换行#includeint max(int students[])int i,m;m=students[0];for(i=1; iif(m>students[i])m=m;elsem=students[i];}return m;}int main()int o,i,students[5]=printf("now please input the scores of the students:\n");// for(i=0; i//scanf("%d",&students[i]);m= max(students);printf("the max score is %d\n",m);}#includevoid max(int students[])//这里应该定义为 int max(int students[]),返回一个整型值int i,m,n;//这里的m与main函数中的m作用域不同,此m不等于彼m , //应当返回一个值给main函数;n有何用?过于有创意!m=students[0];for(i=1;iif(m>students[i])//这里不够精炼,显得太啰嗦,可以这样写:m=m;//if(m else//有了上面语句就够了,else语句全部删除m=students[i];}}main()int o,i,students[5],m,n;//定义这么多变量干嘛?你都用完了吗?printf("now please input the scores of the students:\n");for(i=0;iscanf("%d",&students[i]);max(students);//下面要打印的是m值 , 所以m应赋予max的返回值//所以应这样写: m = max(students);printf("the max score is %d\n",m);}下面重新写了一个:#includeint max(int students[]) int i,m; m=students[0]; for(i=1;iif(mm = students[i]; }return m;}int main()int i, m, students[5];printf("now please input the scores of the students:\n");for(i=0; iscanf("%d", &students[i]);m = max(students);printf("the max score is %d\n",m);return 0;}m?当然不一样了,你的void max(int students[])函数和主函数虽然都定义了m但是都是局部变量 , 二者只是名字相同,但void max(int students[])函数里m的变化不会改变主函数里的m , 在主函数里这样改m = max(students);或者干脆把m定义成全局变量,你的问题主要出现在变量的生存期上,参考C语言相关教程的局部变量和全局变量的相关内容,

    推荐阅读