❶ c語言 念數字
你一共提出三個問題:
1、為什麼不寫成int?
此處也可以寫成int。
如果寫成int型,還要求出各位上的數字是多少,才能將數字轉換為拼音。
寫成char型,省去了轉換各位數字的環節,可以用str[i]任意取出各位上的數字。兩位,也方便負號的處理。
2、為什麼是*?
如果不加*,只能定義一個字元數組(或叫字元串),如char num[]="yi";
加上一個*後,char *num[]跟不加*相比,①num已經變成字元串數組;②num變成了指針數組,num[0]、num[1]等各個元素已經成為指向「ling」、「yi」的地址,而「ling」等數據則放在常量區。
根據num[0]指向「ling」,num[1]指向「yi」,num[2]指向「er」……
這樣可以通過num[i],很方便地找到對應的數字i的漢語拼音。
3、str[0]-'0'是什麼意思?
先看str[0]是什麼,它是你輸入的整數的第一個數字,比如它是3,在這里程序是把3當作字元'3'處理的(原因就是變數str的類型為char型),在儲存這個'3'時,實際上儲存的是字元'3'的asc碼,即51。而字元'0'的asc碼是48,str[0]-'0'=51-48=3。這樣,num[str[0]-'0']=num[3],如前面所述,就很容易找到3對應的拼音「san」了。
有什麼問題請留言。
❷ 怎樣用C語言輸入若干個數字
可以定義一個大數組用以來接收輸入的數據,數據接收時記錄輸入數據的個數,然後根據個數輸出結果!
❸ c語言中怎麼按要求輸入數字
你平時怎麼輸入就怎麼輸。
代碼如下:
#include
<stdio.h>
void
main()
{
char
c;
scanf("%c",&c); //像你平時輸入*一樣。先按shift再加上數字8(注意:不是數字鍵盤的8).
printf("%c\n",c);
}
能解決問題還請採納,謝謝
❹ C語言編程 做一個設計一個兒童算數教學程序:「咪咪數學寶」
補充:看來有人不明白,得先建題庫文件啊,然後才能輸入文件路徑捆綁題庫,比如我上面的演示中,c:\qs01.txt,你首先要先在c盤創建一個txt文件,然後在裡面打字「題目 空格 答案 回車」這樣輸入。有了庫文件程序才能讀啊
比如:(你如果自己能修改我常量里的字元長度,不光數學,語文,英語題庫都可以)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#defineqsLen100//問題最大長度
#defineansLen50//答案最大長度
#defineqssSize2//題庫種類數量我測試只定義了小學和幼兒兩個問題庫,需要自己添加
#defineqssNameSize10//題庫名稱長度
#defineqssPathSize100//題庫路徑長度
typedefstructqs
{
intid;//問題編號
intcont;//題庫問題數量,只有頭結點存儲該值
charqs[qsLen];//問題
charans[ansLen];//答案
structqs*next;
}QS;
voidnewQss(charqssName[][qssNameSize],charqssPath[][qssPathSize]);//根據輸入,新建問題分類信息
intshowMenu(charqssName[][qssNameSize]);//顯示題庫菜單,返回用戶選擇的題庫類別下標
QS*readFile(char*filePath);//讀取問題庫文件,生成鏈表,返回頭節點
QS*randQs(QS*qsHead,intqsNum);//從題庫隨機抽取題目,參數:題庫頭節點、題庫總題目數。返回:抽取的題目節點
intmain()
{
intlbNum,qsNum,cnt,i,correct,error;
charquestion[qsLen],answer[ansLen],input[ansLen];
charqssName[qssSize][qssNameSize],qssPath[qssSize][qssPathSize];//qssName:題庫分類名稱;qssPath:題庫文件路徑
QS*qsHead=NULL,*qsSelect;
srand(time(NULL));
newQss(qssName,qssPath);
lbNum=showMenu(qssName);
printf("
--開始載入題庫--
");
qsHead=readFile(qssPath[lbNum]);
qsNum=qsHead->cont;
printf("題庫共%d條題目,請輸入需要提取的題目數量:",qsNum);
while(1)
{
scanf("%d",&cnt);
if(cnt>0&&cnt<=qsNum)
break;
}
printf("
--開始從題庫中隨機抽取%d條問題--
",cnt);
correct=0;
error=0;
for(i=0;i<cnt;i++)
{
qsSelect=randQs(qsHead,qsNum);
if(qsSelect!=NULL)
{
strcpy(question,qsSelect->qs);
strcpy(answer,qsSelect->ans);
printf("第%d題、%s?答案:",i+1,question);
scanf("%s",input);
if(!strcmp(answer,input))
{
printf("回答正確!
");
correct++;
}
else
{
printf("回答錯誤!正確答案是%s
",answer);
error++;
}
}
}
printf("共%d條問題,正確回答%d條,正確率%d%%
",cnt,correct,correct*100/cnt);
return0;
}
QS*randQs(QS*qsHead,intqsNum)
{
intn;
n=rand()%qsNum+1;
while(qsHead->next!=NULL)
{
if(qsHead->next->id==n)
returnqsHead->next;
qsHead=qsHead->next;
}
returnNULL;
}
voidnewQss(charqssName[][qssNameSize],charqssPath[][qssPathSize])
{
inti;
printf("--開始錄入題庫分類信息--
");
for(i=0;i<qssSize;i++)
{
printf("
請輸入題庫1的名稱及題庫文件路徑
名稱(不超%d個字元):",qssNameSize);
scanf("%s",qssName[i]);
printf("路徑(不超%d個字元):",qssPathSize);
scanf("%s",qssPath[i]);
}
}
intshowMenu(charqssName[][qssNameSize])
{
inti;
printf("
當前題庫分類為:
");
for(i=0;i<qssSize;i++)
printf("%d、%s
",i+1,qssName[i]);
printf("請選擇你要提取的題庫類別(輸入數字):");
scanf("%d",&i);
returni-1;
}
QS*readFile(char*filePath)
{
FILE*fp;
charqsSave[qsLen],ansSave[ansLen];
QS*qsHead=NULL,*qsTail=NULL;
if((fp=fopen(filePath,"rt+"))==NULL)
{
printf("!");
returnNULL;
}
qsHead=(QS*)malloc(sizeof(QS));
qsHead->next=NULL;
qsHead->cont=0;
while(fscanf(fp,"%s%s",qsSave,ansSave)!=-1)
{
qsHead->cont++;
QS*qsNew=(QS*)malloc(sizeof(QS));
qsNew->next=NULL;
qsNew->id=qsHead->cont;
strcpy(qsNew->qs,qsSave);
strcpy(qsNew->ans,ansSave);
if(qsHead->next==NULL)
qsHead->next=qsNew;
else
qsTail->next=qsNew;
qsTail=qsNew;
}
returnqsHead;
}
❺ c語言中如何從鍵盤上得到數字
用scanf語句。
其實scanf是一個函數,格式是:
1、輸入整型數:
scanf("%d",&a);
式中%d是整型數的格式符,a是用int a;聲明過的整型數變數名。
2、輸入浮點數:
scanf("%f",&b);
式中%f是浮點數的格式符,b是用float b;聲明過的浮點數變數名。
然後,系統就會等待你從鍵盤上輸入一個數字。輸入數字完畢按回車鍵結束輸入。
不知道是不是解決了你的問題,如果沒有請留言。
❻ C語言中怎麼輸入數字和字母
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
❼ c語言如何輸入數字字元串
char s[100];
可以用scanf("%s",&s);
也可以用gets(s);
還可以用循環
for(int i=0;(s[i]=getchar())>='0'&&s[i]<='9';i++); s[i]='\0';