dq分解c語言的簡單介紹

本文目錄一覽:

c語言程序設計 學生成績管理程序

#include stdio.h

#include stdlib.h

#include string.hstruct student

{

char name[60];

char ID[7];

int score;

};int dq(struct student st[]);

void xianshi();

void bc(struct student st[]);

void add();

void select();

void zz();

void chazhao();

void xhcz();

void xmcz();

void del();

void xmsc();

void xhsc();

void tj();

void px();

void bjg();

void xg();

void xhxg();

void xmxg();

void bca();

void fh();

struct student st[300]; //這個數組用來保存所有的學生信息 和文件裏面的一致

int Number=0; //記錄總的學生人數 也就是數組/文件裏面的學生人數

void main()

{

int choose=0;

FILE *fp=NULL;

char yesorno;

if((fp=fopen(“C://student.dat”,”rb”))==NULL)

{

printf(“\n=========提示:文件不存在,是否要創建一個?(y/n)\n”);

scanf(“%c”,yesorno);

if(yesorno==’y’||yesorno==’Y’)

{

//這裡僅為了建立文件

fp=fopen(“C://student.dat”,”wb”);

fclose(fp);

}

else

exit(0);

}

else

{

Number=dq(st); //要是文件只能夠已經有數據 將數據初始化到數組中

}

system(“cls”);

while(true)

{

xianshi();

printf(“\t\t====請選擇:”);

scanf(“%d”,choose);

system(“cls”);

switch(choose)

{

case 0: exit(0);

//退出

break;

case 1: add();

fh();//增加學生成績

break;

case 2: select();

fh();//查看學生成績

break;

case 3: chazhao();

fh();// 查找

break;

case 4: del();

fh();//刪除

break;

case 5: tj();

fh();//統計

break;

case 6: px();

fh();//排序

break;

case 7: bjg();

fh();//輸出不及格

break;

case 8: xg();

fh();//修改

break;

case 9:zz();

fh();//作者

break;

case 10:bca();

fh();//保存

break;

default:

break;

}

fflush(stdin);

getchar();

system(“cls”);

}

}

void bca()

{

printf(“\t=====程序在運行時已自動保存…..\n”);

}

void fh()

{

printf(“\t===按Enter鍵返回主菜單\n”);

}

void xg() //修改學生信息

{

int way=0;

printf(“請選擇修改查找方式\n”);

printf(“1 按姓名查找修改\n”);

printf(“2 按學號查找修改\n”);

scanf(“%d”,way);

switch(way)

{

case 1: xmxg();

break;

case 2: xhxg();

break;

default: printf(“輸入有誤,結束!\n”);

break;

}

}

//按姓名修改

void xmxg()

{

FILE *fp=NULL;

char name[60];

int i=0;

int changeIndex=0;

int index=0;

printf(“請輸入要修改的學生姓名:”);

scanf(“%s”,name);

for (i=0;iNumber;i++)

{

if (strcmp(name,st[i].name))

{

changeIndex=i; //保存要修改的人的下標

}

break;

}

printf(“\t姓名\t學號\t成績\n”);

printf(“\t%s\t%s\t%d\n\n”,st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);

printf(“請重新輸入該學生信息”);

printf(“姓名:”);

scanf(“%s”,st[changeIndex].name);

printf(“學號:”);

scanf(“%s”,st[changeIndex].ID);

printf(“成績:”);

scanf(“%d”,st[changeIndex].score);//信息修改後重新更新文件裏面的數據 以保持數據一致性

fp=fopen(“C://student.dat”,”wb”);

for (i=0;iNumber;i++)

{

fwrite(st[i],sizeof(struct student),1,fp);

}

fclose(fp);

}

void xhxg()//按學號修改

{

FILE *fp=NULL;

char id[60];

int i=0;

int changeIndex=0;

int index=0;

printf(“請輸入要修改的學生學號:”);

scanf(“%s”,id);

for (i=0;iNumber;i++)

{

if (strcmp(id,st[i].ID))

{

changeIndex=i; //保存要修改的人的下標

}

break;

}

printf(“\t姓名\t學號\t成績\n”);

printf(“\t%s\t%s\t%d\n\n”,st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);

printf(“請重新輸入該學生信息”);

printf(“姓名:”);

scanf(“%s”,st[changeIndex].name);

printf(“學號:”);

scanf(“%s”,st[changeIndex].ID);

printf(“成績:”);

scanf(“%d”,st[changeIndex].score);

//信息修改後重新更新文件裏面的數據 以保持數據一致性

fp=fopen(“C://student.dat”,”wb”);

for (i=0;iNumber;i++)

{

fwrite(st[i],sizeof(struct student),1,fp);

}

fclose(fp);

printf(“\t=======修改成功\n”);

}void bjg() //輸出不及格人數

{

int i=0;

printf(“以下是不及格:\n”);

printf(“\t姓名\t學號\t成績\n”);

for (i=0;iNumber;i++)

{

if (st[i].score60)

{

printf(“\t%s\t%s\t%d\n”,st[i].name,st[i].ID,st[i].score);

}

}

}

void px()//排序

{

struct student temp;

int wantNUmber=0;

int i=0;

int j=0;

for(i=0;iNumber-1;i++)

{

for(j=i;jNumber-1;j++)

{

if(st[j].scorest[j+1].score)

{

temp=st[j];

st[j]=st[j+1];

st[j+1]=temp;

}

}

}

printf(“你想輸出前幾名的成績:”);

scanf(“%d”,wantNUmber);

if (wantNUmberNumber)

{

wantNUmber=Number;

}printf(“\t姓名\t學號\t成績\n”);

for(i=0;iwantNUmber;i++)

{

printf(“\t%s\t%s\t%d\n”,st[i].name,st[i].ID,st[i].score);

}

}

void tj()//統計

{

int i=0;

double sum=0.0;

for(i=0;iNumber;i++)

{

sum+=st[i].score;

}

printf(“全班總分為:%f\n”,sum);

printf(“平均分為:%f\n”,sum/Number);

}

void del()//刪除

{

int n=0;

printf(“1 按姓名刪除\n”);

printf(“2 按學號刪除\n”);

scanf(“%d”,n);

switch(n)

{

case 1: xmsc();

break;

case 2: xhsc();

break;

}

}

void xmsc()//按姓名刪除

{

FILE *fp=NULL;

char name[60];

int i=0;

int j=0;

printf(“請輸入要刪除的學生姓名:”);

scanf(“%s”,name);

for(i=0;iNumber;i++)

{

if (strcmp(name,st[i].name)==0) //如果查找到就刪除

{

for (j=i;jNumber-1;j++)

{

st[j]=st[j+1];

}

Number–;

}

}//將剩餘數據寫入文件 重新一寫的方式打開文件 把以前的數據擦除了

fp=fopen(“C://student.dat”,”wb”);

for (i=0;iNumber;i++)

{

fwrite(st[i],sizeof(struct student),1,fp);

}

fclose(fp);

printf(“刪除成功;\n”);

}

void xhsc()//按學號刪除

{

FILE *fp=NULL;

char id[60];

int i=0;

int j=0;

printf(“請輸入要刪除的學生學號:”);

scanf(“%s”,id);

for(i=0;iNumber;i++)

{

if (strcmp(id,st[i].ID)==0) //如果查找到就刪除

{

for (j=i;jNumber-1;j++)

{

st[j]=st[j+1];

}

Number–;

}

}

//將剩餘數據寫入文件 重新一寫的方式打開文件 把以前的數據擦除了

fp=fopen(“C://student.dat”,”wb”);

for (i=0;iNumber;i++)

{

fwrite(st[i],sizeof(struct student),1,fp);

}

fclose(fp);

printf(“刪除成功;\n”);

}

void chazhao()//查找學生

{

int n=0;

printf(“1 按姓名查找\n”);

printf(“2 按學號查找\n”);

scanf(“%d”,n);

switch(n)

{

case 1: xmcz();

break;

case 2: xhcz();

break;

default: printf(“輸入有誤,結束!\n”);

break;

}

}

void xhcz()//按學號查找

{

char id[7];

int i=0;

printf(“請輸入要查找學生學號:”);

scanf(“%s”,id);

system(“cls”);

printf(“\t姓名\t學號\t成績\n”);

for (i=0;iNumber;i++)

{

if (strcmp(id,st[i].ID)==0)

{

printf(“\t%s\t%s\t%d\n”,st[i].name,st[i].ID,st[i].score);

}

}

}

void xmcz()//按姓名查找

{

char name[7];

int i=0;

printf(“請輸入要查找學生姓名:”);

scanf(“%s”,name);

system(“cls”);

printf(“\t姓名\t學號\t成績\n”);

for (i=0;iNumber;i++)

{

if (strcmp(name,st[i].name)==0)

{

printf(“\t%s\t%s\t%d\n”,st[i].name,st[i].ID,st[i].score);

}

}

}

void zz()

{

printf(“\t**********************************************************\n\n”);

printf(“\t^^^^^^^^^^ 武漢工程大學郵電與信息工程學院 ^^^^^^^^^^\n\n”);

printf(“\t^^^^^^^^^ 07網絡與安全管理2班 ^^^^^^^^^\n\n”);

printf(“\t^^^^^^^^ 易樊製作 ^^^^^^^^\n\n”);

printf(“\t^^^^^^^^^ 禁止CTRL+C 謝謝合作 ^^^^^^^^^\n\n”);

printf(“\t^^^^^^^^^^ QQ:895115828\n\n”);

printf(“\t**********************************************************\n\n”);

}

void select()//查看學生

{

int i=0;

printf(“以下是全部學生成績\n”);

printf(“\t姓名\t學號\t成績\n”);

for(i=0;iNumber;i++)

{

printf(“\t%s\t%s\t%d\n”,st[i].name,st[i].ID,st[i].score);

}

}

void add()//增加學生

{

int numberTemp=0;

int i=0;

struct student temp; //臨時保存信息

printf(“請輸入要增加學生成績個數:”);

scanf(“%d”,numberTemp);

for(i=0;inumberTemp;i++)

{

printf(“輸入第%d個同學信息\n”,i+1);

printf(“姓名:”);

scanf(“%s”,temp.name);

printf(“學號:”);

scanf(“%s”,temp.ID);

printf(“成績:”);

scanf(“%d”,temp.score);

st[Number++]=temp; //將剛添加的寫入到數組

bc(temp); //將剛添加的寫入到文件}

printf(“添加成功\n”);

}

void bc(struct student *st)

{

FILE *fp=NULL;

fp=fopen(“C://student.dat”,”ab+”);

fwrite(st,sizeof(struct student),1,fp);

fclose(fp);

}

int dq(struct student st[])

{

FILE *fp=NULL;

int i=0;

fp=fopen(“C://student.dat”,”rb”);

while(fread(st[i],sizeof(struct student),1,fp))

i++;

fclose(fp);

return i;

}

void xianshi()

{

printf(“\t*****************************************************************\n”);

printf(“\t* *\n”);

printf(“\t* 學生成績管理系統 *\n”);

printf(“\t* *\n”);

printf(“\t* [1] 增加學生成績 [2] 查看學生成績 *\n”);

printf(“\t* [3] 查找學生成績 [4] 刪除學生成績 *\n”);

printf(“\t* [5] 統計(總成績和平均分) [6] 輸出前N名學生成績 *\n”);

printf(“\t* [7] 輸出不及格人數 [8] 修改學生信息 *\n”);

printf(“\t* [9] 關於作者 [10] 保存數據 *\n”);

printf(“\t* [0] 退出系統 *\n”);

printf(“\t*****************************************************************\n”);

}

c語言解釋 要挨句解釋

~LZ,看代碼應該從main開始看,怎麼挨句解釋呀~我們老師當初也是這麼讓我們看代碼的,現在想想都噁心。你直接看方法有時候都不知道是什麼東西,按流程來會比較好點,流程能順利看下去,代碼也就理解的差不多了。

1. 先從main開始

void main(void) //主方法,程序開始

{unsigned int temp; //無符號整型變量temp

while(1) //死循環

{ temp=ReadTemperature(); //調用ReadTemperature()方法,返回值賦給整型temp。此時主方法暫停,程序跳入ReadTemperature()方法繼續運行。

//下面兩個if是程序運行完ReadTemperature()返回主函數後判斷所得到得temp值

if(temp35) { L0=1;L0=0; } //if為真,L0=1. if為假,L0=0

if(temp35) { L1=1;L1=0; } //與上同理

} }

2.uint ReadTemperature(void) //從主函數第四行調用該方法後跳入這裡開始運行

{

unsigned char m=0; //無符號字符型m,賦初值0

unsigned char n=0; //同理 n附初值0

unsigned int t=0; //略。。。。

float tt=0; //浮點型,以下變量定義略。。

Init_DS18B20(); //調用Init_DS18B20()方法,此時該函數暫停運行,跳入Init_DS18B20()運行,運行完Init_DS18B20()後返回這個位置繼續往下運行。

WriteOneChar(0xCC); //調用該函數,傳實參0xCC,流程同上

WriteOneChar(0x44); //調用該函數,傳實參0x44,流程同上

Init_DS18B20(); //調用該函數,流程同上

WriteOneChar(0xCC); //略、、

WriteOneChar(0xBE); //略、、、

m=ReadOneChar(); //調用該函數,並把它的返回值賦值給m

n=ReadOneChar(); //同上

t=n; //賦值語句

t=8; //t左移八位

t=t|m; //t或上m的值,結果賦給t ,這是求或結果。

tt=t*0.0625; //求值

t= tt*10+0.5;

return(t);} //把所得t值返回

基本的流程就是這樣,你從main一句句就能看下去了,其中 t=8是位移的意思,=同理

其他的地方貌似也沒難懂的了,基本介紹都有了,後面就按照之前的思路一句句看。

當發生方法調用時,當前運行的方法會暫停,轉入調用的方法運行,運行完再回來繼續運行,不要弄亂流程就好。

這麼看一遍,比你從程序頭看到程序尾結果好多了吧。。。

怎樣提取出C語言代碼中的注釋和函數體

#include string.h

#include stdlib.h

#include stdio.h

#include fcntl.h

#include io.h

/**

 * 功能:移除C/C++程序代碼中的注釋

 *

 * 輸入:指向C/C++程序代碼的指針

 */

void

remove_comment(char *buf, size_t size)

{

  char *p, *end, c;

  char *sq_start, *dq_start;

  char *lc_start, *bc_start;

  size_t len;

  p = buf;

  end = p + size;

  sq_start = NULL;

  dq_start = NULL;

  lc_start = NULL;

  bc_start = NULL;

  while (p  end) {

  c = *p;

  switch (c) {

  case ‘\”: /* 單引號 */

  if (dq_start || lc_start || bc_start) {

  /* 忽略字符串與注釋中的單引號 */

  p++;

  continue;

  }

  if (sq_start == NULL) {

  sq_start = p++;

  } else {

  len = p++ – sq_start;

  if (len == 2  *(sq_start + 1) == ‘\\’) {

  /* 忽略字符中的單引號 */

  continue;

  }

  sq_start = NULL;

  }

  break;

  case ‘\”‘: /* 雙引號 */

  if (sq_start || lc_start || bc_start) {

  /* 忽略字符或注釋中的雙引號 */

  p++;

  continue;

  }

  if (dq_start == NULL) {

  dq_start = p++;

  } else {

  if (*(p++ – 1) == ‘\\’) {

  /* 忽略字符串中的雙引號 */

  continue;

  }

  dq_start = NULL;

  }

  break;

  case ‘/’: /* 斜桿 */

  if (sq_start || dq_start || lc_start || bc_start) {

  /* 忽略字符、字符串或注釋中的斜桿 */

  p++;

  continue;

  }

  c = *(p + 1);

  if (c == ‘/’) {

  lc_start = p;

  p += 2;

  } else if (c == ‘*’) {

  bc_start = p;

  p += 2;

  } else {

  /* 忽略除號 */

  p++;

  }

  break;

  case ‘*’: /* 星號 */

  if (sq_start || dq_start || lc_start || bc_start == NULL) {

  /* 忽略字符、字符串或行注釋中的星號,還有忽略乘號 */

  p++;

  continue;

  }

  if (*(p + 1) != ‘/’) {

  /* 忽略塊注釋中的星號 */

  p++;

  continue;

  }

  p += 2;

  memset(bc_start, ‘ ‘, p – bc_start);

  bc_start = NULL;

  break;

  case ‘\n’: /* 換行符 */

  if (lc_start == NULL) {

  p++;

  continue;

  }

  c = *(p – 1);

  memset(lc_start, ‘ ‘,

  (c == ‘\r’ ? (p++ – 1) : p++) – lc_start);

  lc_start = NULL;

  break;

  default:

  p++;

  break;

  }

  }

  if (lc_start) {

  memset(lc_start, ‘ ‘, p – lc_start);

  }

}

int

main(int argc, char *argv[])

{

  int fd, n;

  char buf[102400];

  fd = open(“C:\\Documents and Settings\\Administrator\\桌面\\remove_comment.c”,

  _O_RDONLY, 0);

  if (fd == -1) {

  return -1;

  }

  n = read(fd, buf, sizeof(buf));

  if (n == -1 || n == 0) {

  close(fd);

  return -1;

  }

  //printf(“test\n”);

  remove_comment(buf, n);

  *(buf + n) = ‘\0’;

  printf(buf);

  /***********\\\/////// */

  close(fd);

  return 0;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/200703.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 20:02
下一篇 2024-12-05 20:03

相關推薦

  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28

發表回復

登錄後才能評論