程序调试通话记录c语言的简单介绍

hacker|
163

c语言编写一个通讯录系统 用简单一点的c😊

#define N 100

#define SIZE 30

#include stdio.h

#include string.h

#include conio.h

struct student{

 char num[SIZE];

char name[SIZE];

 char tel[SIZE];

};

/*函数声明*/

void myprint();/*显示菜单*/

int mycreat(struct student*p,int n);/*输入通讯录*/void mydisplay(struct student*p,int n);/*显示通讯录*/void mysearch(struct student*p,int n);/*查找*/

void mymodify(struct student*p,int n);/*修改通讯录*/int myadd(struct student*p,int n);/*增加通讯录*/int mydelete(struct student*p,int n);/*删除*/void mysort(struct student*p,int n);/*排序*/

void sch_num(struct student*p,int n);/*按学号查找*/void sch_name(struct student*p,int n);/*按姓名查找*/

int loadinfo(struct student*p,int n);/*载入通讯录信息*/int saveinfo(struct student*p,int n);/*保存通讯录信息*/void main(){

/*文件定义*/char choose,yes_no;

struct studentrecord[N];/*存放通讯录信息,共100条*/int total=0,flag;/*通讯录总数*/

total=loadinfo(record,N);/*从文件读取记录信息,不超过100条*/do{

myprint();/*显示菜单*/

printf("请选择:");do{

choose=getchar();}

while(choose'0'||choose'9');switch(choose){

case'1':

total=mycreat(record,total);break;case'2':

mydisplay(record,total);break;case'3':

mysearch(record,total);break;case'4':

mymodify(record,total);break;case'5':

total=myadd(record,total);break;case'6':

total=mydelete(record,total);break;case'7':

mysort(record,total);break;case'8':

flag=saveinfo(record,total);if(flag==1)

printf("\n保存成功!\n");else

printf("\n保存失败!\n");break;case'0':

break;default:

printf("\n%c为非法选项!\n",choose);}

if(choose=='0')break;printf("\n要继续选择吗(Y/N)?");do{

yes_no=getchar();}

while(yes_no!='Y'yes_no!='y'yes_no!='N'yes_no!='n');}

while(yes_no!='Y'||yes_no!='y');}

void myprint()/*显示菜单信息*/{

printf("\n\n\n\n\n");printf("\n");printf("请输入选项编号(0--7)\n");printf("1---批量输入通讯录\n");printf("2---显示通讯录\n");printf("3---查询通讯录\n");printf("4---修改通讯录\n");printf("5---添加通讯录\n");printf("6---删除通讯录\n");printf("7---排序通讯录\n");printf("8---保存通讯录\n");printf("0---退出\n");printf("\n");

}

int mycreat(struct student*p,int n)/*批量输入学生信息*/{

int i=0;int m;

printf("添加前的记录,共有%d个:\n",n);printf("\n记录号学号姓名电话号码\n");

i=0;

while((in)(strcmp(p-num,"")!=0)){

printf("%d:%15s%15s%15s\n",i+1,p-num,p-name,p-tel);i++;p++;}

printf("\n请输入要输入的学生人数(%d):",N-n);

scanf("%d",m);i=0;

while(im){

printf("\n");

printf("请输入第%d个记录:\n",i+1);printf("学号:");do{

gets(p-num);}

while(strcmp(p-num,"")==0);printf("姓名:");gets(p-name);

printf("电话号码:");gets(p-tel);p++;i++;}

return m+n;}

void mydisplay(struct student*p,int n)/*显示学生信息*/{

/*clrscr();*/int i=0;

printf("\n记录号学号姓名电话号码\n");while(in){

printf("%d:%15s%15s%15s\n",i+1,p-num,p-name,p-tel);p++;i++;}}

