當前位置:首頁 » 編程語言 » c語言解惑

c語言解惑

發布時間: 2022-02-15 21:13:37

A. c語言學習問題,高手進來解惑,不勝感激!

同意樓上的觀點,很多初學者一位能聽懂就行拉,很少上機實踐,就像學游泳只聽理論不下水,學完之後還是不會游啊。

建議你可以首先把課本上的例子敲一遍,
邊敲邊總結人家是按照什麼順序寫的,
想想一個程序的流程。
然後同樣的題目自己再做一遍,
找找錯誤,
總結經驗。

然後找些簡單的題目來做,
有簡單到容易。
前提是語法已經掌握差不多。
至於演算法什麼的,
因為初學者一般也遇不到什麼特別難的題
自己編程之前先在腦子里把解決方法找出來就行。
當達到一定程度的時候,
對於程序的調試也很重要,
自己要試著去解決編譯和運行中出現的錯誤。
當然,
這對於你來說是後話。

一句話,多練練!
加油!

B. 《C語言解惑:指針、數組、函數和多文件編程》pdf下載在線閱讀,求百度網盤雲資源

《C語言解惑:指針、數組、函數和多文件編程》(劉振安)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:

提取碼:l5c4

書名:C語言解惑:指針、數組、函數和多文件編程

作者:劉振安

出版社:機械工業出版社

出版年份:2016-12-1

頁數:443

C. C語言程序 !達人解惑!

#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>

struct book{ //教材信息
char number[20]; //教材編號
char bookname[20]; //書名
int count; //數目
int price; //價格
char zhuanye[20]; //專業
char author[20]; //作者
char chubanshe[20]; //出版社
char beizhu[100]; //備注
struct book *next;
};

void page_title(char *title); //菜單表頭
struct book *creat(); //錄入教材信息
void print(struct book *head); //顯示教材信息
void save(struct book *head); //保存教材信息到文件
struct book *openfile(); //打開文件
void namesort(struct book *head); //按書名排序
void chubanshesort(struct book *head); //按出版社排序
void booknamesearch(struct book *head); //查詢函數
struct book *add(struct book *head); //增加記錄
struct book *delet(struct book *head); //刪除記錄
struct book *change(struct book *head); //修改記錄
int key(); //密碼驗證

void page_title(char *title) //菜單表頭
{
system("cls"); //清除屏幕
printf(" =========== 教材管理系統 ===========\n\n-%s-\n\n",title);//顯示標題
}

