| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:[求助]函数的值该如何返回呢??
只看楼主 加入收藏
cnrainboy
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2006-8-27
收藏
 问题点数:0 回复次数:4 
[求助]函数的值该如何返回呢??

我用函数写了一段代码,用以判断用户的姓名是否合法,然后返回进行下一步,但是,出现了无法正确返回的情况。
不知道该如何进行。希望大家再帮我看看。改怎么改呢?

当姓名为正确时(不包括数字,特殊字符)进行性别的处理。但当姓名输入不正确的时候,返回重新输入。但我这么写,总是返回重新输入。什么原因呢。另外。如何判断字符为中文呢。因为姓名为中文是合法的。

局部代码如下:

#include<stdio.h>
#include<string.h>

char user_name(char);
//********信息结构体**********//
struct chanteur
{
int id; //序号
char name[10]; //姓名
char sex; //性别
int age; //年龄
float score[N]; //分数
};

void main()
{
。。。。
do
printf("\n请输入歌手的姓名:");
while(user_name(name)==0);
/*姓名*/
fflush(stdin);

printf("\n请输入歌手的性别:"); /*性别*/
。。。。。

}

/*************姓名判断函数****************/

char user_name(char name[10]) {
struct chanteur info;
char i,*p;

fflush(stdin);
gets(info.name);
p=name;
for(i=0;i<10;i++)
{
if(*(p+i)>='a'&&*(p+i)<='z'||*(p+i)>='A'&&*(p+i)>='Z'||*(p+i)>='\0')
{
if(*(p+i)=='\0')

return 1;
else ;

}
else
{
printf("输入错误,请返回重新输入!!");
return 0;

}

}

搜索更多相关主题的帖子: 函数 姓名 char include name 
2006-09-14 23:25
xixigzcn
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-9-2
收藏
得分:0 

if(*(p+i)>='a'&&*(p+i)<='z'||*(p+i)>='A'&&*(p+i)>='Z'||*(p+i)>='\0')
{
if(*(p+i)=='\0') //这里的if语句作用是什么?

return 1;
else ;

}
else
{
printf("输入错误,请返回重新输入!!");
return 0;

}
******************************************************************************************
你改为:
if(*(p+i)>='a'&&*(p+i)<='z'||*(p+i)>='A'&&*(p+i)<='Z'||*(p+i)>='\0') return 1;
else {
printf("输入错误,请返回重新输入!!");
return 0;

}








2006-09-15 08:19
cnrainboy
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2006-8-27
收藏
得分:0 
以下是引用xixigzcn在2006-9-15 8:19:05的发言:

if(*(p+i)>='a'&&*(p+i)<='z'||*(p+i)>='A'&&*(p+i)>='Z'||*(p+i)>='\0')
{
if(*(p+i)=='\0') //这里的if语句作用是什么?

return 1;
else ;

}
else
{
printf("输入错误,请返回重新输入!!");
return 0;

}
******************************************************************************************
你改为:
if(*(p+i)>='a'&&*(p+i)<='z'||*(p+i)>='A'&&*(p+i)<='Z'||*(p+i)>='\0') return 1;
else {
printf("输入错误,请返回重新输入!!");
return 0;

}








字符串数组最后不都是以'\0'结束的吗,如果不加 if(*(p+i)=='\0') 这一句,判断就出问题.(无论对错都重新返回输入) 但是,现在依旧无法正确返回.不解

2006-09-15 11:23
冰山一角
Rank: 1
等 级:新手上路
帖 子:385
专家分:0
注 册:2006-9-5
收藏
得分:0 

做程序员太乏味?来这里www..cn试试吧,你肯定能找到乐趣!
2006-09-15 14:46
晔非雪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-9-16
收藏
得分:0 

为什么我用指针返回多个函数值不行?
且在printf函数中调用指针P对不对?请指点一下?
int *count3(int score[],int n,int *p) /*统计分数段的函数*/
{
int s[5]={0,0,0,0,0};
int i;
printf("优 良 中 及格 不及格\n\n");
for(i=0;i<n;i++)
{
if(score>=90) s[0]++;
else if(score>=80) s[1]++;
else if(score>=70) s[2]++;
else if(score>=60) s[3]++;
else s[4]++;

}return p;

}
main()
{
int *p;
int s[5]={98,87,76,65,54}
p=count(s,5,p);
printf("%d%d%d%d%d",*p,*(p++),*(p++),*p(++)*p(++);
}


绿色的叶飘飞在头上的天空, 我行走在别人铺就的路上.
2006-09-18 18:43
快速回复:[求助]函数的值该如何返回呢??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023663 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved