读书人

C语言 初学者!

发布时间: 2013-11-19 22:55:29 作者: rapoo

C语言—— 菜鸟求助!!!!!!!!!!!!!!
#include<stdio.h>
main()
{
int pass=0,fail=0;
int n,i,term,score;
printf("please enter the students number");
scanf("%/d",&n);
printf("please enter the score");
for(i=0;i<n;i++)
{
scanf("%d",&score);
if(score=-1)
{
break;
}
term=term+score;
}
if(score>=60)
{
pass++;
}
else
{
fail++;
}
printf("%d,%d,%d",pass,fail,term/n);
}
编译的时候不问题,运行的时候出现“error C2059: syntax error : '}'
执行 cl.exe 时出错.
[解决办法]


#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;


int main()
{
int pass=0,fail=0;
int n,i,term,score;
term = 0; //初始化
printf("please enter the students number:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("please enter the score:\n");
scanf("%d",&score);
if( score == -1 ) //如果怕写错可以写成if(-1 == score)
{
break;
}
term=term+score;
if(score>=60)
{
pass++;
}
else
{
fail++;
}
printf("%d,%d,%d",pass,fail,term/n);
}

system("pause");
return 0;
}


可以编译运行
[解决办法]
也许你想要的效果是这样的
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;

int main()
{
int pass=0,fail=0;
int n,i,term,score;


term = 0; //初始化
printf("please enter the students number:\n");
scanf("%d",&n);
printf("Students[%d]\n",n);
for(i=0;i<n;i++)
{
printf("please enter the score:\n");
fflush(stdin); //清空输入流
scanf("%d",&score);
if( score == -1 ) //如果怕写错可以写成if(-1 == score)
{
break;
}
term=term+score;
if(score>=60)
{
pass++;
}
else
{
fail++;
}
}
printf("pass[%d],fail[%d],avg[%d]\n",pass,fail,term/n);
system("pause");
return 0;
}


[解决办法]
C语言—— 初学者!
[解决办法]
引用:
#include<stdio.h>
main()
{
int pass=0,fail=0;
int n,i,term,score;
printf("please enter the students number");
scanf("%/d",&n);
printf("please enter the score");
for(i=0;i<n;i++)
{
scanf("%d",&score);
if(score=-1)
{
break;
}
term=term+score;
}
if(score>=60)
{
pass++;
}
else
{
fail++;
}
printf("%d,%d,%d",pass,fail,term/n);
}
编译的时候不问题,运行的时候出现“error C2059: syntax error : '}'
执行 cl.exe 时出错.

syntax error 为语法错误,编译竟然没有找出来,可以通过设置断点打印,锁定出错地点。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

#include<stdio.h>
void main()
{
int pass=0,fail=0;
int n,i,term=0,score;

printf("please enter the students number");
scanf("%d",&n);//here


for(i=0;i<n;i++)
{
printf("please enter the score");//提示输出
scanf("%d",&score);
if(-1 == score)//这个错误很典型,最好改成 -1 == score
{
break;
}else{//这里加上else会更好些

term=term+score;//term没有赋处值!
}

//下面的语句要在for()里才能访问到每个输入时的score
if(score>=60)
{
pass++;
}
else
{
fail++;
}
}



printf("通过人数 %d,未及格人数%d,平均分(取整)%d\n",pass,fail,term/n);
}




嗯嗯,这个程序可以运行,但是结果有点问题。这个问题不是结果不对,而是有点不尽如人意,如果把第18行的printf放到循环之外会好很多!先谢谢你帮我解答,而且答案也很好,可是我还是很想知道我的代码问题出在哪了。麻烦你再看一下我的菜鸟级程序,好不好??

我把你的程序直接粘贴在我的编译器里,是可以编译成功的,编译没有问题。是不是你其他地方弄错了


编译器的问题还是数据库的问题?可是它提示的是语法错误。

先写一个比较小的程序(当然要保证正确),运行一下,看看行不行。
[解决办法]
同学! 如果你想知道你错哪了 首先你应该把你程序最基本的错误改过来,实在太多,改过来在运行看还有没有错误,你这些基本的错误也许就为导致你上面的错误,下面我再你程序里面注释中给你提出来,然后你自己改改
#include<stdio.h>
main()
{
int pass=0,fail=0;
int n,i,term,score; //首先这个地方的term 你一定要给一个初值,你后面再用时系统都不知道他的初值 term=0;
printf("please enter the students number");
scanf("%/d",&n); //这里应该是 scanf("%d",&n); 中间多个斜杠
printf("please enter the score");
for(i=0;i<n;i++)
{
scanf("%d",&score);
if(score=-1) //这里的判定条件因该是 score==-1!! 两个等号,不然就是直接赋值了!
{
break;
}
term=term+score;
}
if(score>=60) //按照你的题意,应该将if和else放在循环里面!
{
pass++;
}
else
{
fail++;
}
printf("%d,%d,%d",pass,fail,term/n);
}


你先把这些改了 在运行试试 原来的代码 根本就不存在找你说的错误 因为基本很多东西都是乱的
[解决办法]
#include<stdio.h>
main()
{
int pass=0,fail=0;
int n=0,i,term=0,score=0;
printf("please enter the students number");
scanf("%d",&n); \ERROR1:你这里多了一个反斜杠
printf("please enter the score");

for(i=0;i<n;i++)
{
scanf("%d",&score);

if(score==-1) \ERROR2:你这里少了一个等号
{
break;
}



if(score>=60)
{


pass++;
}
else
{
fail++;
}


term=term+score;
}
printf("pass:%d\n,fail:%d\n,averge:%d\n",pass,fail,term/n);


while (1);
}

[解决办法]
楼主的代码让人抓狂,建义不要写这样的格式成长。不然别人会找你要精神损失费的。要养成了的风格。
[解决办法]
这改了么 改了又把新错误改出来了

main()
{
int pass=0,fail=0;
int n,i,term=0,score;
printf("please enter the students number");
scanf("%d",n); //原来你这里都是&n 改了 你就把&吃了,怎么运行的了!
printf("please enter the score");
for(i=0;i<n;i++)
{
scanf("%d",&score);
if(score==-1)
{
break;
}
term=term+score;

if(score>=60)
{
pass++;
}
else
{
fail++;
}
printf("%d,%d,%d",pass,fail,term/n); //你这个输出应该总的一个输出吧? 应该放在循环外,按照题意, 看来不美怎么把循环弄懂还是怎么的兄弟,这个放在循环外,再试试
}
}

读书人网 >C语言

热点推荐