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);}
}
}
} 展开
/* 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);}
}
}
} 展开
展开全部
修改了一下你的程序代码,你再试试
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);}
}
}
}
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);}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为是用for(;;)所以会陷入死循环,除非输入错误碰到exit(0)程序才退出。
你可以再定义一个char类型的字符,存一个字符,然后用if()判断是否成立,成立后用break;就可以跳出死循环了。
你可以再定义一个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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char c;
while((c=getchar())=‘字母’)
{
。。。;
exit(0);
}
while((c=getchar())=‘字母’)
{
。。。;
exit(0);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询