经典C语言程序设计100例,部分有个人注解

您所在的位置:网站首页 c语言应用实例题 经典C语言程序设计100例,部分有个人注解

经典C语言程序设计100例,部分有个人注解

2023-11-20 07:51| 来源: 网络整理| 查看: 265

经典C语言程序设计100例

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 当然这里的去掉并不是减去而是条件判断,比如符合这个条件(i!=k&&i!=j&&j!=k)的才打印出来 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i 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 int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); 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);} -----------------------------------------------------------------------------

【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。最后把y、z中最大的一个数放在z位置上。 2.程序源代码: 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\n",x,y,z); }

【程序6】 题目:用*号输出字母C的图案。 1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 2.程序源代码: #include "stdio.h" main() { printf("Hello C-world!\n"); printf("  ****\n"); printf(" *\n"); printf(" * \n"); printf("  ****\n"); } -----------------------------------------------------------------------------

【程序7】 题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 1.程序分析:字符共有256个。不同字符,图形不一样。       2.程序源代码: #include "stdio.h" main() { char a=176,b=219; printf("%c%c%c%c%c\n",b,a,a,a,b); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",a,a,b,a,a); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",b,a,a,a,b);} -----------------------------------------------------------------------------

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

比如:i*j=i*j

1*1=1  1*2=2  1*3=3…

2*1=2  2*2=4  2*3=6… 2.程序源代码: #include "stdio.h" main() {   int i,j,result;   printf("\n");   for (i=1;i int i,j;

SetConsoleOoutputCP(437);//输入这行代码才能正常显示128后面的ask码 for(i=0;i int i,j;

SetConsoleOoutputCP(437);//输入这行代码才能正常显示128后面的ask码 printf("\1\1\n");/*输出两个笑脸*/ for(i=1;i long f1,f2; int i; f1=f2=1; for(i=1;i       if(m%i==0)        {leap=0;break;}

}

//如果是素数的话就打印出来 if(leap) {printf("%-4d",m);sum++;          if(h%10==0)          printf("\n");         }     leap=1;    }   printf("\nThe total is %d",sum); } -----------------------------------------------------------------------------

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

通过判断符合条件(百位*100+十位*10+个位==百位的三次方加十位的三次方加个位的三次方)的打印出来 2.程序源代码: main() { int i,j,k,n; printf("'water flower'number is:");   for(n=100;n     printf("%-5d",n);     }   } printf("\n"); } -----------------------------------------------------------------------------

【程序14】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果nk(不等于),但n能把k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行这步。 (3)如果n不能把k整除,则用k+1作为k的值,重复执行第一步,这里用一个while循环直到k==n跳出循环。

2.程序源代码: /* zheng int is divided yinshu*/ main() { int n,i; printf("\nplease input a number:\n"); scanf("%d",&n); printf("%d=",n); for(i=2;i     if(n%i==0)     { printf("%d*",i);      n=n/i;     }     else      break;    } } printf("%d",n);} -----------------------------------------------------------------------------

【程序15】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:条件运算符:(a>b)? a:b这是条件运算符的基本例子。 2.程序源代码: main() {   int score;   char grade;   printf("please input a score\n");   scanf("%d",&score);   grade= score>=90?'A':(score>=60?'B':'C');   printf("%d belongs to %c",score,grade); } -----------------------------------------------------------------------------

【程序16】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:把第一个值变成大的,第二个变成小的。利用辗除法:(1)把大的数%小的数取抹

(2)(大的那个数没用了)把小的数赋值给大的数,把取模获得的值赋值给小的值  3:重复前面两步,直到取模的值等于零,退出循环就可以获得 公约数:最后一次被求模所得的值  公倍数:输入的两个数相乘再除以公约数