void mymodify(struct student*p,int n)/*修改学生信息*/{

int i;

char nam[10];mydisplay(p,n);

printf("\n请输入要修改记录的姓名:");gets(nam);

for(i=0;in;i++,p++)

if(strcmp(nam,p-name)==0)break;if(i==n)

printf("无此人!\n");else{

printf("请输入正确的学号:");do{

gets(p-num);}

while(strcmp(p-num,"")==0);printf("请输入正确的姓名:");gets(p-name);

printf("请输入正确的电话号码:");gets(p-tel);}

}

void mysearch(struct student*p,int n)/*查找指定学生*/{

char c;

mydisplay(p,n);

printf("\n按学号查询(h),还是按姓名查询(m)?");c=getchar();

if(c=='h'||c=='H')

sch_num(p,n);else if(c=='m'||c=='M')

sch_name(p,n);else

printf("\n非法字符!\n");}

void sch_num(struct student*p,int n)/*按学号查询*/{

int i,flag=0;char nm[10];

printf("\n请输入要查询记录的学号:");gets(nm);

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

if(strcmp(nm,p[i].num)==0)

{

printf("\n学号姓名电话号码\n");printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);flag=1;

}

if(flag==0)

printf("无此人!\n");}

void sch_name(struct student*p,int n)/*按姓名查询*/{

int i,flag=0;char nam[10];

printf("\n请输入要查询记录的姓名:");gets(nam);

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

if(strcmp(nam,p[i].name)==0){

printf("\n学号姓名电话号码\n");printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);flag=1;}

if(flag==0)

printf("无此人!\n");

}

