C语言习题求助,编译通过,运行错误,高分求解
代码有问题,能通过编译,但运行就会有问题。。
问题出现在scanf("%d",x);少了取地址符&
请改成scanf("%d",&x);
#include int main(){ int x=0; scanf("%d",&x); int a=x/100; int c=x%10; int b=x/10%10; printf("%d
",a+b*10+c*100); return 0;} 请采纳。。。谢谢
以下是一个框架,实现了部分功能,由于时间有限,请楼主补充其余未实现的函数。
#include
#include
#include
void MENU();
void chengjiluru();
void chengjixiugai();
void chengjichaxun();
void pingjunchengjipaixu();
void banjichengjidan();
void bujigekemujixueshengmingdan();
int lookup(int,int,int,char xinming[10]);
struct xueshengxinxi
{
int xuenian;//学年,为四位数的年份,如2014
int xueqi;//学期,为1表示上学期,为2表示下学期
int banji;//班级,如1表示1班
char xinming[20];
int shuxue;//数学成绩
int yingyu;//英语成绩
int jisuanji;//计算机成绩
int wuli;//物理成绩等,读者可根据需要增减科目
int all;//总成绩
float ave;//平均成绩
int eff;//记录有效性,省去在文件中删除记录的麻烦,1为有效,0为无效。
};
void main()
{
FILE *fp;
if((fp=fopen("mytxt.dat","ab"))==NULL)
{
printf("cannot open file
");
exit(0);
}
MENU();
}
void MENU()
{
int choose;
while(1)
{
system("cls");//清屏函数,清除屏幕所有内容
printf("
————————————————程序管理系统主页面———————————————
");
printf(" 菜单:
");
printf(" 1.成绩录入
");
printf(" 2.成绩修改
");
printf(" 3.成绩查询
");
printf(" 4.平均成绩排序
");
printf(" 5.班级成绩单
");
printf(" 6.不及格科目及学生名单
");
printf(" 7.退出系统
");
printf("请输入数字1—7,选择菜单:
");
scanf("%d",&choose);
if(choose==1)
{
chengjiluru();
}
else if(choose==2)
{
chengjixiugai();
}
else if(choose==3)
{
chengjichaxun();
}
else if(choose==4)
{
pingjunchengjipaixu();
}
else if(choose==5)
{
banjichengjidan();
}
else if(choose==6)
{
bujigekemujixueshengmingdan();
}
else
break;//退出循环
}
}
void chengjiluru()//成绩录入
{
FILE *fp;
struct xueshengxinxi xinxi;
int xuenian,xueqi,banji,exist;
if((fp=fopen("mytxt.dat","ab"))==NULL)//用二进制文件比用文本文件读取数据更容易。
{
printf("cannot open file
");
exit(0);
}
system("cls");
printf("请输入学期(包括学年和第几学期,如2014 1表示2014第一学期
");
scanf("%d%d",&xuenian,&xueqi);
printf("请输入班级(如输入1,则表示1班)
");
scanf("%d",&banji);
printf("请输入%d班%d学年第%d学期的学生姓名
",banji,xuenian,xueqi);
getchar();//吃掉一个换行符,使gets函数读入姓名。下同。
gets(xinxi.xinming);
while(xinxi.xinming[0]!='#')
{
xinxi.xuenian=xuenian;
xinxi.xueqi=xueqi;
xinxi.banji=banji;
exist=lookup(xinxi.xuenian,xinxi.xueqi,xinxi.banji,xinxi.xinming);
if(exist==1)
{
printf("error!
");
printf("输入任何字符返回主菜单
");
getchar();
}
printf("请输入%d班%d学年第%d学期的学生%s的数学、英语、计算机、物理成绩
",banji,xuenian,xueqi,xinxi.xinming);
scanf("%d%d%d%d",&xinxi.shuxue,&xinxi.yingyu,&xinxi.jisuanji,&xinxi.wuli);
xinxi.all=xinxi.shuxue+xinxi.yingyu+xinxi.jisuanji+xinxi.wuli;
xinxi.ave=xinxi.all/4.0;
xinxi.eff=1;
fwrite(&xinxi,sizeof(struct xueshengxinxi),1,fp);
getchar();
printf("请输入%d班%d学年第%d学期的学生姓名
",banji,xuenian,xueqi);
gets(xinxi.xinming);
}
fclose(fp);
}
void chengjixiugai()//成绩修改
{
}
void chengjichaxun()//成绩查询
{
FILE *fp;
struct xueshengxinxi xinxi;
int xuenian,xueqi,banji;
char xinming[20];
if((fp=fopen("mytxt.dat","rb"))==NULL)
{
printf("cannot open file
");
exit(0);
}
system("cls");
printf("请输入学年,学期,班级,如2014 1 2
");
scanf("%d%d%d",&xuenian,&xueqi,&banji);
printf("请输入学生姓名
");
getchar();
gets(xinming);
while(!feof(fp))
{
fread(&xinxi,sizeof(struct xueshengxinxi),1,fp);
if(xinxi.xuenian==xuenian&&xinxi.xueqi==xueqi&&xinxi.banji==banji&&strcmp(xinxi.xinming,xinming)==0)
{
system("cls");
printf("学生信息如下:
学年:%d
学期:%d
班级:%d
姓名:%s
数学成绩:%d
英语成绩:%d
计算机成绩:%d
物理成绩:%d
总成绩:%d
平均分:%.1f
",xinxi.xuenian,xinxi.xueqi,xinxi.banji,xinxi.xinming,xinxi.shuxue,xinxi.yingyu,xinxi.jisuanji,xinxi.wuli,xinxi.all,xinxi.ave);
getchar();
}
}
fclose(fp);
}
void pingjunchengjipaixu()//平均成绩排序
{
}
void banjichengjidan()//班级成绩单
{
}
void bujigekemujixueshengmingdan()//不及格科目及学生名单
{
}
int lookup(int xuenian,int xueqi,int banji,char xinming[10])//查看是否已存储某学生某学期的成绩
{
return 0;
}
Warning 警告类型错误有很多种。例如:(1)、虽然定义了某个变量,但是没有对其是否成功初始化就使用、(2)、把赋值符号的等于(=)写成了逻辑相等(==),等等。
例如对于(1)而言:
#include <stdlib.h> /* malloc( ) 函数原型在此头文件中定义 */
void main( )
{
char * p ;
p = (char *)malloc(10000)*sizeof(char) ; /* 为指针变量 p 动态分配内存 */
if( p == NULL ) /* 内存分配失败,返回 NULL */
{ /* 该段代码用于判断是否为指针变量 p 成功分配到内存,是必不可少的 */
printf("Memory allocation failured !\n") ;
exit(1) ; /* 若内存分配失败,退出应用程序,否则的话,严重的话,就有可能使系统崩溃!!! */
}
strcpy(p, "This is a test string") ; /* 内存分配成功,将字符串的内容复制到 p 中 */
}
例如:再对于(2)而言:
void main( )
{
int num ;
scanf("%d", &num) ;
if( num == 10 )
printf("You input number is: 10 !\n" ) ;
else
printf("You input number is not 10 !\n" ) ;
}
但是如果在这个程序中,把双等号:== 误写成了:=,那么该语句就变成了:if( num = 10 )
那么该语句产生的效果就是:无论你在 scanf( ) 语句中输入任何数字(任意的正数也好、负数也好),程序总是把 10 这个整数赋给变量 num,那么其逻辑表达式的值总为 1,所以则该程序的运行结果总是:You input number is: 10。
像这样的程序错误都属于 Warning 错误,在编译的时候是发现不了的,只有到运行程序的时候,才会发现程序的运行结果不正确。
什么情况,发出来看看
c语言文件编译正确无法运行 提示运行 终止
有可能是你的编译器的问题,或者是你程序出现死循环,你可以检查检查,或者换个编译器试试。如果身边有高手,让他们帮帮你!!
用C语言求解一元二次方程的解,为什么编译什么的都过了,就是运行的结果...
程序修改为:include<stdio.h> include<math.h> \/\/一元二次方程求解 int main(){ double a,b,c;double delta;double x1,x2; \/*变量定义放在一起! *\/ printf("请输入一元二次方程的系数a,b,c\\n");getchar(); \/*这一句不是必须的! *\/ scanf("lf,%lf,%lf\\n"...
C语言里程序编译无误但运行会弹出程序已停止运行是为什么
3>数据类型不符,问题和第二个类似,例如在声明变量时声明为int在输出变量时却用了%lld,就会造成因数据类型不符而导致的溢出。编译器错误 部分编译器由于所使用的标准不同(例如在一台机器上使用的可能是C99标准,而另一台机器上使用的是C11标准),或是因为编译器链接库的损坏,在少数情况下也可能...
C语言的运行出现不了的问题是什么问题??
C语言代码运行不出现象可能有很多原因,以下是一些常见的原因和解决方法:编译错误:代码中存在语法错误或类型错误,导致编译失败。可以通过编译器的错误提示信息来定位错误,逐一修正后重新编译。运行错误:代码编译成功,但在运行时出现错误,如数组越界、空指针、除零等错误。可以通过调试工具或打印调试信息...
C语言编程调试后没有错误但是却无法运行是怎么回事?
无法运行可能遇到的问题:编译没错,但是运行后弹出内存相关报错---》有逻辑错误,或者内存调用错误 运行直接闪退---》有可能该程序无任何执行结果输出语句,或者使用编译器(or IDE)与操作系统不兼容 暂时只能想起这么多了。
求c语言大神帮忙差错- -编译成功但是运行不出结果
include<stdio.h>#include<math.h>#include<conio.h>int main(){ double a,b,c,q; int i; \/\/循环变量最好是整数! b=28.178; \/\/循环中会将c替换b,这里只是给个初值 q=62.525*3.14\/180;\/\/同上,不知道是不是理解的对 for(i=0;i<11;i++) { a=2.5; c=sqrt...
c语言程序通过编译,运行时提示 core dumped
这应该是linux下面按照c99标准编写的代码,不然在c89标准的编译器下是无法通过编译的。linux下的段错误:segmentation fault (core dumped)和windows下的运行时错误道理是一样,一般都是内存被踩访问越界了导致。肯定是代码的某处逻辑有问题,访问了野指针啊之类的。
c语言程序通过编译,运行时提示 core dumped
;int people[peopleNumber];for(i=0;i<=number;i++){for(count=0;count*peopleNumber>i;count++){people[i-peopleNumber*count]=i;}}for(j=0;j<=peopleNumber;j++){if (people[j]=number)printf("%d",people[j]);}return 0;} 运行结果:15 88888888888888888希望可以帮助到你!
C语言编译成功但生成失败,先前明明可执行,一下子就有错误了
1编译阶段,执行的是对单个文件的转换,从源代码转换成二进制文件。2链接阶段,将每个源文件转成的二进制文件,及相关的系统库文件共同打包生成可执行文件。3从定义上可以看出,链接阶段,出现错误有两种可能:1)函数中引用了不存在的函数。2)编译环境有问题,导致ld出错。
C语言编译链接通过但无法运行,显示“0x004013e4”指令引用的“0小37...
2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护 3、系统加载的程序或者系统正在运行的程序之间有冲突,尤其是部分杀毒软件监控程序 4、系统本身存在漏洞,导致容易受到网络攻击。5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误……6...