2.程序源代码: main() {   int a,b,num1,num2,temp;   printf("please input two numbers:\n");   scanf("%d,%d",&num1,&num2);   if(num1   if(c>='a'&&c='A'&&c='0'&&c    tn=tn+a;//tn是下一项数值    sn=sn+tn;//sn是前面的数值总和加上下一项数值    a=a*10;//a是每次相邻两项的差值,    ++count;   } printf("a+aa+...=%ld\n",sn); } -----------------------------------------------------------------------------

【程序19】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程     找出1000以内的所有完数。 1. 程序分析:请参照程序   n=-1;   s=j;    for(i=1;i   printf("%d is a wanshu",j);   for(i=0;i    sn=sn+2*hn;/*第n次落地时共经过的米数*/    hn=hn/2; /*第n次反跳高度*/   } printf("the total of road is %f\n",sn); printf("the tenth is %f meter\n",hn); }

 

 【程序21】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个     第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下     的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: main() { int day,x1,x2; day=9; x2=1; while(day>0)   {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/   x2=x1;   day--;   } printf("the total is %d\n",x1); } -----------------------------------------------------------------------------

【程序22】 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定     比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出     三队赛手的名单。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,        则表明此数不是素数,反之是素数。        2.程序源代码: main() { char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/ for(i='x';i int i,j,k;

//前面四行 for(i=0;i   for(j=0;j   s=s+a/b;   t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/   } printf("sum is %9.6f\n",s); } -----------------------------------------------------------------------------

【程序25】 题目:求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。 2.程序源代码: main() { float n,s=0,t=1; for(n=1;n int i; int fact(); for(i=0;i

     int i=6;

     void palin(int n);

     printf("请输入6位字符串:");

     palin(i);

     printf("\n");

}

void palin(int n)

{

     char next;

     if(n

         next=getchar();

         palin(n-1);

         putchar(next);

     }}

【程序28】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第     3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后     问第一个人,他说是10岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道        第四人的岁数,依次类推,推到第一人(10岁),再往回推。 2.程序源代码: age(n) int n; { int c; if(n==1) c=10; else c=age(n-1)+2; return(c); } main() { printf("%d",age(5)); }

-----------------------------------------------------------------------------

【程序29】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) 2.程序源代码: main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);    else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);      else if (d!=0) printf("there are 2, %ld %ld\n",e,d);        else if (e!=0) printf(" there are 1,%ld\n",e); }

【程序30】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。    1.程序分析:同29例 2.程序源代码: main( ) { long ge,shi,qian,wan,x; scanf("%ld",&x); wan=x/10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/   printf("this number is a huiwen\n"); else   printf("this number is not a huiwen\n"); }

 

 【程序31】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续     判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 2.程序源代码: #include void main() { char letter; printf("please input the first letter of someday\n"); while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/ { switch (letter) {case 'S':printf("please input second letter\n");       if((letter=getch())=='a')        printf("saturday\n");       else if ((letter=getch())=='u')           printf("sunday\n");         else printf("data error\n");       break; case 'F':printf("friday\n");break; case 'M':printf("monday\n");break; case 'T':printf("please input second letter\n");       if((letter=getch())=='u')        printf("tuesday\n");       else if ((letter=getch())=='h')           printf("thursday\n");         else printf("data error\n");       break; case 'W':printf("wednesday\n");break; default: printf("data error\n");    }   } } -----------------------------------------------------------------------------

【程序32】 题目:Press any key to changecolor, do you want to try it. Please hurry up! 1.程序分析:             2.程序源代码: #include

#include

void main(void)

{   chara[16];

    intcolor;

    for(color = 0; color < 16; color++)

    {

        sprintf(a,"color%d",color);

        system(a);

        //textbackground(color);/*设置文本的背景颜色*/

        printf("Thisis color %d\r\n", color);

        cprintf("Pressany key to continue\r\n");

        getch();/*输入字符看不见*/

    }

} -----------------------------------------------------------------------------

【程序33】 题目:学习gotoxy()与clrscr()函数    1.程序分析: 2.程序源代码: #include void main(void) { clrscr();/*清屏函数*/ textbackground(2); gotoxy(1, 5);/*定位函数*/ cprintf("Output at row 5 column 1\n"); textbackground(3); gotoxy(20, 10); cprintf("Output at row 10 column 20\n"); } -----------------------------------------------------------------------------

【程序34】 题目:练习函数调用 1. 程序分析: 2.程序源代码: #include void hello_world(void) { printf("Hello, world!\n"); } void three_hellos(void) { int counter; for (counter = 1; counter int color; for (color = 1; color < 16; color++)   {   textcolor(color);/*设置文本颜色*/   cprintf("This is color %d\r\n", color);   } textcolor(128 + 15); cprintf("This is blinking\r\n"); } -----------------------------------------------------------------------------

【程序36】 题目:求100之内的素数    1.程序分析: 2.程序源代码: #include #include "math.h" #define N 101 main() { int i,j,line,a[N]; for(i=2;i   if(a[i]!=0)   {printf("%5d",a[i]);   line++;}   if(line==10)   {printf("\n"); line=0;} } } -----------------------------------------------------------------------------

 

【程序37】 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,        下次类推,即用第二个元素与后8个进行比较,并进行交换。        2.程序源代码: #include

void main(void){

    //对输入的十个数进行排序

   

     /*方法1:选择排序法,即从后9个比较过程中,选择一个最小的与第一个元素交换,

         下次类推,即用第二个元素与后8个进行比较,并进行交换。

        方法2:冒泡法,把第一个数定义为最小的,然后和后面九个数分别做比较,如果后面的是小的,马上交换,

            类推,,即用第二个元素与后8个进行比较,并进行交换。

    */

 

    int i,j,min,tem,a[10];

    printf("please input ten num:\n");

    for(i=0;i

        min=i;

        for(j=i+1;ja[j]) {

                min=j;

            }

            tem=a[i];

            a[i]=a[min];

            a[min]=tem;

        }*/

//方法2:冒泡法

    for(i=0;i float a[3][3],sum=0; int i,j; printf("please input rectangle element:\n"); for(i=0;i

                if(a[i]>number){//直到遇到一个比输入大的数,

                    temp1=a[i]; 

                    a[i]=number;//就插到它前面

                    for(j=i+1;j

    int num=0;

    int a[5];

    int temp,i;

    printf("请输入5为的数组:");

    for(i=0;i

        temp=a[i];

        a[i]=a[5-i-1];

        a[5-i-1]=temp;

    }

 

 

    for(num=0;num int var=0; static int static_var=0; printf("\40:var equal %d \n",var); printf("\40:static var equal %d \n",static_var); printf("\n"); var++; static_var++; } void main() {int i;   for(i=0;i int i,num; num=2; for(i=0;i static int num=1; printf("\40:The internal block num equal %d\n",num); num++; } } }

-----------------------------------------------------------------------------

【程序44】 题目:学习使用external的用法。 1.程序分析: 2.程序源代码: #include "stdio.h" int a,b,c; void add() { int a; a=3; c=a+b; } void main() { a=b=4; add(); printf("The value of c is equal to %d\n",c); } -----------------------------------------------------------------------------

【程序45】 题目:学习使用register定义变量的方法。 1.程序分析: 2.程序源代码: void main() { register int i; int tmp=0; for(i=1;i printf("\40:Please input number==>"); scanf("%d",&num); printf("\40:The square for this number is %d \n",SQ(num)); if(num>=50)   again=TRUE; else   again=FALSE; } } -----------------------------------------------------------------------------

【程序47】 题目:宏#define命令练习(2) 1.程序分析:             2.程序源代码: #include "stdio.h" #define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/              int t;\              t=a;\              a=b;\              b=t;\             } void main(void) { int x=10; int y=20; printf("x=%d; y=%d\n",x,y); exchange(x,y); printf("x=%d; y=%d\n",x,y); } -----------------------------------------------------------------------------

【程序48】 题目:宏#define命令练习(3)    1.程序分析: 2.程序源代码: #define LAG > #define SMA y)?x:y #define MINIMUM(x,y) (x>y)?y:x void main() { int a=10,b=20; #ifdef MAX printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #else printf("\40: The lower one is %d\n",MINIMUM(a,b)); #endif #ifndef MIN printf("\40: The lower one is %d\n",MINIMUM(a,b)); #else printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #endif #undef MAX #ifdef MAX printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #else printf("\40: The lower one is %d\n",MINIMUM(a,b)); #endif #define MIN #ifndef MIN printf("\40: The lower one is %d\n",MINIMUM(a,b)); #else printf("\40: The larger one is %d\n",MAXIMUM(a,b)); #endif } -----------------------------------------------------------------------------

【程序50】 题目:#include 的应用练习    1.程序分析: 2.程序源代码: test.h 文件如下: #define LAG > #define SMA int a,b; a=077; b=a|3; printf("\40: The a & b(decimal) is %d \n",b); b|=7; printf("\40: The a & b(decimal) is %d \n",b); } -----------------------------------------------------------------------------

【程序53】 题目:学习使用按位异或 ^ 。    1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0 2.程序源代码: #include "stdio.h" main() { int a,b; a=077; b=a^3; printf("\40: The a & b(decimal) is %d \n",b); b^=7; printf("\40: The a & b(decimal) is %d \n",b); } -----------------------------------------------------------------------------

【程序54】 题目:取一个整数a从右端开始的4~7位。 程序分析:可以这样考虑: (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0 int a,b; a=234; b=~a; printf("\40: The a's 1 complement(decimal) is %d \n",b); a=~a; printf("\40: The a's 1 complement(hexidecimal) is %x \n",a); } -----------------------------------------------------------------------------

【程序56】 题目:画图,学用circle画圆形。    1.程序分析: 2.程序源代码: /*circle*/ #include "graphics.h" main() {int driver,mode,i; float j=1,k=1; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); for(i=0;i setcolor(5); line(x0,y0,x0,y1); x0=x0-5; y0=y0-5; x1=x1+5; y1=y1+5; j=j+10; } x0=263;y1=275;y0=263; for(i=0;i setcolor(1); rectangle(x0,y0,x1,y1); x0=x0-5; y0=y0-5; x1=x1+5; y1=y1+5; } settextstyle(DEFAULT_FONT,HORIZ_DIR,2); outtextxy(150,40,"How beautiful it is!"); line(130,60,480,60); setcolor(2); circle(269,269,137); } -----------------------------------------------------------------------------

 

【程序59】 题目:画图,综合例子。 1.程序分析: 2.程序源代码: # define PAI 3.1415926 # define B 0.809 # include "graphics.h" #include "math.h" main() { int i,j,k,x0,y0,x,y,driver,mode; float a; driver=CGA;mode=CGAC0; initgraph(&driver,&mode,""); setcolor(3); setbkcolor(GREEN); x0=150;y0=100; circle(x0,y0,10); circle(x0,y0,20); circle(x0,y0,50); for(i=0;i   setcolor(3);   for(i=0;i    a=(2*PAI/16)*i+(2*PAI/180)*k-1;    x=ceil(x0+48*cos(a));    y=ceil(y0+48*sin(a)*B);    line(x0,y0,x,y);   } } restorecrtmode(); } -----------------------------------------------------------------------------

 

【程序60】 题目:画图,综合例子。    1.程序分析: 2.程序源代码: #include "graphics.h" #define LEFT 0 #define TOP 0 #define RIGHT 639 #define BOTTOM 479 #define LINES 400 #define MAXCOLOR 15 main() { int driver,mode,error; int x1,y1; int x2,y2; int dx1,dy1,dx2,dy2,i=1; int count=0; int color=0; driver=VGA; mode=VGAHI; initgraph(&driver,&mode,""); x1=x2=y1=y2=10; dx1=dy1=2; dx2=dy2=3; while(!kbhit()) {   line(x1,y1,x2,y2);   x1+=dx1;y1+=dy1;   x2+=dx2;y2+dy2;   if(x1=RIGHT)   dx1=-dx1;   if(y1=BOTTOM)    dy1=-dy1;   if(x2=RIGHT)    dx2=-dx2;   if(y2=BOTTOM)    dy2=-dy2;   if(++count>LINES)   {    setcolor(color);    color=(color>=MAXCOLOR)?0:++color;   } } closegraph(); }

 【程序61】 题目:打印出杨辉三角形(要求打印出10行如下图)    1.程序分析:a[i][j]=a[i-1][j-1]+a[i-1][j];         1        1  1        1  2  1        1  3  3  1        1  4  6  4  1        1  5  10 10 5  1  2.程序源代码: main() {int i,j; int a[10][10]; printf("\n"); for(i=0;i int x=360,y=160,driver=VGA,mode=VGAHI; int num=20,i; int top,bottom; initgraph(&driver,&mode,""); top=y-30; bottom=y-30; for(i=0;i int driver=VGA,mode=VGAHI; int i,num=15,top=50; int left=20,right=50; initgraph(&driver,&mode,""); for(i=0;i int x,y; }; double AspectRatio=0.85; void LineToDemo(void) { struct viewporttype vp; struct PTS points[MAXPTS]; int i, j, h, w, xcenter, ycenter; int radius, angle, step; double rads; printf(" MoveTo / LineTo Demonstration" ); getviewsettings( &vp ); h = vp.bottom - vp.top; w = vp.right - vp.left; xcenter = w / 2; /* Determine the center of circle */ ycenter = h / 2; radius = (h - 30) / (AspectRatio * 2); step = 360 / MAXPTS; /* Determine # of increments */ angle = 0; /* Begin at zero degrees */ for( i=0 ; i int number[10]; input(number); max_min(number); output(number); } input(number) int number[10]; {int i; for(i=0;i int *p,array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p--)   *p=*(p-1);   *array=array_end;   m--;   if(m>0) move(array,n,m); } -----------------------------------------------------------------------------

【程序69】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出     圈子,问最后留下的是原来第几号的那位。 1. 程序分析: 2.程序源代码: #define nmax 50 main() { int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:"); scanf("%d",&n); p=num; for(i=0;i int len; char *str[20]; printf("please input a string:\n"); scanf("%s",str); len=length(str); printf("the string has %d characters.",len); } length(p) char *p; { int n; n=0; while(*p!='\0') {   n++;   p++; } return n; }

 

 

【程序71】 题目:编写input()和output()函数输入,输出5个学生的数据记录。 1.程序分析: 2.程序源代码: #define N 5 struct student { char num[6];   char name[8];   int score[4]; } stu[N]; input(stu) struct student stu[]; { int i,j;   for(i=0;i   scanf("%d",&num);   ptr->data=num;   ptr->next=(link)malloc(sizeof(node));   if(i==4) ptr->next=NULL;   else ptr=ptr->next; } ptr=head; while(ptr!=NULL) { printf("The value is ==>%d\n",ptr->data);   ptr=ptr->next; } } -----------------------------------------------------------------------------

【程序73】 题目:反向输出一个链表。    1.程序分析: 2.程序源代码: /*reverse output a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data;   struct list *next; }; typedef struct list node; typedef node *link; void main() { link ptr,head,tail;    int num,i;   tail=(link)malloc(sizeof(node));   tail->next=NULL;   ptr=tail;   printf("\nplease input 5 data==>\n");   for(i=0;i   tmp=pointer;   min=tmp->data;   btmp=NULL;   while(tmp->next)   { if(min>tmp->next->data)   {min=tmp->next->data;    btmp=tmp;   }   tmp=tmp->next;   } printf("\40: %d\n",min); pointer=delete_node(pointer,btmp); } } link create_list(int array[],int num) { link tmp1,tmp2,pointer; int i; pointer=(link)malloc(sizeof(node)); pointer->data=array[0]; tmp1=pointer; for(i=1;inext=NULL;   tmp2->data=array[i];   tmp1->next=tmp2;   tmp1=tmp1->next; } return pointer; } link concatenate(link pointer1,link pointer2) { link tmp; tmp=pointer1; while(tmp->next)   tmp=tmp->next; tmp->next=pointer2; return pointer1; } void main(void) { int arr1[]={3,12,8,9,11};   link ptr;   ptr=create_list(arr1,5);   selection_sort(ptr,5); } ----------------------------------------------------------------------------- 【程序75】 题目:放松一下,算一道简单的题目。 1.程序分析: 2.程序源代码: main() { int i,n; for(i=1;i   scanf("%d",&n);   if(n>1)    break; } if(n%2==0) {   printf("Even=");   sum=dcall(peven,n); } else {   printf("Odd=");   sum=dcall(podd,n); } printf("%f",sum); } float peven(int n) { float s; int i; s=1; for(i=2;i float s; s=(*fp)(n); return(s); } ----------------------------------------------------------------------------- 【程序77】 题目:填空练习(指向指针的指针) 1.程序分析:      2.程序源代码: main() { char *s[]={"man","woman","girl","boy","sister"}; char **q; int k; for(k=0;k char *p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); } -----------------------------------------------------------------------------

【程序80】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 1.程序分析: 2.程序源代码: main() {int i,m,j,k,count; for(i=4;i long sum=4,s=4; int j; for(j=2;j     scanf("%d",&a);     }while(a50); for(i=1;i FILE *fp; struct date d; float sum,chm=0.0; int len,i,j=0; int c; char ch[4]="",ch1[16]="",chtime[12]="",chshop[16],chmoney[8]; pp: clrscr(); sum=0.0; gotoxy(1,1);printf("|---------------------------------------------------------------------------|"); gotoxy(1,2);printf("| money management system(C1.0) 2000.03 |"); gotoxy(1,3);printf("|---------------------------------------------------------------------------|"); gotoxy(1,4);printf("| -- money records -- | -- today cost list -- |"); gotoxy(1,5);printf("| ------------------------ |-------------------------------------|"); gotoxy(1,6);printf("| date: -------------- | |"); gotoxy(1,7);printf("| | | | |"); gotoxy(1,8);printf("| -------------- | |"); gotoxy(1,9);printf("| thgs: ------------------ | |"); gotoxy(1,10);printf("| | | | |"); gotoxy(1,11);printf("| ------------------ | |"); gotoxy(1,12);printf("| cost: ---------- | |"); gotoxy(1,13);printf("| | | | |"); gotoxy(1,14);printf("| ---------- | |"); gotoxy(1,15);printf("| | |"); gotoxy(1,16);printf("| | |"); gotoxy(1,17);printf("| | |"); gotoxy(1,18);printf("| | |"); gotoxy(1,19);printf("| | |"); gotoxy(1,20);printf("| | |"); gotoxy(1,21);printf("| | |"); gotoxy(1,22);printf("| | |"); gotoxy(1,23);printf("|---------------------------------------------------------------------------|"); i=0; getdate(&d); sprintf(chtime,"%4d.%02d.%02d",d.da_year,d.da_mon,d.da_day); for(;;) { gotoxy(3,24);printf(" Tab __browse cost list Esc __quit"); gotoxy(13,10);printf(" "); gotoxy(13,13);printf(" "); gotoxy(13,7);printf("%s",chtime); j=18; ch[0]=getch(); if(ch[0]==27) break; strcpy(chshop,""); strcpy(chmoney,""); if(ch[0]==9) { mm:i=0; fp=fopen("home.dat","r+"); gotoxy(3,24);printf(" "); gotoxy(6,4);printf(" list records "); gotoxy(1,5);printf("|-------------------------------------|"); gotoxy(41,4);printf(" "); gotoxy(41,5);printf(" |"); while(fscanf(fp,"%10s%14s%f\n",chtime,chshop,&chm)!=EOF) { if(i==36) { getch(); i=0;} if ((i%36)16) { gotoxy(41,4+i-17); printf(" "); gotoxy(42,4+i-17);} i++; sum=sum+chm; printf("%10s %-14s %6.1f\n",chtime,chshop,chm);} gotoxy(1,23);printf("|---------------------------------------------------------------------------|"); gotoxy(1,24);printf("| |"); gotoxy(1,25);printf("|---------------------------------------------------------------------------|"); gotoxy(10,24);printf("total is %8.1f$",sum); fclose(fp); gotoxy(49,24);printf("press any key to.....");getch();goto pp; } else { while(ch[0]!='\r') { if(j if(*p1==*p2) {while(*p1==*p2&&*p2!='\0') {p1++; p2++;} } else p1++; if(*p2=='\0') sum++; p2=str2; } printf("%d",sum); getch();} ----------------------------------------------------------------------------- 【程序97】 题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。 1.程序分析:      2.程序源代码: #include "stdio.h" main() { FILE *fp; char ch,filename[10]; scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) {printf("cannot open file\n"); exit(0);} ch=getchar(); ch=getchar(); while(ch!='#') {fputc(ch,fp);putchar(ch); ch=getchar(); } fclose(fp); }

----------------------------------------------------------------------------- 【程序98】 题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。     输入的字符串以!结束。 1.程序分析: 2.程序源代码: #include "stdio.h" main() {FILE *fp; char str[100],filename[10]; int i=0; if((fp=fopen("test","w"))==NULL) { printf("cannot open the file\n"); exit(0);} printf("please input a string:\n"); gets(str); while(str[i]!='!') { if(str[i]>='a'&&str[i]



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3