当前位置:首页 » 编程语言 » c语言中的综合设计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中的综合设计

发布时间: 2023-05-24 21:26:58

c语言综合实验设计报告


题目: C语言输出万年历

学院:

专业:

班级:

姓名:

设计日期:总分:

一、设计题目:

C语言输出万年历

二、题目阐述及设计思路:

C语言输出万年历,输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。本程序运用的万年历的计算公式: d=a-1+(a-1)/4-(a-1)/100+(a-1)/400+c; 其中a为年c为该日期在本年中的天数,d取整数,当d/7余数0时是星期天,余数1时是星期一依此类推。

三、主要知识点:

运用函数调用,if,else函数switch语句。for,while,循环语句。

四、程序清单:

#include <stdio.h>

int m_day(int year,int month)/*此函数是给定年,月,计算此月有多少天.*/

{

if ((year%4==0 &&year%100!=0) ?? (year%400==0))

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;

case 4: case 6: case 9: case 11: return 30;

case 2: return 29;

}

else

switch(month)

{

case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;

case 4: case 6: case 9: case 11: return 30;

case 2: return 28;

}

}

int main()

{

int year,month;

int i, days=0, d, day=0;

printf ("Enter the year and month:\n");

scanf ("%d %d ", &year, &month );

for (i=1;i<month; i++)

days+=m_day (year,i);

d=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days+1;

printf("%d-%d\n",year,month);

printf(" Sun Mon Tue Wed Thu Fri Sat\n");

for (i=0;i<d%7;i++)

printf(" ");

for (i=1;i<=7-d%7;i++)

{

day++;

printf("%5d",day);

}

printf("\n");

while(1)

{

for (i=1;i<=7;i++)

{

day++;

if (day>m_day(year,month))

printf("%5d",day);

}

printf("\n");

}

}

五、设计结果说明:

1、设计优点:

程序充分利用所学的C语言知识,运用了函数的调用、循环语句、以及return语句,使得编程更加有条理。简单易懂,结构清晰,也使得程序的使用更加方便。

2、设计不足:

在编程序时,由于考虑到时间和受所学知识的限制,只能输入年份、月份,计算得到的是这一天是星期几;给定年,月,计算此月有多少天 。而并不能输入公历的年月日,输出农历年月日以及输入农历节气,输出当年农历的年月日及公历年月日。

② c语言程序设计(周信东版)的综合程序设计如下:编写程序,从键盘输入某楼6家住户某月的水电消耗及水费和电费

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

