c语言中如何防止输入的格式存在错误,C语言如何避免输入
C語言如何處理輸入
下面這個題,數(shù)據(jù)的處理很簡單,方法也很多。但是數(shù)據(jù)的輸入如何處理呢,還要分多行輸入!!
引用標(biāo)題:錯誤票據(jù)
某涉密單位下發(fā)了某種票據(jù),并要在年終全部收回。
每張票據(jù)有唯一的ID號。全年所有票據(jù)的ID號是連續(xù)的,但ID的開始數(shù)碼是隨機選定的。
因為工作人員疏忽,在錄入ID號的時候發(fā)生了一處錯誤,造成了某個ID斷號,另外一個ID重號。
你的任務(wù)是通過編程,找出斷號的ID和重號的ID。
假設(shè)斷號不可能發(fā)生在最大和最小號。
要求程序首先輸入一個整數(shù)N(N<100)表示后面數(shù)據(jù)行數(shù)。
接著讀入N行數(shù)據(jù)。
每行數(shù)據(jù)長度不等,是用空格分開的若干個(不大于100個)正整數(shù)(不大于100000)
每個整數(shù)代表一個ID號。
要求程序輸出1行,含兩個整數(shù)m?n,用空格分隔。
其中,m表示斷號ID,n表示重號ID
例如:
用戶輸入:
2
5?6?8?11?9
10?12?9
則程序輸出:
7?9
如何處理是好呢?求救求救,雖然我有比較麻煩的解決方法。
越簡單越好。。。貌似是個很菜的問題。
C
輸入
分享到:
------解決方案--------------------
僅供參考//文件1中的內(nèi)容排序并去重,結(jié)果保存到文件2中
#include?
#include?
#include?
#define?MAXCHARS?128??????//能處理的最大行寬,包括行尾的\n和字符串尾的\0
int?MAXLINES=10000,MAXLINES2;
char?*buf,*buf2;
int?c,n,hh,i,L;
FILE?*f;
char?ln[MAXCHARS];
int?ignore_case=0;
int?icompare(const?void?*arg1,const?void?*arg2)?{
return?stricmp((char?*)arg1,(char?*)arg2);
}
int?compare(const?void?*arg1,const?void?*arg2)?{
return?strcmp((char?*)arg1,(char?*)arg2);
}
int?main(int?argc,char?**argv)?{
if?(argc<3)?{
printf("Unique?line.?Designed?by?zhao4zhong1@163.com.?2012-08-20\n");
printf("Usage:?%s?src.txt?uniqued.txt?[-i]\n",argv[0]);
return?1;
}
if?(argc>3)?ignore_case=1;//若存在命令行參數(shù)3,忽略大小寫
f=fopen(argv[1],"r");
if?(NULL==f)?{
printf("Can?not?find?file?%s!\n",argv[1]);
return?1;
}
buf=(char?*)malloc(MAXLINES*MAXCHARS);
if?(NULL==buf)?{
fclose(f);
printf("Can?not?malloc(%d?LINES*%d?CHARS)!\n",MAXLINES,MAXCHARS);
return?2;
}
n=0;
hh=0;
i=0;
while?(1)?{
if?(NULL==fgets(ln,MAXCHARS,f))?break;//
hh++;
L=strlen(ln)-1;
if?('\n'!=ln[L])?{//超長行忽略后面內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的c语言中如何防止输入的格式存在错误,C语言如何避免输入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言找出公共子字符串,经典C语言面试题
- 下一篇: 读圣经软件鸽子版v360安卓版(360安