❶ 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("這是聯通號");