struct book *creat() //錄入教材信息,返回的是結構體指針
{
struct book *p,*head,*end;
page_title("錄入教材信息");
//顯示結果:
//=========== 教材管理系統 ===========
//
//-錄入教材信息-
//
//
head=end=p=(struct book *)malloc(sizeof(struct book));//分配內存空間
//sizeof(struct book)測出結構體大小,然後malloc分配空間,最後強制轉
//換成book結構體
printf("輸入編號為0結束輸入\n");
do
{
printf("\n教材編號:");
gets(p->number);//輸入教材編號放入剛分配的結構中的number中
//調用strcmp()函數,以輸入的字元串與「0」比較。如果相等,
//把結構體END的尾指針指空,並返回頭指針,結束函數。
if(strcmp(p->number,"0")==0){ end->next=NULL; return head;}
// 如果不相等,把P附值給尾指針(根據你的補充。END應該可以理解為隊尾指針)
//就像添加一組對象,就把此對象放到隊尾...
end=p;

建議另外重新定義一個結構體保存鏈頭指針與數目,因為這些是很容易丟的,萬一丟了,就把鏈表丟了。不好~
gets函數不是一個安全的函數....本人不喜歡。不熟悉的最好不要用。不明白的可以向我提問~給分3Q ^_^!

D. C語言程序 !達人解惑!2

void student_edit(void) /*修改學生信息*/
{
int n;
page_title("student_edit");
if((n=search_id())!=-1)/*通過調用serch_id()函數尋找需要修改資料的學生*/
{
printf("\nPlease input again:\nid:"); /*如果找到,則輸入新的學生信息,以替換之前的學生信息*/
scanf("%d",&students[n].id);
printf("name:");
scanf("%s",&students[n].name);
printf("age:");
scanf("%d",&students[n].age);
}
return_confirm();
}
void score_input(void) /*輸入學生成績*/
{
int n;
page_title("score_input");
if((n=sear_id())!=-1) /*通過調用sear_id()函數尋找需要輸入成績的學生*/

{
printf("\nPlease input the score :\nchinese:");/*如果找到,則輸入該學生的各門功課的成績*/
scanf("%d",&students[n].chinese);
printf("math:");
scanf("%d",&students[n].math);
printf("english:");
scanf("%d",&students[n].english);
}
return_confirm();
}

void score_edit(void) /*修改學生成績*/
{
int n;
page_title("score_edit");
if((n=search_id())!=-1) /*通過調用search_id()函數尋找需要修改成績的學生*/

{
printf("chinese:%d math:%d english:%d\n",students[n].chinese,students[n].math,students[n].english);/*如果找到,則輸入該學生的各門功課的新成績以替換原來的成績*/
printf("\nPlease input the score again:\nchinese:");
scanf("%d",&students[n].chinese);
printf("math:");
scanf("%d",&students[n].math);
printf("english:");
scanf("%d",&students[n].english);
}
return_confirm();
}

void sort_it(char nn) /*排序*/
{
int n,j,p,x,t[32];
for(n=0;n<m;n++)
{
switch(nn) /*根據傳入參數nn的不同,根據不同的成員值進行排序*/
{
case '1' : t[n]=students[n].id;break; /*如果nn是'1',就以ID的大小進行排序*/
case '2' : t[n]=students[n].chinese;break;/*如果nn是'2',就以語文成績的大小進行排序*/
case '3' : t[n]=students[n].math;break; /*如果nn是'3',就以數學成績的大小進行排序*/
case '4' : t[n]=students[n].english;break;/*如果nn是'4',就以英語成績的大小進行排序*/
case '5' : t[n]=students[n].chinese+students[n].math+students[n].english;break;/*如果nn是'5',就以總分的大小進行排序*/
}
}
for(n=0;n<m;n++) /*用上面確定的排序依據進行排序*/
{
x=0;
p=-1;
for(j=0;j<m;j++)
{
if(t[j]>x)
{
x=t[j];
p=j;
}
}
t[p]=-1;
INDEX[n]=p;/*排序結果保存到INDEX數組中*/
}
}

void browser(void) /*瀏覽學生數據*/
{
int n,x;
char k;
sort_it('1'); /*以ID大小進行排序*/
while(1)
{
page_title("browser");
printf("Please enter any NUM or enter 0\n");
printf("id-1\tname\tage\tchinese-2\tmath-3\tenglish-4\ttotal-5\n");
for(n=0;n<m;n++) /*輸出排序後的結果*/
{
if(INDEX[n]!=-1)
{
x=INDEX[n];
printf("%d\t%s\t",students[x].id,students[x].name);
printf("%d\t%d\t\t",students[x].age,students[x].chinese);
printf("%d\t%d\t\t",students[x].math,students[x].english);
printf("%d\n",students[x].chinese+students[x].math+students[x].english);
}
}
k=getch(); /*輸入'1'~'5'之間的一個字元*/
if(k<'6'&&k>'0') sort_it(k); /*如果輸入正確,就用k對應的依據重新排序*/
else if(k=='0') break; /*如果輸入的字元是'0',則退出*/
else continue; /*如果輸入的其它字元,則繼續循環*/
}
}

void main(void)
{ int i;
menu: page_title("page_title"); /*調用page_title()函數輸出標題,這一行中設置了一個標志menu,在後面的goto語句中通過這個標志可以跳到這一行*/
printf("Please enter any NUM\n\n"); /*輸出各項菜單選項*/
printf("1 student_new\n2 student_edit\n");
printf("3 student_del\n4 score_input\n5 score_edit\n");
printf("6 browser \n7 load \n8 save \n9 search\n0 exit\n");
switch(getch()) /*對菜單選擇進行響應,*/
{
case '1' : student_new();break;
case '2' : student_edit();break;
case '3' : student_del();break;
case '4' : score_input();break;
case '5' : score_edit();break;
case '6' : browser();break;
case '7' : load();break;
case '8' : save();break;
case '9' : i=search_id();
printf("\n press any key continue...\n");
getch();
break;
case '0' : exit(0);
}
goto menu;/*跳到menu標志所在行*/
//---------------------------------------------------------------------------

E. 關於C語言中的int懇請各位高手解惑

這涉及到常量和變數存儲方式的不同。「My
favorite
number
is
1
because
it
is
first」是字元串常量,在文字常量區存放,而int
num;
num
=
1;是要在棧區開辟一個新的空間,然後將1復制到該空間。定義整型變數的意義在於變數可以被重復賦值以及進行數學運算。比如此時num=1,我也可以將num的值設置為2,或者num++作自增操作等等,而如果是「My
favorite
number
is
1
because
it
is
first」,則不能進行這些操作,只能輸出到控制台。
純手寫,請採納。

F. c語言暴力解決問題 求大神解惑

#include"stdio.h"
#include"string.h"
#defineN4

intneed[N];
intunk[N];
intused[N];
intguessCount;
intguessData[100][3];

voidguess();
voidreadGuessData();
intisCorrectNumber(intnum);
intisCorrectGuessTime(intguessTime);
voidtoDigitArray(intn,inta[]);
intcountCorrectPositions();
intcountCorrectDigits();
voidsetZeros(inta[]);

intmain(){
while(scanf("%d/n",&guessCount)&&guessCount!=0){
guess();
}

return0;
}

voidguess(){
intnum;
intcorrectNumber=0;
intcorrectNumberCount=0;

readGuessData();

for(num=1000;num<10000;num++){
if(isCorrectNumber(num)){
correctNumber=num;
correctNumberCount++;
}
}

if(correctNumberCount==1){
printf("%d ",correctNumber);
}else{
printf("Notsure ");
}
}

intisCorrectNumber(intnum){
inti=0;

toDigitArray(num,unk);

for(i=0;i<guessCount;i++){
if(isCorrectGuessTime(i)==0){
return0;
}
}

return1;
}

intisCorrectGuessTime(intguessTime){
toDigitArray(guessData[guessTime][0],need);

if(guessData[guessTime][1]==countCorrectDigits()&&guessData[guessTime][2]==countCorrectPositions()){
return1;
}
return0;
}

voidreadGuessData(){
inti=0;
for(i=0;i<guessCount;i++){
scanf("%d%d%d/n",&guessData[i][0],&guessData[i][1],&guessData[i][2]);
}
}

voidtoDigitArray(intn,inta[]){
a[3]=n%10;
n/=10;
a[2]=n%10;
n/=10;
a[1]=n%10;
n/=10;
a[0]=n;
}

intcountCorrectDigits(){
inti=0;
intj=0;
intcount=0;

setZeros(used);

for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(used[j]==0&&need[i]==unk[j]){
count++;
used[j]=1;
break;
}
}
}
returncount;
}

intcountCorrectPositions(){
intcount=0;
if(need[0]==unk[0])
count++;
if(need[1]==unk[1])
count++;
if(need[2]==unk[2])
count++;
if(need[3]==unk[3])
count++;
returncount;
}

voidsetZeros(inta[]){
inti=0;
for(i=0;i<4;i++){
a[i]=0;
}
}

熱點內容
網易我的世界租賃伺服器怎麼開作弊 發布:2025-01-10 07:53:27 瀏覽:233
ftp伺服器功能 發布:2025-01-10 07:48:33 瀏覽:80
java如何運行程序 發布:2025-01-10 07:25:53 瀏覽:562
冒險島電腦連接伺服器失敗 發布:2025-01-10 07:23:01 瀏覽:824
安卓開發要學什麼語言 發布:2025-01-10 07:21:30 瀏覽:21
紹興編程培訓 發布:2025-01-10 07:16:53 瀏覽:300
java介面和類 發布:2025-01-10 07:09:14 瀏覽:403
discuzforlinux安裝 發布:2025-01-10 07:09:10 瀏覽:229
招行支票密碼器口令是多少 發布:2025-01-10 06:55:27 瀏覽:353
好的解壓拓展實力怎麼樣 發布:2025-01-10 06:49:18 瀏覽:699