int main()
{
char user[4];
char waterNum[4];
char elecNum[4];
char inlinebuf[32];
char outlinebuf[32];
char pbuf[256];
FILE *fp1;
FILE *fp2;

int WaterNum=0;
int ElecNum=0;
int length =0;
int m=0;
int n=0;
int weishuflag=0;
int flagnum=0;
int i=0;
int j=0;

float waterPrice=0.0;
float elecPrice=0.0;

if((fp1=fopen("./input.dat","r"))==NULL)
{
printf("open input data error!\n");
return -1;
}

if((fp2=fopen("./change.dat","w"))==NULL)
{
printf("open input data error!\n");
return -1;
}

fseek(fp1,0,SEEK_END);
length = ftell(fp1);
fseek(fp1,0,SEEK_SET);
memset(pbuf,0,sizeof(pbuf));

printf("the input data length == %d\n",length);
fread(pbuf,length,1,fp1);

fseek(fp2, 0, SEEK_SET);
sprintf(outlinebuf,"住户\t\t水费\t\t电费\n");
fputs(outlinebuf, fp2);

while(length--)
{
if(pbuf[m]!='\n')
{
inlinebuf[n]=pbuf[m];
n++;
}
else
{
j = 0;
inlinebuf[n++]='\t'; //为处理每一行的最后一个数据(即用电量),需加入一个tab或空格键
inlinebuf[n] = '\0';//一行数据结束
while( inlinebuf[j] != '\0')
{
switch(flagnum)
{
case 0: //用户
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
user[i]=inlinebuf[j];
i++;
}
else
{
user[i]='\0';
flagnum++;//表示之前获取的是住户,下两个数据分别获取用水量与用电量
i=0;
}
break;

case 1: //用水量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
waterNum[i]=inlinebuf[j];
i++;
}
else
{
waterNum[i]='\0';
weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内
flagnum++;//表示下个数据获取的是用电量
if(weishuflag == 1)
{
WaterNum = waterNum[0] - 48;
}
else if(weishuflag == 2)
{
WaterNum = (waterNum[0] - 48)*10 + (waterNum[1] - 48);
}
else
{
WaterNum = (waterNum[0] - 48)*100 + (waterNum[1] - 48)*10 + (waterNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;

case 2: //用电量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
elecNum[i]=inlinebuf[j];
i++;
}
else
{
elecNum[i]='\0';
weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内
flagnum = 0;//表示一行三个数据获取完毕
if(weishuflag == 1)
{
ElecNum = elecNum[0] - 48;
}
else if(weishuflag == 2)
{
ElecNum = (elecNum[0] - 48)*10 + (elecNum[1] - 48);
}
else
{
ElecNum = (elecNum[0] - 48)*100 + (elecNum[1] - 48)*10 + (elecNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;
default:
break;
}
j++;
}
waterPrice = (float)WaterNum * 1.5;
elecPrice = (float)ElecNum * 0.5;
printf("The user == %s,waterNum == %d,elecNum == %d\n",user,WaterNum,ElecNum);//打印用户,用水量,用电量
printf("The user == %s,waterPrice == %.1f,elecPrice == %.1f\n\n",user,waterPrice,elecPrice);//打印用户,水费,电费
sprintf(outlinebuf,"%3s \t\t%4.1f \t\t%4.1f\n",user,waterPrice,elecPrice);

fputs(outlinebuf, fp2);//写入每一行数据(数据格式为 住户 + 水费 + 电费)
memset(outlinebuf,0,sizeof(outlinebuf));
memset(inlinebuf,0,sizeof(inlinebuf));
n=0; //一行数据处理结束,开始新的一行
}
m++;
}

fclose(fp1);
fclose(fp2);
return 0;
}
input.dat(每一行数据分别为住户 用水量 用电量,以空格或tab键隔开,且每行数据必须以回车结尾)
101 5 150
201 4 90
301 4 120
401 3 78
501 4 60
601 6 105
charge.dat (输出文件格式如下)
住户 水费 电费
101 7.5 75.0
201 6.0 45.0
301 6.0 60.0
401 4.5 39.0
501 6.0 30.0
601 9.0 52.5

③ C语言综合程序设计 个人生活费管理系统

这程序可以先定义结构体
struct student
{
char name[20];
int id;
........
};
题目要求用malloc分配内存 建议用链表做
模糊查找用strstr
如果楼主觉得有难度 可以look look 我的 name,然后jia me,我原创与你

④ C语言综合设计

  • 如果对楼主有帮助,给个采纳好不,谢谢啦

  • 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
    掉不满足条件的排列。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int i,j,k;
    printf(" ");
    for(i=1;i<5;i++) /*以下为三重循环*/
    for(j=1;j<5;j++)
    for (k=1;k<5;k++)
    {
    if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
    printf("%d,%d,%d ",i,j,k);
    }
    getch();
    }


  • ==============================================================
    【程序2】
    题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的凳巧闷部分,可可提
    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
    1.程序分宽清析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    long int i;
    int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    scanf("%ld",&i);
    bonus1=100000*0. 1;
    bonus2=bonus1+100000*0.75;
    bonus4=bonus2+200000*0.5;
    bonus6=bonus4+200000*0.3;
    bonus10=bonus6+400000*0.15;
    if(i<=100000)
    bonus=i*0.1;
    else if(i<=200000)
    bonus=bonus1+(i-100000)*0.075;
    else if(i<=400000)
    bonus=bonus2+(i-200000)*0.05;
    else if(i<=600000)
    bonus=bonus4+(i-400000)*0.03;
    else if(i<=1000000)
    bonus=bonus6+(i-600000)*0.015;
    else
    bonus=bonus10+(i-1000000)*0.01;
    printf("bonus=%d",bonus);
    getch();
    }


  • ==============================================================
    【程序3】
    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
    1.程序分析:在10万以内判断,枣弯先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
    的结果满足如下条件,即是结果。请看具体分析:
    2.程序源代码:

  • 复制代码代码如下:


  • #include "math.h"
    #include "stdio.h"
    #include "conio.h"
    main()
    {
    long int i,x,y,z;
    for (i=1;i<100000;i++)
    {
    x=sqrt(i+100); /*x为加上100后开方后的结果*/
    y=sqrt(i+268); /*y为再加上168后开方后的结果*/
    if(x*x==i+100&&y*y==i+268) /*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
    printf(" %ld ",i);
    }
    getch();
    }


  • ==============================================================
    【程序4】
    题目:输入某年某月某日,判断这一天是这一年的第几天?
    1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
    情况,闰年且输入月份大于3时需考虑多加一天。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int day,month,year,sum,leap;
    printf(" please input year,month,day ");
    scanf("%d,%d,%d",&year,&month,&day);
    switch(month) /*先计算某月以前月份的总天数*/
    {
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:printf("data error");break;
    }
    sum=sum+day; /*再加上某天的天数*/
    if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
    leap=1;
    else
    leap=0;
    if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/
    sum++;
    printf("It is the %dth day.",sum);
    getch();
    }


  • ==============================================================
    【程序5】
    题目:输入三个整数x,y,z,请把这三个数由小到大输出。
    1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
    然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int x,y,z,t;
    scanf("%d%d%d",&x,&y,&z);
    if (x>y)
    {t=x;x=y;y=t;} /*交换x,y的值*/
    if(x>z)
    {t=z;z=x;x=t;} /*交换x,z的值*/
    if(y>z)
    {t=y;y=z;z=t;} /*交换z,y的值*/
    printf("small to big: %d %d %d ",x,y,z);
    getch();
    }


  • ==============================================================
    【程序6】
    题目:用*号输出字母C的图案。
    1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    printf("Hello C-world! ");
    printf(" **** ");
    printf(" * ");
    printf(" * ");
    printf(" **** ");
    getch();
    }


  • ==============================================================
    【程序7】
    题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
    1.程序分析:字符共有256个。不同字符,图形不一样。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    char a=176,b=219;
    printf("%c%c%c%c%c ",b,a,a,a,b);
    printf("%c%c%c%c%c ",a,b,a,b,a);
    printf("%c%c%c%c%c ",a,a,b,a,a);
    printf("%c%c%c%c%c ",a,b,a,b,a);
    printf("%c%c%c%c%c ",b,a,a,a,b);
    getch();
    }


  • ==============================================================
    【程序8】
    题目:输出9*9口诀。
    1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int i,j,result;
    printf(" ");
    for (i=1;i<10;i++)
    {
    for(j=1;j<10;j++)
    {
    result=i*j;
    printf("%d*%d=%-3d",i,j,result); /*-3d表示左对齐,占3位*/
    }
    printf(" "); /*每一行后换行*/
    }
    getch();
    }


  • ==============================================================
    【程序9】
    题目:要求输出国际象棋棋盘。
    1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int i,j;
    for(i=0;i<8;i++)
    {
    for(j=0;j<8;j++)
    if((i+j)%2==0)
    printf("%c%c",219,219);
    else
    printf(" ");
    printf(" ");
    }
    getch();
    }


  • ==============================================================
    【程序10】
    题目:打印楼梯,同时在楼梯上方打印两个笑脸。
    1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int i,j;
    printf("11 "); /*输出两个笑脸*/
    for(i=1;i<11;i++)
    {
    for(j=1;j<=i;j++)
    printf("%c%c",219,219);
    printf(" ");
    }
    getch();
    }


  • 【程序11】
    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    long f1,f2;
    int i;
    f1=f2=1;
    for(i=1;i<=20;i++)
    {
    printf("%12ld %12ld",f1,f2);
    if(i%2==0) printf(" "); /*控制输出,每行四个*/
    f1=f1+f2; /*前两个月加起来赋值给第三个月*/
    f2=f1+f2; /*前两个月加起来赋值给第三个月*/
    }
    getch();
    }


  • ==============================================================
    【程序12】
    题目:判断101-200之间有多少个素数,并输出所有素数。
    1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
    则表明此数不是素数,反之是素数。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    #include "math.h"
    main()
    {
    int m,i,k,h=0,leap=1;
    printf(" ");
    for(m=101;m<=200;m++)
    {
    k=sqrt(m+1);
    for(i=2;i<=k;i++)
    if(m%i==0)
    {
    leap=0;
    break;
    }
    if(leap)
    {
    printf("%-4d",m);
    h++;
    if(h%10==0)
    printf(" ");
    }
    leap=1;
    }
    printf(" The total is %d",h);
    getch();
    }


  • ==============================================================
    【程序13】
    题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
    1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int i,j,k,n;
    printf("'water flower'number is:");
    for(n=100;n<1000;n++)
    {
    i=n/100;/*分解出百位*/
    j=n/10%10;/*分解出十位*/
    k=n%10;/*分解出个位*/
    if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
    printf("%-5d",n);
    }
    getch();
    }


  • ==============================================================
    【程序14】
    题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
    重复执行第一步。
    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
    2.程序源代码:

  • 复制代码代码如下:


  • /* zheng int is divided yinshu*/
    #include "stdio.h"
    #include "conio.h"
    main()
    {
    int n,i;
    printf(" please input a number: ");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2;i<=n;i++)
    while(n!=i)
    {
    if(n%i==0)
    {
    printf("%d*",i);
    n=n/i;
    }
    else
    break;
    }
    printf("%d",n);
    getch();
    }


  • ==============================================================
    【程序15】
    题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
    60分以下的用C表示。
    1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int score;
    char grade;
    printf("please input a score ");
    scanf("%d",&score);
    grade=score>=90?'A':(score>=60?'B':'C');
    printf("%d belongs to %c",score,grade);
    getch();
    }


  • ==============================================================
    【程序16】
    题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
    1.程序分析:利用辗除法。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int a,b,num1,num2,temp;
    printf("please input two numbers: ");
    scanf("%d,%d",&num1,&num2);
    if(num1<num2)/*交换两个数,使大数放在num1上*/
    {
    temp=num1;
    num1=num2;
    num2=temp;
    }
    a=num1;b=num2;
    while(b!=0)/*利用辗除法,直到b为0为止*/
    {
    temp=a%b;
    a=b;
    b=temp;
    }
    printf("gongyueshu:%d ",a);
    printf("gongbeishu:%d ",num1*num2/a);
    getch();
    }


  • ==============================================================
    【程序17】
    题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    1.程序分析:利用while语句,条件为输入的字符不为' '.

    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    char c;
    int letters=0,space=0,digit=0,others=0;
    printf("please input some characters ");
    while((c=getchar())!=' ')
    {
    if(c>='a'&&c<='z'||c>='A'&&c<='Z')
    letters++;
    else if(c==' ')
    space++;
    else if(c>='0'&&c<='9')
    digit++;
    else
    others++;
    }
    printf("all in all:char=%d space=%d digit=%d others=%d ",letters,
    space,digit,others);
    getch();
    }


  • ==============================================================
    【程序18】
    题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
    共有5个数相加),几个数相加有键盘控制。
    1.程序分析:关键是计算出每一项的值。
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    int a,n,count=1;
    long int sn=0,tn=0;
    printf("please input a and n ");
    scanf("%d,%d",&a,&n);
    printf("a=%d,n=%d ",a,n);
    while(count<=n)
    {
    tn=tn+a;
    sn=sn+tn;
    a=a*10;
    ++count;
    }
    printf("a+aa+...=%ld ",sn);
    getch();
    }


  • ==============================================================
    【程序19】
    题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
    找出1000以内的所有完数。
    1. 程序分析:请参照程序<--上页程序14.
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "conio.h"
    main()
    {
    static int k[10];
    int i,j,n,s;
    for(j=2;j<1000;j++)
    {
    n=-1;
    s=j;
    for(i=1;i<j;i++)
    {
    if((j%i)==0)
    {
    n++;
    s=s-i;
    k[n]=i;
    }
    }
    if(s==0)
    {
    printf("%d is a wanshu",j);
    for(i=0;i<n;i++)
    printf("%d,",k);
    printf("%d ",k[n]);
    }
    }
    getch();
    }


  • ==============================================================
    【程序20】
    题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
    第10次落地时,共经过多少米?第10次反弹多高?
    1.程序分析:见下面注释
    2.程序源代码:

  • 复制代码代码如下:


  • #include "stdio.h"
    #include "stdio.h"
    main()
    {
    float sn=100.0,hn=sn/2;
    int n;
    for(n=2;n<=10;n++)
    {
    sn=sn+2*hn;/*第n次落地时共经过的米数*/
    hn=hn/2; /*第n次反跳高度*/
    }
    printf("the total of road is %f ",sn);
    printf("the tenth is %f meter ",hn);
    getch();
    }

