❶ c语言这个程序为何电话号码ph用int 和"%d"输入输出就不对而用 char和"%s"就可以,电话不全是数字吗
如果电话号码小的话(8位)
scanf("%s%s%d",c[i].name,c[i].address,c[i].ph); 应该是
scanf("%s%s%d",c[i].name,c[i].address,&c[i].ph);
输出没错
❷ 编写一个C#程序,判断输入的一串字符是否符合电话号码的格式
package practice;
import java.util.*;
public class Phone
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String phone = ""; //接收输入的电话号码
int index = 0; //接收电话号码中‘-’的索引
boolean number = true;
System.out.print("请输入电话号码:");
phone = input.next();
//验证电话号码的位数是否正确(XXXX-XXXXXXXX)
if(phone.length()!=13)
{
System.out.println("电话号码位数不正确...");
}
else
{
//先验证电话号码中是否有‘-’如果有,再验证‘-’的位置是否正确(xxxx-xxxxxxxx)
index = phone.indexOf('-');
if(index==0||index!=4)
{
System.out.println("电话号码格式不正确!");
}
else
{
//验证区号和电话号码是否都为数字
String leftphone = phone.substring(0,index); //截取区号
String rightphone = phone.substring(index+1); //截取电话号码
//通过foreach验证
for(int i=0;i<leftphone.length();i++)
{
char a = leftphone.charAt(i);
if(a<'0'||a>'9') //比较的是内存中的AS码
{
number = false;
break;
}
}
for(int i=0;i<rightphone.length();i++)
{
char a = rightphone.charAt(i);
if(a<'0'||a>'9')
{
number = false;
break;
}
}
if(number==true)
System.out.println("你的电话号码为:"+phone);
else
System.out.println("电话号码存在非数字...");
}
}
}
}
❸ 谁有C语言判断电话号码的合法性的源代码
比较复杂 ,稍等吧
7/8位需要判断首字符,我能为0/1 ?
这句怎么理解?
68252000 不合法?
❹ c语言编程题要求用函数和指针求判断一个字符串是否为手机号,不 (手机要是11为什么全为阿拉伯字母)
#include<stdio.h>
#include<string.h>
int istelnum(char *num)
{
int i;
for(i=0;num[i];i++)
{
if(!(num[i]>='0'&&num[i]<='9'))
return 0;
}
return 11==strlen(num);
}
int main()
{
char num[16];
printf("请输入手机号:");
gets(num);
if(istelnum(num))
puts("是有效的手机号\n");
else
puts("不是有效的手机号\n");
return 0;
}
❺ c语言关于手机号码的问题 检查我的代码的问题
把整数字符和整数搞混了,比如你的if(st[0]!=1)就应该写成if(st[0]!='1'),记得加上单引号.
采纳哦
❻ c语言编程 建立一通讯录,输入姓名,电号码,住址等信息,然后对通信...
#include<stdio.h>
#include<string.h>
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20];
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void deleted();
int main()
{
int m;
creat();
while(1)
{
printf("\n\n添加,请按1");
printf("\n查找,请按2");
printf("\n修改,请按3");
printf("\n删除,请按4");
printf("\n输出,请按5");
printf("\n退出,请按0\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: deleted();
break;
case 5: output();
break;
case 0: break;
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
return 0;}
void creat()
{
struct person one;
long s1;
printf("\n请输入通讯簿名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\n不能建立通讯簿!");
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");
printf("\n请输入姓名、电话号码及住址(以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯簿!");
}
printf("\n\n%20s\n","通 讯 簿");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯簿!");
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯簿!");
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!");
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n请输入新姓名、电话号码及住址:");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
void deleted()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!");
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已查到,记录为");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n确实要删除,按1;不删除,按0:");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
}
else
printf("\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
在vc6.0 上可以使用,希望对你有用
❼ 用C语言写一段程序判断手机号码是移动还是连通谢谢各位!要快呀!!
个人认为用if就可以,因为只有移动和联通两项,取手机号前三位放在整型变量a中
if(a==134||a==135||a==136||a==137||a==138||a==139||a==150||a==158||a==159)
printf("这是移动号");
else if
(a==130||a==131||a==132||a==133||a==153||a==156)
printf("这是联通号");