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

一运行第一次输入字母和符号是能结束的,但是先输入正确的,在输入字母或者符号就会进入死循环/*Note:YourchoiceisCIDE*/#include"stdio.h... 一运行第一次输入字母和符号是能结束的,但是先输入正确的,在输入字母或者符号就会进入死循环
/* 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);}
}
}

}
展开
 我来答
kaixingui2012
2011-09-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6419万
展开全部
修改了一下你的程序代码,你再试试
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);}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w9xhcn
2011-09-22 · TA获得超过828个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:185万
展开全部
因为是用for(;;)所以会陷入死循环,除非输入错误碰到exit(0)程序才退出。
你可以再定义一个char类型的字符,存一个字符,然后用if()判断是否成立,成立后用break;就可以跳出死循环了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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");
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乔德争
2011-09-23 · 超过23用户采纳过TA的回答
知道答主
回答量:160
采纳率:0%
帮助的人:75.1万
展开全部
char c;
while((c=getchar())=‘字母’)
{
。。。;
exit(0);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式