十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
创新互联建站企业建站,十载网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都做网站、网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
#include stdlib.h
void menu() //菜单绘制
{
printf("---------------------------------------\n");
printf("\t\t 0.退出\n");
printf("\t\t 1.录入信息\n");
printf("\t\t 2.查找信息\n");
printf("\t\t 3.删除信息\n");
printf("\t\t 4.浏览信息\n");
printf("\t\t 5.有其他疑问找群主")
printf("\t\t 6.C++8群: 491994603")
printf("---------------------------------------\n");
}
void keyDown() //按键处理
{
int choice;
scanf("%d", choice);
switch (choice)
{
case 0:
printf("退出程序\n");
Sleep(2000);
return 0;
case 1:
//调用菜单1实现函数
break;
case 2:
//调用菜单2实现函数
break;
case 3:
//调用菜单3实现函数
break;
case 4:
//调用菜单4实现函数
break;
default:
printf("输入错误\n");
}
system("pause");
return 0;
}
int main()
{
while(1)
{
menu();
keyDown();
system("cls");
}
return 0;
}
#includestdio.h
#includestring.h
#includestdlib.h
//值传递
void fun1(char a)
{
a = 'b';
}
//地址传递
char fun2(char* a)
{
*a = 'a';
return *a;
}
//动态分配数组
void fun3(char* a)
{
a = (char*)malloc(sizeof(char));
}
char caidan()
{
char choose[5];
printf("\n***************************************\n");
printf(" ┌──────┐\n");
printf(" │ 菜单│\n");
printf(" __________________________________\n");
printf("│ 1,按值传递 |\n");
printf("│ 2,按地址传递 |\n");
printf("│ 3,动态数组演示|\n");
printf("│ 4,退 出 |\n");
printf("└────────────────┙\n");
printf("**************************************\n\n");
do
{
printf("请输入您的选择(1-4):");
scanf("%s",choose);
}while(strcmp(choose,"1")strcmp(choose,"2")strcmp(choose,"3")strcmp(choose,"4"));
//返回选择的菜单,注意如果输入太长 这里会异常,因为choose[5],只申请了5个字节。
return choose[0];
}
void main()
{
//执行菜单的选择
while(1)
{
switch(caidan())
{
case '1':
{
char a = 'a';
fun1(a);
//按值传递 内容不变
break;
}
case '2':
{
char b = 'b';
char a = fun2(b);
//按地址传递内容会变
break;
}
case '3':
{
char* p = NULL;
fun3(p);
//动态数组分配成功
break;
}
case '4':exit(0);
}
}
}
给你一个简单的菜单程序吧。其中的子函数,填充成楼主所需即可。
#include
/*子函数1*/
fun1() {
printf ("子函数1\n");
}
/*子函数2*/
fun2() {
printf ("子函数2\n");
}
/*子函数3*/
fun3() {
printf ("子函数3\n");
}
/*子函数4*/
fun4() {
printf ("子函数4\n");
}
int main(void) {
int key; /*命令编号*/
do {
system("cls"); /*清屏*/
/*打印菜单*/
printf ("======================================================\n");
printf (" #\t功能详情\n");
printf ("------------------------------------------------------\n");
printf (" 1\t功能1\n");
printf (" 2\t功能2\n");
printf (" 3\t功能3\n");
printf (" 4\t功能4\n");
printf (" 5\t退出\n");
printf ("======================================================\n");
printf ("\n");
printf("请输入命令编号以开启操作:");
/*输入命令编号*/
scanf("%d",key);
printf ("\n");
/*switch函数实现输入功能序号执行相应函数*/
switch (key) {
case 1: fun1(); break; /*子函数1*/
case 2: fun2(); break; /*子函数2*/
case 3: fun3(); break; /*子函数3*/
case 4: fun4(); break; /*子函数4*/
case 5: printf("程序结束!按任意键退出...\n\n"); break;
default:printf("输入错误,请重新输入!\n\n"); break;
}
/*屏幕暂留*/
if (key!=5) {
printf ("\n");
printf("按Enter键继续...\n");
printf ("\n");
fflush(stdin);
getch ();
}
} while (key!=5);
/*屏幕暂留*/
fflush(stdin);
getch ();
return 0;
}运行结果
#include stdio.h
#include windows.h
#include string.h
#include stdlib.h
#define MAX 1000
void main1()
{
int a, *p;
p = a;
printf("please input a number:");
scanf("%d", p); // 对p指向的a地址输入值
printf("a=%d\n*p=%d\n", a, *p); // 输出a地址存的值 输出p指向的地址a的内容
}
void main2()
{
int a,*p;
p = a;
printf("please input a number:");
scanf("%d", a); // 对p指向的a地址输入值
printf("p=%p *p=%d\n", p,*p);// 输出p指向的a的首地址号不足的位数用00补齐 输出p指向的地址a的内容
printf("%4d%4d %x\n", (*p)++, ++(*p), p);//输出现在p指向的地址,输出p指向的地址内的值加一后的值,输出p指向的地址内的值加一后的值再加一
printf("%4d%4d\n", *p++, *p);// 输出上个程序加一后的p指向的地址的内容
printf("p=%x\n", p);// 输出现在p指向的地址号
}
void sub(int x, int y, int *z)
{
*z = y - x;
}
void main3()
{
int a, b, c;
sub(10, 5, a);// 把10和5分别富值给x,y 把a的地址传个*z在sub中对z指向的a地址富值
sub(7, a, b);// 把7和a的值分别富值给x,y 把b的地址传个*z在sub中对z指向的b地址富值
sub(a, b, c);// 把a的值和吧的值分别富值给x,y 把c的地址传个*z在sub中对z指向的c地址富值
printf("a=%d\nb=%d\nc=%d\n", a, b, c);// 输出被赋值后的a b c
}
void main4()
{
int a[] = {1, 2, 3, 4, 5};
int *p = NULL;
p = a;// p指向a的首地址
printf("%d ", *p);// 输出p指向的a首地址的第一个元素的内容
printf("%d ", *(++p));// p的指向后移动指向a的第二个元素并输出她的内容
printf("%d ", *++p);// p的指向后移动指向a的第二个元素并输出她的内容
printf("%d ", *(p--));// p输出值后指向的位子向前移一个元素
printf("%d ", *p++);// 输出p的值后再将p的指向向后移一个元素
printf("%d ", *p);// 输出p移后的指向的地址的值
printf("%d ", ++(*p));// 对p指向的地址的值加一后输出值
printf("%d\n ", *p);// 输出现在p指向的地址的值
}
f(int *t)
{
*t =10;
}
void main5()
{
int *p, a;
a = 2;
p = a;// p指向a的地址
f(p);// 把p指向的a的地址传给*t在子函数中对a进行重新赋值;
printf("a=%d\n", a);// 输出a重新赋的值
}
void main6()
{
int a[10], j, *p;
for (j = 0; j 10; j++)
a[j] = j+1; // 对数组a进行赋值
printf("\nOutput array using a[j]:\n");
for (j = 0; j 10; j++)
printf("%d ", a[j]);// 输出赋值后的a
p = a; // p指向数组a首地址
printf("\nOutput array using p[j]:\n");
for (j = 0; j 10; j++)
printf("%d ", p[j]); // 把指针p当数组用输出p指向的a的各个元素
printf("\nOutput array using*( p+j):\n");
for (j = 0; j 10; j++)
printf("%d ", *(p+j)); // 把指针p当数组用输出p指向的a的各个元素
printf("\nOutput array using*( a+j):\n");
for (j = 0; j 10; j++)
printf("%d ", *(a+j)); // 使用数组a的指针性质
printf("\nOutput array using *p++:\n");
for (j = 0; j 10; j++)
printf("%d ", *p++); // 把指针p当数组用输出p指向的a的各个元素
printf("\n");
}
void Input(float *p,int n)
{
int i;
printf("Pleese input %d score: ",n);
for(i=0;in;i++)
{
scanf("%f",(p+i));
}
}
void Output(float *q,int n)
{
int i;
printf("Output the score:\n");
for(i=0;in;i++)
{
printf("%f\n",*(q+i));
}
}
void FMax(float score[], int n,float *maxs,int *maxn )
{
int i;
*maxs=score[0];
for(i=1;in;i++)
{
if(score[i]*maxs)
{
*maxs=score[i];
*maxn=i;
}
}
}
void FMin(float score[], int n,float *mins,int *minn )
{
int i;
*mins=score[0];
for(i=1;in;i++)
{
if(score[i]*mins)
{
*mins=score[i];
*minn=i;
}
}
}
void main7()
{
float score[MAX],maxs,mins;
int maxn,minn;
Input(score,10);
Output(score,10);
FMax(score,10,maxs,maxn);
FMin(score,10,mins,minn);
printf("maxscore=%.2f,\t\tmaxnum=%d\nminscore=%.2f,\t\tminnum=%d\n",maxs,maxn,mins,minn);
}
int aver(int (*p)[5],int q)
{
int j,m=0,b;
for(j=0;j5;j++)
{
m+=*(*(p+q-1)+j);
}
b=m/5;
return(b);
}
void main8()
{
int i,j,(*pscore)[5],a,n,q[10][5];
pscore=q;
printf("Please input ten students's five scores:\n");
for(i=0;i10;i++)
{
for(j=0;j5;j++)
{
scanf("%d",pscore[i*5+j]);
}
}
printf("Please input students's number:");
scanf("%d",n);
a=aver(pscore,n);
printf("第%d学生五门成绩的平均值为:%d\n",n,a);
}
void main9()
{
char *str1,*str2,*str3,a[100],b[100],c[100];
str1=a[0];
str2=b[0];
str3=c[0];
printf("str1=");
gets(str1);
printf("str2=");
gets(str2);
strcat(str1,str2);// 把字符串str2接到字符串str1的后面
printf("str1=%s\n",str1);// 输出连接后的字符串str1
strcpy(str3,str1);// 把字符串str1接到字符串str3的后面
printf("str3=%s\n",str3);// 输出连接后的字符串str3
}
void main10( )
{
char *p = "abcdefghijklmnopq";
while( *p++!='e')// 指针p的指向地址向后移一个元素判断是不是等于'e'
printf("%c\n", *p);// 如果判断等于'e'就输出p指向的地址内的字符
}
void main11()
{
char b[] = "program";
char *a = "PROGRAM";
int i = 0;
printf("%c%s\n", *a,b+1);// 先对数组b加一后输出b 再输出*a
while (putchar(*(a+i)))
{
i++;
}
printf("i = %d\n", i);// 判断a有多少个字符输出
while (--i)
{
putchar(*(b + i)); // 将p字符串逆向输出不输出最后一个
}
printf("\n%s\n", b[3]);// 输出b字符串的最后四位
}
void main12( )
{
int a=1, *p, **pp;
pp =p;
p =a;
a++;
printf ("%d,%d,%d\n",a,*p, **pp);// a是a加一后的值 *P是指向的a地址内的值 **pp是指向的 *P是指向的a地址内的值
}
void main13()
{
char *alpha[7]={ " ABCD","EFGH ","IJKL ","MNOP ","QRST ","UVWX ","YZ "};
char **p;
int i;
p = alpha;
for(i = 0;i 4;i++)
printf("%c", *(p[i]));// 输出指向的前四个字符串的第一个字母
printf("\n");
}
void main14()
{
char n[100];
char *s [ ]={"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Ten"};
int i,x,len;
printf("输入一串阿拉伯数字:\n");
gets(n);
len=strlen(n);// 计算输入的n的长度
for(i=0;ilen;i++)
{
x=*(n+i)-48; /* 48为字符"0"的ASCII码 */
printf("%s ",s[x]);// 将输入的数字当地址号
}
printf("\n");
}
unsigned int MyStrlen(char s[ ])
{
char *p = s;
while (*p !='\0' )
{
p++;
}
return(p-s );
}
void main15()
{
char a[1000];
int b;
printf("Input char number:");
gets(a);
b= MyStrlen(a);
printf("The number's len:%d\n",b);
}
void reading(char (*a)[5], int *num)
{
int i=0;
gets(a[i]);
while(!strcmp(a[i],"****")==0)
{
gets(a[i]);
}
*num=i;
}
void findmax(char (*a)[5], int *num,char **max)
{
int i;
for (*max=a[0],i=1;i*num;i++)
{
if(strcmp(a[i],*max)0)
*max=a[i];
}
}
void main16()
{
char ss[10][5],*ps;
int n;
reading(ss,n);
findmax(ss,n,ps);
printf("max=%s\n",ps);
}
int *search1(int(*s)[4],int *len,int *n)
{
int i,j;
for (i = *n; i*len; i++)
{
for (j=0; j4; j++)
{
if (*(*(s+i)+j) 60)
{
*n=i;
return s[i];//如有不及格的返回地址
}
}
}
return NULL;//如果没有返回NULL,好打出没有成绩不及格的同学
}
int *search2(int(*s)[4],int *len,int *n)
{
int i,j;
for (i = *n; i*len; i++)
{
for (j=0; j4; j++)
{
if (*(*(s+i)+j) 90)
{
*n=i;
return s[i];//如有不及格的返回地址
}
}
}
return NULL;//如果没有返回NULL,好打出没有成绩不及格的同学
}
void main17()
{
int i,j,n,score[1000][4],count=0,x;
int *p;
p=score[0][0];
printf("Pleese input the students's total number(小于1000):\n ");
scanf("%d",n);
printf("Pleese input every student's score:\n ");
for(i=0;in;i++)
{
for(j=0;j4;j++)
{
scanf("%d",p[i*4+j]);
}
}
printf("是100分制请输入100,150分制请输入150:");
scanf("%d",x);
switch(x)
{
case 100:
i=0;//从第一个开始擦找
while (in+1)
{
p=search1(score,n, i);
if (p)//如果有
{
printf("不及格的是第 %d 个人,三科成绩分别为:\n",i+1);
for (j = 0; j 4; j++)
{
printf("%d, ", *p++);
}
count++;//记录有几个不及格的
printf("\n");
}
i++;
}
if (!pcount==0)//如果没有
{
printf("没有成绩不及格的同学\n");
}
break;
case 150:
i=0;//从第一个开始擦找
while (in+1)
{
p=search2(score,n, i);
if (p)//如果有
{
printf("不及格的是第 %d 个人,三科成绩分别为:\n",i+1);
for (j = 0; j 4; j++)
{
printf("%d, ", *p++);
}
count++;//记录有几个不及格的
printf("\n");
}
i++;
}
if (!pcount==0)//如果没有
{
printf("没有成绩不及格的同学\n");
}
break;
default:
printf("Incorrect letter entered .");
}
}
#define MAXI 16
#define N 5
void sort(char (*s)[MAXI],int n)
{
int i , j;
char *temp =(char *)malloc(sizeof(char ) * MAXI) ;
for(i = 0; i n-1 ; i++)
{
for(j = i+1; j n ; j++)
{
if(strcmp(s[i] , s[j]) 0) //这里的排序不能用s[i] = s[j],错误:incompatible types in assignment
{
strcpy(temp,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],temp);
}
}
}
free(temp);
}
void print(char (*s)[MAXI],int n)
{
int i;
for(i = 0; i n ; i++)
{
printf("%s\n",s[i]);
}
}
void main18()
{
int index;
char str[N][MAXI];
for(index = 0; index N ;index++)
{
printf("请输入第%d个字符串:\n",index+1);
gets(str[index] );
}
sort(str,N);
print(str,N);
}
void main19()
{
printf("\t\t\t\t欢迎使用");
printf("\n");
printf("\t\t*************************************************");
printf("\n\t\t*\t\t\t\t\t\t*");
printf("\n\t\t*\t\t\t\t\t\t*");
printf("\n\t\t*\t\t输入1.第①个实验\t\t*");
printf("\n\t\t*\t\t输入2.第②个实验\t\t*");
printf("\n\t\t*\t\t输入3.第③个实验\t\t*");
printf("\n\t\t*\t\t输入4.第④个实验\t\t*");
printf("\n\t\t*\t\t输入5.第⑤个实验\t\t*");
printf("\n\t\t*\t\t输入6.第⑥个实验\t\t*");
printf("\n\t\t*\t\t输入7.第⑦个实验\t\t*");
printf("\n\t\t*\t\t输入8.第⑧个实验\t\t*");
printf("\n\t\t*\t\t输入9.第⑨个实验\t\t*");
printf("\n\t\t*\t\t输入10.第⑩个实验\t\t*");
printf("\n\t\t*\t\t输入11.第⑾个实验\t\t*");
printf("\n\t\t*\t\t输入12.第⑿个实验\t\t*");
printf("\n\t\t*\t\t输入13.第⒀个实验\t\t*");
printf("\n\t\t*\t\t输入14.第⒁个实验\t\t*");
printf("\n\t\t*\t\t输入15.第⒂个实验\t\t*");
printf("\n\t\t*\t\t输入16.第⒃个实验\t\t*");
printf("\n\t\t*\t\t输入17.第⒄个实验\t\t*");
printf("\n\t\t*\t\t输入18.第⒅个实验\t\t*");
printf("\n\t\t*\t\t输入0.结束\t\t\t*");
printf("\n\t\t*************************************************\n");
}
void main()
{
int n,m;
do{
system("cls");
main19();
printf("请输入所需要选择运行的程序的序号:");
scanf("%d",n);
switch(n)
{
case 1:
main1();
break;
case 2:
main2();break;
case 3:
main3();break;
case 4:
main4();break;
case 5:
main5();break;
case 6:
main6();break;
case 7:
main7();break;
case 8:
main8();break;
case 9:
main9();break;
case 10:
main10();break;
case 11:
main11();break;
case 12:
main12();break;
case 13:
main13();break;
case 14:
main14();break;
case 15:
main15();break;
case 16:
main16();break;
case 17:
main17();break;
case 18:
main18();break;
default:
printf("选错了!!!!!!!\n");
}
printf("不想继续就输入0否则输入任意数字:");
scanf("%d",m);
}while(m!=0);
}
1、对于窗口组件菜单,需要根据不同平台,通过图形编程接口,进行菜单的编制。
例程:
#includestdio.h
#includegraphics.h
#includeconio.h
void main()
{
char str;
int i,k,choice=1;
int gd=DETECT,gm;
initgraph(gd,gm," ");
setbkcolor(2);
settextstyle(3,0,3);
outtextxy(140,120,"A. The Mock Clock.");
outtextxy(140,150,"B. The Digital Clock.");
outtextxy(140,180,"C. Exit.");
setlinestyle(0,0,3);
rectangle(170,115,370,145);
/*按上下键选择所需选项*/
for(i=1;i=100;i++)
{
str=getch();
if(str==72)
{
--choice;
if(choice==0)choice=3;
}
if(str==80)
{
++choice;
if(choice==4)choice=1;
}
if(str==13)break; /*按回车键确认*/
/*画图做菜单*/
cleardevice();
switch(choice)
{ case 1: setlinestyle(0,0,3);
rectangle(170,115,400,145);
settextstyle(3,0,3);
outtextxy(140,120,"A. The Mock Clock.");
settextstyle(3,0,3);
outtextxy(140,150,"B. The Digital Clock.");
outtextxy(140,180,"C. Exit.");
break;
case 2: setlinestyle(0,0,3);
rectangle(170,145,400,175);
settextstyle(3,0,3);
outtextxy(140,120,"A. The Mock Clock.");
settextstyle(3,0,3);
outtextxy(140,150,"B. The Digital Clock.");
settextstyle(3,0,3);
outtextxy(140,180,"C. Exit.");
break;
case 3: settextstyle(3,0,3);
outtextxy(140,120,"A. The Mock Clock.");
outtextxy(140,150,"B. The Digital Clock.");
settextstyle(3,0,3);
outtextxy(140,180,"C. Exit.");
setlinestyle(0,0,3);
rectangle(170,175,400,205);
break;
}
}
if(i=100)exit(0);/*如果按键超过100次退出*/
switch(choice)/*这里引用函数,实现所要的功能*/
{
case 1: cleardevice();
setbkcolor(4);
settextstyle(3,0,4);
outtextxy(160,120,"No.1 have not built."); break;
case 2: cleardevice();
setbkcolor(4);
settextstyle(3,0,4);
outtextxy(160,150,"No.2 have not built.");
break;
case 3: exit(0);
}
getch();
closegraph();
}
2、对于命令行菜单,直接通过不断刷新输出来模拟菜单行为。
例程:
#include stdio.h
#include stdlib.h
#include string.h
int n,t,k;
int m;
char s1[20],s2[20],c;
char **l;
char *num[]={"one","two","three","four","five","six","seven","eight","nine","ten"};
void menu()
{
printf("\n\n\t\t*******************************************************\n");
printf("\t\t** 1.查找字符串S1中S2出现的次数 **\n");
printf("\t\t** 2.统计字符串中大小写字母,数字出现的次数 **\n");
printf("\t\t** 3.将数字翻译成英语 **\n");
printf("\t\t** 4.结束 **\n");
printf("\t\t*******************************************************\n");
printf("\t\t 您的输入:");
fflush(stdin);
scanf("%d",n);
}
void check()
{
char a[20],b[20];
int j=0,k,m,l=0;
int t=0,n=0;
printf("请输入主字符串:\n");
scanf("%s",a);
k=strlen(a);
printf("请输入子字符串:\n");
scanf("%s",b);
m=strlen(b);
for(n=0;nk;n++)
if(a[n]==b[0])
{
j++; /*记录相同的字符数*/
do
{
if(a[++n]==b[++t])
{
j++;
if(j==m)
{
l++;/*子字符串相同数*/
j=0;/*判断后相同字符数归零*/
t=-1;/*判断中if中++t;t将会归零*/
}
}
else
{
j=0;
t=0;
break;/*如果不同跳出while循环让for使n+1继续判断*/
}
}while(a[n]!='\0');/*查找完字符数组a结束*/
}
printf("子字符串出现次数:\n%d\n",l);
}
void cout()
{
int n=0,t=0,k=0;
printf("请输入一个字符串:\n");
fflush(stdin);/*清除缓冲*/
while((c=getchar())!='\n')
{
if(c='a'c='z')
n++;
if(c='A'c='Z')
t++;
if(c='0'c='9')
k++;
}
printf("有大写字母:\n%d\n",t);
printf("有小写字母:\n%d\n",n);
printf("有数字:\n%d\n",k);
}
void number()
{
l=num;
printf("请输入一个数字:(0-10)\n");
fflush(stdin);
scanf("%d",m);
printf("%d对应的英文是:\n%s\n",m,*(l+m-1));
}
void main()
{
while(1)
{
system("cls");
menu();
switch(n)
{
case 1:system("cls");check();system("pause");break;
case 2:system("cls");cout();system("pause");break;
case 3:system("cls");number();system("pause");break;
case 4:system("cls");break;
default:system("cls");break;
}
if(n==4) break;
}
printf("感谢使用\n");
}