⑤ C语言程序设计综合程序设计 一、目的要求 1. 加深对《C语言程序设计》课程所学知识的理解; 2. 掌握结构化

可以利用stack来做

⑥ 跪求一个C语言综合设计---编写一个通讯录管理程序,包含序号,姓名,电话,地址,

struct persons
{
char name[16];
char sex[6];
char age[3];
char bir[5];
char phnum[18];
char addr[20];
}persons[100];
/**********************************************************************************/
typedef struct lnode
{
char name[16]; /*姓稿滚名*/
char sex[6]; /*性别:以man代表男性,woman代表女性*/
char age[3]; /*年龄*/
char bir[5]; /*生日,其中前两位数字代表月份,后两位数字代表日期*/
char phnum[18]; /*电话*/
char addr[20]; /*地址*/
struct lnode *next;
}listnode,*linklist;
/*********************************************************************************/
linklist head=NULL,r=NULL;
listnode *s,*p0,*p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
int i;
char name1[16],phnum1[18],addr1[20],ch,a,b;
char s1[20];
FILE *fp;

//以亏戚上为stuct.h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include"struct.h"

/************************************************************************/
void creat() /*将文件的信息读入结构体数组,再转存入链表中*/
{
int j;
long k;
fp=fopen("TXL.txt","r+"); /*如果这个文件存在,那么打开这个文件*/
if(fp!=NULL)
{
for(i=1;i<100;i++)
{
j=fgetc(fp);
if(j==EOF)
return;
k=i-1;
fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/
fread(&persons[i],sizeof(struct persons),1,fp);
s=(linklist)malloc(sizeof(listnode)); /*存到链表中*/
strcpy(s->name,persons[i].name);
strcpy(s->销敬陵sex,persons[i].sex);
strcpy(s->age,persons[i].age);
strcpy(s->bir,persons[i].bir);
strcpy(s->phnum,persons[i].phnum);
strcpy(s->addr,persons[i].addr);
if(head==NULL)
head=s;
else
r->next=s;
r=s;}
}
else
{ fp=fopen("TXL.txt","w+");/*如果这个文件不存在,那么为读写创建一个默认文件TXL.txt*/
i=1;
}
}
/************************************************************************/
void Show()/*显示默认文件里面的所有信息*/
{ p1=head;
if(p1==NULL)
{ printf("\n\n\t\t There is nothing in the addr-book!");
printf("\n\n\t\t Please insert!");
}/*如果文件为空,则给出提示*/
while(p1!=NULL)
{
printf("\n\tName:%s ",p1->name);
printf("Sex:%s ",p1->sex);
printf("Age:%s ",p1->age);
printf("Bir:%s ",p1->bir);
printf("Phnum:%s ",p1->phnum);
printf("Addr:%s\n",p1->addr);
p1=p1->next;
}
}
/*****************************************************************/
void Delete_1() /*定义按姓名删除的函数*/
{
void menu();
printf("\n\n\t\tPlease input the name:");
gets(name1); /*输入要删除人的姓名*/
p4=head;
while(strcmp(name1,p4->name)!=0&&p4!=NULL)
p4=p4->next;
if(p4==NULL)
{
printf("\n\n\t\tIt is not found in the TXL!");
menu();
}/*如果找不到该人,则返回主菜单*/
else
{ printf("\t\tThe information have been deleted is that:");
printf("\n\t\tname:%s ",p4->name);
printf("sex:%s ",p4->sex);
printf("age:%s ",p4->age);
printf("bir:%s ",p4->bir);
printf("phnum:%s ",p4->phnum);
printf("addr:%s\n",p4->addr);
}
p4=head;
if(strcmp(p4->name,name1)==0)
{
p4=p4->next;
head=p4;
}
else
{
while(strcmp(p4->next->name,name1)!=0)
p4=p4->next;
p5=p4->next;
p4->next=p5->next;
free(p5);
}
}
/*****************************************************************/
void Delete_2() /*定义按电话号码删除的函数*/
{
void menu();
printf("\n\n\t\tPlease input the phnum:");
gets(phnum1); /*输入要删除的人的电话号码*/
p6=head;
while(strcmp(phnum1,p6->phnum)!=0&&p6!=NULL)
p6=p6->next;
if(p6==NULL)
{
printf("\n\n\t\tIt is not found in the TXL!");
menu();
}/*如果找不到该电话号码,则返回主菜单*/
else
{ printf("\t\tThe information have been deleted is that:");
printf("\n\t\tname:%s ",p6->name);
printf("sex:%s ",p6->sex);
printf("age:%s ",p6->age);
printf("bir:%s ",p6->bir);
printf("phnum:%s ",p6->phnum);
printf("addr:%s\n",p6->addr);
}
p6=head;
if(strcmp(p6->phnum,phnum1)==0)
{
p6=p6->next;
head=p6;
}
else
{
while(strcmp(p6->next->phnum,phnum1)!=0)
p6=p6->next;
p7=p6->next;
p6->next=p7->next;
free(p7);
}
}
/******************************************************************/
void Delete()/*在Delete()函数中按需要选择用不同的删除方式*/
{
printf("\n\t\tPlease make a choice below:\n");
printf("\t\t1.Delete by name.\n");
printf("\t\t2.Delete by phnum.\n");
printf("\t\tPlease insert your choice:");
a=getche();
switch(a)
{
case '1':Delete_1();
break;
case '2':Delete_2();
break;
default:
printf("\n\t\t**********************************\n");
printf("\n\t\t The number should 1-2!!! \n");
printf("\n\t\t**********************************");
break;
}
}
/*****************************************************************/
void Search_1() /*按姓名查找的函数定义*/
{

printf("\n\n\t\tPlease input the name:");
p8=head;
gets(name1); /*输入要查找的人的姓名*/
while(strcmp(name1,p8->name)!=0&&p8!=NULL)
p8=p8->next;
if(p8==NULL)
printf("\n\n\t\tIt is not found in the TXL!");
else
{
printf("\n\t\tname:%s ",p8->name);
printf("sex:%s ",p8->sex);
printf("age:%s ",p8->age);
printf("bir:%s ",p8->bir);
printf("phnum:%s ",p8->phnum);
printf("addr:%s\n",p8->addr);
}
}
/****************************************************************/
void Search_2()/*按电话号码查找的函数定义*/
{

printf("\n\n\t\tPlease input the phnum:");
p9=head;
gets(phnum1);/*输入要查找的人的电话号码*/
while(strcmp(phnum1,p9->phnum)!=0&&p9!=NULL)
p9=p9->next;
if(p9==NULL)
printf("\n\n\t\tIt is not found in the TXL!");
else
{
printf("\n\t\tname:%s ",p9->name);
printf("sex:%s ",p9->sex);
printf("age:%s ",p9->age);
printf("bir:%s ",p9->bir);
printf("phnum:%s ",p9->phnum);
printf("addr:%s\n",p9->addr);
}
}
/***************************************************************/
void Search_3()/*定义按宿舍(地址)查找的函数*/
{

printf("\n\n\t\tPlease input the addr:");
p0=head;
gets(addr1);/*输入要查到的人的宿舍(地址)*/
while(strcmp(addr1,p0->addr)!=0&&p0!=NULL)
p0=p0->next;
if(p0==NULL)
printf("\n\n\t\tIt is not found in the TXL!");
else
{
printf("\n\t\tname:%s ",p0->name);
printf("sex:%s ",p0->sex);
printf("age:%s ",p0->age);
printf("bir:%s ",p0->bir);
printf("phnum:%s ",p0->phnum);
printf("addr:%s\n",p0->addr);
}
}
/*************************************************************************/
void Search()/*在Search中按需要调用不同的查找方式*/
{
printf("\n\t\tPlease make a choice below:\n");
printf("\t\t1.Search by name.\n");
printf("\t\t2.Search by phnum.\n");
printf("\t\t3.Search by addr.\n");
printf("\t\tPlease insert your choice:");
b=getche();
switch(b)
{
case '1':Search_1();
break;
case '2':Search_2();
break;
case '3':Search_3();
break;
default:
printf("\n\t\t**********************************\n");
printf("\n\t\t The number should 1-3!!! \n");
printf("\n\t\t**********************************");
break;
}

}
/************************************************************************/
void Insert() /*向文件插入一组的信息*/
{
s=(linklist)malloc(sizeof(listnode));
printf("\n\t\tPlease insert the someone's information:");
printf("\n\t\tName:");
scanf("%s",s->name);
printf("\t\tSex:");
scanf("%s",s->sex);
printf("\t\tAge:");
scanf("%s",s->age);
printf("\t\tBir:");
scanf("%s",s->bir);
printf("\t\tPhnum:");
scanf("%s",s->phnum);
printf("\t\tAddr:");
scanf("%s",s->addr);
if(head==NULL)
head=s;
else
r->next=s;
r=s;
}
/***********************************************************************/
void Save() /*将信息保存在默认文件里面*/
{ int j;
fp=fopen("TXL.txt","w");
for(p2=head,j=0;p2!=NULL;j++,p2=p2->next)
{
strcpy(persons[j].name,p2->name);
strcpy(persons[j].sex,p2->sex);
strcpy(persons[j].age,p2->age);
strcpy(persons[j].bir,p2->bir);
strcpy(persons[j].phnum,p2->phnum);
strcpy(persons[j].addr,p2->addr);
fwrite(&persons[j],sizeof(struct persons),1,fp);
}
}
/************************************************************************/
void menu ()/*显示主菜单*/
{
do
{
printf("\n\n\n\n\n");
printf("\n\t\t ************************************");
printf("\n\t\t * Please make a choice below: *");
printf("\n\t\t * 1.Show all the information *");
printf("\n\t\t * 2.Delete a piece of information *");
printf("\n\t\t * 3.Search a piece of information *");
printf("\n\t\t * 4.Insert a piece of information *");
printf("\n\t\t * 5.Save and Exit *");
printf("\n\t\t * 6.Exit and Without Save *");
printf("\n\t\t * Input Your Choice: *");
printf("\n\t\t ************************************");
ch=getche();
switch(ch)
{
case '1': Show();
break;
case '2': Delete();
break;
case '3': Search();
break;
case '4': Insert();
break;
case '5': Save();fclose(fp);exit(0);
case '6':fclose(fp);exit(0);
break;
default:
printf("\n\t\t**********************************\n");
printf("\n\t\t The number should 1-6!!! \n");
printf("\n\t\t**********************************");
break;
}
}
while(1);
}
/**********************************************************************/
void main()
{
creat();
menu();
}

