C语言新手弱弱的问下我下面这个程序,只能输入数字结束运行,怎么能让它输入字母或者输入标点符号结束呢?

一运行第一次输入字母和符号是能结束的,但是先输入正确的,在输入字母或者符号就会进入死循环
/* Note:Your choice is C IDE */
#include "stdio.h"

struct stu
{
int num;
char name[20];
int yu;
int shu;
};

void main()

{for(;;){

int i,sum;

struct stu man[4]={
{1,"李明",78,98},
{2,"张平",38,95},
{3,"王军",59,78},
{4,"何凡",67,84}
};

printf("请输要查找的学号1到4:");
scanf("%d",&sum);

while(sum<0 || sum>4)
{
printf("输入错误,程序结束\n");
exit(0);
}
for(i=0;i<4;i++){
if (sum==man[i].num){
printf("学号\t姓名\t数学\t语文\n");
printf("%d\t%s\t%d\t%d\n",man[i].num,man[i].name,man[i].yu,man[i].shu);}
}
}

}

第1个回答  2011-09-23
修改了一下你的程序代码,你再试试
void main()
{
for(;;){

//int i,sum;
int i,sum=0; //给个初值0,当输入数据为无效数据时,退出!原因见下面说明
//变量在不赋初值时,默认的是个随机数,多数情况下是0,但也有非零的情况
struct stu man[4]={
{1,"李明",78,98},
{2,"张平",38,95},
{3,"王军",59,78},
{4,"何凡",67,84}
};

printf("请输要查找的学号1到4:");
scanf("%d",&sum);//scanf在输入非数字数据时,不会改变sum的值
//while(sum<0 || sum>4) 这里用while虽然不出错,但意义却不对,要正确使用控制语句
if(sum<1 || sum>4) //你的选项是1-4有效,就要检查输入数据是否在1-4之间,其他无效退出。
{
printf("输入错误,程序结束\n");
exit(0);
}
for(i=0;i<4;i++){
if (sum==man[i].num){
printf("学号\t姓名\t数学\t语文\n");
printf("%d\t%s\t%d\t%d\n",man[i].num,man[i].name,man[i].yu,man[i].shu);}
}
}
}
第2个回答  2011-09-22
因为是用for(;;)所以会陷入死循环,除非输入错误碰到exit(0)程序才退出。
你可以再定义一个char类型的字符,存一个字符,然后用if()判断是否成立,成立后用break;就可以跳出死循环了。本回答被网友采纳
第3个回答  2011-09-23
#include <stdio.h>
#define N 100
void main()
{
int i,k,m,n,num[N],*p;
printf("请输入人数.\n");
scanf("%d",&n);
if(n>0&&n<=32767)
{
p=num;
for (i=0;i<n;i++) *(p+i)=i+1;//从1到n为每个人编号
i=0; //i为每次循环时的计数变量
k=0; //k为123报数时代计数变量
m=0; //m为退出的人数
while(m<n-1) //退出的人数比n-1少时做循环
{
if(*(p+i)!=0) k++;
if (k==3) //退出的人都值变为0
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0; //报道尾后i恢复为0
}
while (*p==0) p++;
printf("%d\n",*p);
}
else printf("输入错误\n");
}

第4个回答  2011-09-23
char c;
while((c=getchar())=‘字母’)
{
。。。;
exit(0);
}

c语言程序怎么实现"输入结束标志为EOF"?用scanf。急!
while(~scanf("%d",&a))两个是一样的,都是以文件尾(EOF)为结束标志 追问 为什么while(scanf("%d",&a)!=EOF)要打两个Ctrl+Z才会结束,而while (cin>>a)打了一个Ctrl+Z就会结束?谢谢. 本回答由提问者推荐 举报| 答案纠错 | 评论 3 2 其他回答 普通青年 while(scanf("%d")!=EOF);文艺青年 wh...

c语言中如何判断输入的是字符还是数字
可以使用代码进行判断:include<stdio.h> intmain(){ charc;while(scanf("%c",&c)!=EOF){ getchar();if(c>='0'&&c<='9')printf("%c是数字\\n",c);elseif(c>='a'&&c<='z'||c>='A'&&c<='Z')printf("%c是字母\\n",c);elseprintf("%c是特殊字符\\n",c);} return0;}...

如何用C语言创建一个按钮,按下这个按钮后,相当于从键盘录入相应的字符...
弱弱的问一句 点击这个按钮后, 是不是这个按钮获取了焦点 ,键盘消息传递给了按钮,其实传到了视图里面,那你的主窗口肯定拿不到消息了

弱弱的问句:C语言能进行图形界面(GUI)开发吗
1、当然可以,C的gui编程基本上是学习操作系统的API调用了,可以看看Windows API编程中的与窗体相关部分,Linux中也是类似的,建议在Windows中学习,毕竟Linux用作服务器的更多,很多是不带有图形化界面和相关类库的。2、另外,用C去做gui程序真的不是一个很好的选择,明白基本原理,能够做一些简单程序即...

怎样用c语言编一个程序,使其只要运行即获得管理员权限。(在win7系统...
新建“记事本”,copy 如下内容:Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\\*\\shell\\runas]="管理员取得所有权""NoWorkingDirectory"=""[HKEY_CLASSES_ROOT\\*\\shell\\runas\\command]="cmd.exe \/c takeown \/f \\"%1\\" && icacls \\"%1\\" \/grant administrators:F""IsolatedCommand...

C语言。。。输入三个数求是否能构成三角形,能,求出面积。。。_百度知...
if(a>0 && b>0 && c>0 && a+b>c && b+c>a && a+c>b) { printf("输入的三个数可以组成三角形,其面积为:"); sum=(a+b+c)\/2; area=sqrt(sum*(sum-a)*(sum-b)*(sum-c)); printf("%lf\\n",area); } else { printf("输入的三个数不能组成三角形!\\n"); } } 追问 看看哪错...

弱弱的问一下大佬们:单片机或PLC编程会用到C语言中的文件操作知识...
单片机和PLC编程都不用对文件操作的,那是C语言的事。

相似回答