c语言中如何防止输入的格式存在错误,C语言如何避免输入
C語(yǔ)言如何處理輸入
下面這個(gè)題,數(shù)據(jù)的處理很簡(jiǎn)單,方法也很多。但是數(shù)據(jù)的輸入如何處理呢,還要分多行輸入!!
引用標(biāo)題:錯(cuò)誤票據(jù)
某涉密單位下發(fā)了某種票據(jù),并要在年終全部收回。
每張票據(jù)有唯一的ID號(hào)。全年所有票據(jù)的ID號(hào)是連續(xù)的,但I(xiàn)D的開(kāi)始數(shù)碼是隨機(jī)選定的。
因?yàn)楣ぷ魅藛T疏忽,在錄入ID號(hào)的時(shí)候發(fā)生了一處錯(cuò)誤,造成了某個(gè)ID斷號(hào),另外一個(gè)ID重號(hào)。
你的任務(wù)是通過(guò)編程,找出斷號(hào)的ID和重號(hào)的ID。
假設(shè)斷號(hào)不可能發(fā)生在最大和最小號(hào)。
要求程序首先輸入一個(gè)整數(shù)N(N<100)表示后面數(shù)據(jù)行數(shù)。
接著讀入N行數(shù)據(jù)。
每行數(shù)據(jù)長(zhǎng)度不等,是用空格分開(kāi)的若干個(gè)(不大于100個(gè))正整數(shù)(不大于100000)
每個(gè)整數(shù)代表一個(gè)ID號(hào)。
要求程序輸出1行,含兩個(gè)整數(shù)m?n,用空格分隔。
其中,m表示斷號(hào)ID,n表示重號(hào)ID
例如:
用戶(hù)輸入:
2
5?6?8?11?9
10?12?9
則程序輸出:
7?9
如何處理是好呢?求救求救,雖然我有比較麻煩的解決方法。
越簡(jiǎn)單越好。。。貌似是個(gè)很菜的問(wèn)題。
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,忽略大小寫(xiě)
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])?{//超長(zhǎng)行忽略后面內(nèi)容
總結(jié)
以上是生活随笔為你收集整理的c语言中如何防止输入的格式存在错误,C语言如何避免输入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言找出公共子字符串,经典C语言面试题
- 下一篇: 读圣经软件鸽子版v360安卓版(360安