⑦ 求大神,,c语言综合设计,学生选课系统

OK ,需要帮忙的话我提供。

⑧ 大神帮忙写一篇C语言程序设计综合性实验

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#defineMAXSIZE36

structWord{
charword[MAXSIZE];
unsignedsize;
}words[10000];

intn=0;

voidSort(){
//没有时间写了
}

voidAdditive(charword[]){
inti,flag=1;
for(i=0;i<n&&flag;++i){
if(strcmp(words[i].word,word)==0){
++words[i].size;
flag=0;
}
}
if(flag){
strcpy(words[n].word,word);
words[n].size=1;
++n;
}
}

intmain(){
inti,ch;
charword[MAXSIZE];
FILE*fin=fopen("case1.in","rt");
if(fin==NULL){
printf("无法打开数据文件! ");
return1;
}
i=0;
while((ch=fgetc(fin))!=EOF){
if(isalpha(ch))word[i++]=tolower(ch);
elseif(i){
word[i]='';
i=0;
Additive(word);
}
}
if(i){
word[i]='';
Additive(word);
}
fclose(fin);
Sort();
return0;
}

⑨ 求C语言程序综合设计

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>

typedef struct _student
{
char name[30];
int number;
int chinese, math;
int total;
} student;

int index = 0;
student ss[100];