int myadd(struct student*p,int n)/*增加学生信息*/{

int i=0;char c;

struct studentt,*q;

printf("添加前的记录:\n");printf("\n学号姓名电话号码\n");i=0;q=p;

/*显示原有记录信息*/while(in){

printf("%15s%15s%15s\n",q-num,q-name,q-tel);i++;q++;}do{

printf("请输入新记录的学号:\n");do{

gets(t.num);

}

while(strcmp(t.num,"")==0);/*学号不能为空*/printf("请输入新记录的姓名:");gets(t.name);

printf("请输入新记录的电话号码:");gets(t.tel);

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

if(strcmp(t.num,(p+i)-num)==0||strcmp(t.tel,(p+i)-tel)==0){

printf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar ('\n');break;}

/*找到最后,没有重复*/if(i==n){

*(p+i)=t;

printf("添加后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in+1;i++)

printf("%15s%15s%15s\n",(p+i)-num,(p+i)-name,p[i].tel);break;}

}

while(c=='y'||c=='Y');return n+1;}

int mydelete(struct student*p,int n)/*删除学生信息*/{

int i,x;

char c,nm[10],nam[10];

printf("删除前的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();

if(c=='h'||c=='H'){

printf("\n请输入要删除记录的学号:");gets(nm);

for(x=0;xn;x++)

{

gets(t.num);

}

while(strcmp(t.num,"")==0);/*学号不能为空*/printf("请输入新记录的姓名:");gets(t.name);

printf("请输入新记录的电话号码:");gets(t.tel);

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

if(strcmp(t.num,(p+i)-num)==0||strcmp(t.tel,(p+i)-tel)==0){

printf("学号或电话号码重,要重新输入吗(Y/N)?");c=getchar();putchar ('\n');break;}

/*找到最后,没有重复*/if(i==n){

*(p+i)=t;

printf("添加后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in+1;i++)

printf("%15s%15s%15s\n",(p+i)-num,(p+i)-name,p[i].tel);break;}

}

while(c=='y'||c=='Y');return n+1;}

int mydelete(struct student*p,int n)/*删除学生信息*/{

int i,x;

char c,nm[10],nam[10];

printf("删除前的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("按学号删除(h),还是按姓名删除(m)?");c=getchar();

if(c=='h'||c=='H'){

printf("\n请输入要删除记录的学号:");gets(nm);

for(x=0;xn;x++)

int j,i,k;char c1,c2;

struct studenttemp;

printf("\n排序前的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);printf("\n按学号排序(h),还是按姓名排序(m)?");c1=getchar();

if(c1=='h'||c1=='H'){

printf("\n按升序排序(s),还是按降序排序(j)?");c2=getchar();/*升序*/

if(c2=='s'||c2=='S'){

for(i=0;in-1;i++){

k=i;

for(j=i;jn;j++)

if(strcmp(p[k].num,p[j].num)0)

k=j;

temp=p[k];p[k]=p[i];p[i]=temp;

}

printf("\n排序后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}

else if(c2=='j'||c2=='J')/*降序*/{

for(i=0;in-1;i++){

k=i;

for(j=0;jn;j++)

if(strcmp(p[k].num,p[j].num)0)

k=j;

temp=p[k];p[k]=p[i];p[i]=temp;

}

printf("排序后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}

else printf("\n非法字符\n");}

else if(c1=='m'||c1=='M')/*按姓名排序*/{

printf("\n按升序排序(s),还是按降序排序(j)?");c2=getchar();

if(c2=='s'||c2=='S'){

for(i=0;in-1;i++){

k=i;

for(j=0;jn;j++)

if(strcmp(p[k].name,p[j].name)0)

k=j;

temp=p[k];p[k]=p[i];p[i]=temp;}

printf("排序后的记录:\n");printf("\n学号姓名电话号码\n");for(i=0;in;i++)

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);

}

else if(c2=='j'||c2=='J')/*降序*/{

for(i=0;in-1;i++){

k=i;

for(j=i;jn;j++)

if(strcmp(p[k].name,p[j].name)0)

k=j;

temp=p[k];p[k]=p[i];p[i]=temp;

}

printf("排序后的记录:\n");printf("\n学号

姓名电话号码\n");

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

printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}

else printf("\n非法字符!\n");}

else printf("\n非法字符!\n");}

int loadinfo(struct student*p,int n)/*载入通讯录信息*/{

FILE*fp;int i,all=0;

char filename[30]="tongxunlu.txt";fp=fopen(filename,"r");if(fp==NULL){

printf("\n***不能打开文件%s,或%s文件不存在,创建一个新文件!

",filename,filename);*/

fp=fopen(filename,"w");}

fscanf(fp,"%d\n",all);

if(allN)/*读取记录总数*/{

printf("文件记录数太多,不能读取");return 0;}

for(i=0;iall;i++)/*读取记录信息*/{

fscanf(fp,"%s%s%s\n",p[i].num,p[i].name,p[i].tel);}

fclose(fp);/*关闭文件*/return all;}

int saveinfo(struct student*p,int n){

FILE*fp;int i,all=0;

char filename[30]="txl.dat";/*文件可以用记事本打开*/fp=fopen(filename,"w");if(fp==NULL){

printf("\n***不能建立或打开文件%s!***",filename);return 0;}

fprintf(fp,"%d\n",n);for(i=0;in;i++)

fprintf(fp,"%s%s%s\n",p[i].num,p[i].name,p[i].tel);fclose(fp);return 1;}

抄来的

C语言调试步骤

一、在keil中调试c语言程序

1、打开我们的程序,点击菜单栏右侧的start/stopdebug..按钮,进入调试模式,如下图。

2、左侧为寄存器窗口,右上方是汇编窗口,我们可以看到各个寄存器的数值和c语言对应的汇编代码,如下图。

3、点击单步执行按钮或者点击f11、f10,都可以进入单步执行模式,方便我们看程序流程和执行步骤,如下图。

4、点击菜单栏的串口按钮,我们来调试串口的输出,这里有很多对应的调试工具可供选择,如下图。

5、单步执行,我们看到各个窗口的变化,当直行到输出时,可以看到串口窗口有相应的字符输出,如下图。

6、再次点击start/stop按钮来停止调试,如下图。

二、用vs2012对C语言进行调试

1、要对编程环境左边的一条竖直的空开的地方进行点击,点击的是你要调试的相应的语句。

2、点击窗口上方的工具栏的调试界面,点击逐语句或逐过程,都没关系。

3、开始调试,在调试过程中每个调试语句都要按一次F5键,在键盘上按下,你可以看到执行的当前的语句中,左边位置的红点有个箭头。

4、在每次调试语句中,变量值发生改变时,下方的小界面都会显示出来,看是否正确。

5、不断地重复这个步骤,知道发现错误的地方为止。

6、发现错误后,停止调试,修改相应的代码,即完成此次调试。

c语言的调试记录怎么查

所谓调试(Dubug),就是跟踪程序的运行过程,从而发现程序的逻辑错误(思路错误),或者隐藏的缺陷(Bug)。

在调试的过程中,我们可以监控程序的每一个细节,包括变量的值、函数的调用过程、内存中数据、线程的调度等,从而发现隐藏的错误或者低效的代码。

我敢保证,每个人都会遇到逻辑错误,而且会经常遇到,初学者更是错的离谱,所以,必须掌握调试技能,没有选择的余地,没有学会调试就是没有学会编程!

本章内容:

1. 调试的概念以及调试器的选择

2. 设置断点,开始调试

3. 查看和修改变量的值

4. 单步调试(逐语句调试和逐过程调试)

5. 即时窗口的使用

6. 查看、修改运行时的内存

7. 有条件断点的设置

8. assert断言函数

9. 调试信息的输出

10. VS调试的总结以及技巧

通话记录(C语言)

#includestdio.h

int main()

{

int a[10];

char q;

int i,m=0,n=0,p=0;

long long b[10],c[10],d[10],s[10];

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

{

b[i]=0;

c[i]=0;

d[i]=0;

}

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

{

scanf("%d%lld",a[i],s[i]);

}

for(i=9;i=0;i--)

{

if(a[i]==0)

{

b[m++]=s[i];

}

if(a[i]==1)

{

c[n++]=s[i];

}

if(a[i]==2)

{

d[p++]=s[i];

}

}

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

{

printf("%lld %lld %lld\n",b[i],c[i],d[i]);

}

return 0;

}

C++程序实现通话记录功能

#include iostream

#include stack

#define MAX_LIST_COUNT 10

using namespace std;

class CallList {

private:

stacklong long stk[3];

public:

~CallList();

void readData();

void printData();

};

CallList::~CallList() {

delete stk;

}

void CallList::readData() {

for(int i = 0; i  MAX_LIST_COUNT; i++) {

int group;

long long num;

cin  group  num;

stk[group].push(num);

}

}

void CallList::printData() {

for(int i = 0; i  MAX_LIST_COUNT; i++) {

for(int j = 0; j  3; j++) {

long long out = 0;

if(stk[j].size()) {

out = stk[j].top();

stk[j].pop();

}

cout  out  " ";

}

cout  endl;

}

}

int main() {

CallList cl;

cl.readData();

cl.printData();

return 0;

}

5条大神的评论

  • avatar
    访客 2022-12-11 下午 09:25:41

    tf(fp,"%d\n",n);for(i=0;in;i++)fprintf(fp,"%s%s%s\n",p[i].num,p[i].name,p[i].tel);

  • avatar
    访客 2022-12-11 下午 05:51:22

    ;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}else if(c2=='j'||c2=='

  • avatar
    访客 2022-12-11 下午 08:51:23

    m,p-name)==0)break;if(i==n)printf("无此人!\n");else{printf("请输入正确的学号:");do{gets(p-num);}while(strcmp(p-num,"")==0);printf("请输入正确的姓名:

  • avatar
    访客 2022-12-11 下午 08:45:07

    ;i++)printf("%15s%15s%15s\n",p[i].num,p[i].name,p[i].tel);}else printf("\n非法字符\n");}else if(c1=='m'||c1=='M')/*按姓名排序

  • avatar
    访客 2022-12-11 下午 08:08:21

    c;mydisplay(p,n);printf("\n按学号查询(h),还是按姓名查询(m)?");c=getchar();if(c=='h'||c=='H')sch_num(p,n);else if(c=='m'||c=='M')sch_name(p,n);else

发表评论