void asort()
{
int i, j, k;

for (i = 0; i < index-1; ++i)
{
k = i;

for (j = i + 1; j < index; ++j)
{
if (ss[k].total < ss[j].total)
{
k = j;
}
}

if (k != i)
{
student s;
memcpy(&s, &ss[i], sizeof(student));
memcpy(&ss[i], &ss[k], sizeof(student));
memcpy(&ss[k], &s, sizeof(student));
}
}
}

void input()
{
printf("\n请输入学生信息(姓名、学号、语文、数学成绩)!结束输入。\n");

while (1)
{
scanf("%s", ss[index].name);

if (ss[index].name[0] == '!')
break;

scanf("%d %d %d", &ss[index].number, &ss[index].chinese, &ss[index].math);
ss[index++].total = ss[index].chinese + ss[index].math;
}
}

void rank()
{
int i = 0, r = 1;
printf("\nNo: Total: Name:\n");

for (; i < index - 1; ++i)
{
printf("%d\t\t%d\t\t%s\n", r, ss[i].total, ss[i].name);

if (ss[i].total != ss[i+1].total)
++r;
}

printf("%d\t\t%d\t\t%s\n", r, ss[i].total, ss[i].name);
}
void find()
{
char nm[30];
int i;

printf("\n请输入需要查找的学生名:\n");
scanf("%s", nm);

for (i = 0; i < index; ++i)
{
if (!strcmp(ss[i].name, nm))
break;
}

if (i < index)
printf("学号:%d\t姓名:%s\t语文成绩:%d\t数学成绩:%d\t总成绩:%d\n",
ss[i].number, ss[i].name, ss[i].chinese, ss[i].math, ss[i].total);
else
printf("没有找到合适的记录!\n");
}

void statistic()
{
int min, max, i, tt;
float avg = 0., pr = 0.;
max = tt = 0;
min = 100;

for (i = 0; i < index; ++i)
{
tt += ss[i].chinese;

if (ss[i].chinese < min)
min = ss[i].chinese;

if (ss[i].chinese > max)
max = ss[i].chinese;

if (ss[i].chinese > 60)
++pr;
}

avg = (float)tt / index;

if (index == 1)
{
if (ss[0].chinese < 60)
pr = 0.;
else
pr = 100.;
}
else
pr = (pr / index) * 100;

printf("\n语文成绩的平均分、及格率、最高分、最低分是:%0.2f %0.2f %d %d\n",
avg, pr, max, min);

avg = pr = 0.;
max = tt = 0;
min = 100;

for (i = 0; i < index; ++i)
{
tt += ss[i].math;

if (ss[i].math < min)
min = ss[i].math;

if (ss[i].math > max)
max = ss[i].math;

if (ss[i].math > 60)
++pr;
}

avg = (float)tt / index;

if (index == 1)
{
if (ss[0].math < 60)
pr = 0.;
else
pr = 100.;
}
else
pr = (pr / index) * 100;

printf("语文成绩的平均分、及格率、最高分、最低分是:%0.2f %0.2f %d %d\n",
avg, pr, max, min);
}

void display()
{
int i = 0;
printf("\n学号\t姓名\t语文成绩\t数学成绩\t总成绩\n");

for (;i < index; ++i)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\n", ss[i].number, ss[i].name,
ss[i].chinese, ss[i].math, ss[i].total);
}
}

void menu()
{
int choice;

while (1)
{
puts("\n\n请输入你想进行的操作:\n");
puts("1. 添加学生 2. 总分排名 3. 查找信息");
puts("4. 显示统计 5. 成绩表 0. 退出程序");

do
scanf("%d", &choice);
while (choice < 0 || choice > 5);

if (choice == 0) break;

switch (choice)
{
case 1:
input();
asort();
break;
case 2:
rank();
break;
case 3:
find();
break;
case 4:
statistic();
break;
case 5:
display();
break;
}
}
}

int main(void)
{
menu();
return 0;
}

⑩ c语言综合设计报告,急急急!!!程序已经有了,报告该怎么写

实验名称:函数使用练习
一、预习准备
1. 实验目的:
(1) 掌握函数的定义方法;
(2) 掌握实参与形参“值传递”的意义和方法;
(3) 理解变量的作用域概念,学习在程序中正确定义和引用变量。
2. 实验仪器与设备:PC 机,Windows,Visual C++。
3. 程序流程图:
(1) 写一个函数,用于判断一个数是否为“水仙花数”。所谓“水仙花数”是指一个
3 位数,其各位数字的立方和等于该数本身。调用该数打印出所有的“水仙花数”。
函数:flower,用于判断一个三位数是否为“水仙花数”。
输入:x,三位整数。
输出:0,x 不是“水仙花数”;
1,x 是“水仙花数”。
流程:如图1 所示。
图 1 函数flower 流程图
主函数流程如图 2 所示。
http://blog.sciencenet.cn/u/wellwang
2
图 2 “水仙花数”程序主函数流程图
(2) 编写一个函数实现十进制整数到二进制数的转换,用非递归的方法实现该函数。
在主函数中,输入一个整数,调用该函数将这个整数转换为二进制数,输出二
进制数。
函数:D2B,用于将一个十进制整数转换为二进制数。
输入:d,十进制数;
b,整型数组。
输出:整型值,二进制数长度。
流程如图3 所示。
主函数流程如图 4 所示。
二、实验过程
程序一:
1. 实验步骤:
(1) 创建Win32 Console Application 工程,工程名:E5_1;
(2) 创建C++ Source File ,文件名:E5_1;
http://blog.sciencenet.cn/u/wellwang
3
图 3 函数D2B 流程图
图 4 “十进制整数转换二进制数”程序主函数流程图
http://blog.sciencenet.cn/u/wellwang
4
(3) 输入源程序:
#include <stdio.h>
int flower(int x);
void main()
{
int i;
for(i=100;i<1000;i++)
if(flower(i))
printf("%d\n",i);
}
int flower(int x)
{
int a,b,c;
a=x/100;
b=(x%100)/10;
c=x%10;
if(x==a*a*a+b*b*b+c*c*c)
return 1;
else
return 0;
}
(4) 编译,运行程序:
编译中未出现警告和错误。运行程序,程序输出结果。
2. 实验数据:
程序输出:
153
370
371
407
程序二:
1. 实验步骤:
(1) 创建Win32 Console Application 工程,工程名:E5_2;
(2) 创建C++ Source File ,文件名:E5_2;
(3) 输入源程序:
#include <stdio.h>
int D2B(int d,int b[]);
void main()
{
int i,d,l,b[10];
printf("请输入一个十进制数:");
scanf("%d",&d);
http://blog.sciencenet.cn/u/wellwang
5
l=D2B(d,b);
for(i=l-1;i>=0;i--)
printf("%d",b[i]);
printf("\n");
}
int D2B(int d,int b[])
{
int i=0;
do
{
b[i]=d%2;
d=d/2;
i++;
}while(d!=0);
return i;
}
(4) 编译,运行程序:
编译中未出现警告和错误。运行程序,程序输出结果。
2. 实验数据:
(1) 第一组数据:
输入:8
输出:1000
(2) 第二组数据:
输入:90
输出:1011010
(3) 第三组数据:
输入:0
输出:0
(4) 第四组数据:
输入:-10
输出:-10-10
三、实验总结
程序一输出数据正确。
程序二在输入的数为负整数(-10)时,输出结果不正确,这是因为负数在转换为
二进制的过程中,对2 取模的值可能为-1。对于负数,可以先取它们的绝对值进行转
换,转换完成后,再在二进制数前面加上负号即可。
通过本次实验,掌握了函数的原型说明、函数定义以及函数调用的方法;理解了
函数实参与形参“值传递”的意义;理解了变量作用域的概念;提高了编程水平和动
手能力。