C經典100題(3)

來源:互聯網
上載者:User

【程式78】題目:找到年齡最大的人,並輸出。請找出程式中有什麼問題。1.程式分析:2.程式原始碼:#define n 4#include "stdio.h"static struct man{ char name[20];int age;} person[n]={"li",18,"wang",19,"zhang",20,"sun",22};main(){struct man *q,*p;int i,m=0;p=person;for (i=0;i{if(mage) q=p++; m=q->age;}printf("%s,%d",(*q).name,(*q).age);}==============================================================【程式79】題目:字串排序。1.程式分析:2.程式原始碼:main(){char *str1[20],*str2[20],*str3[20];char swap();printf("please input three strings\n");scanf("%s",str1);scanf("%s",str2);scanf("%s",str3);if(strcmp(str1,str2)>0) swap(str1,str2);if(strcmp(str1,str3)>0) swap(str1,str3);if(strcmp(str2,str3)>0) swap(str2,str3);printf("after being sorted\n");printf("%s\n%s\n%s\n",str1,str2,str3);}char swap(p1,p2)char *p1,*p2;{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<10000;i+=4){ count=0;m=i;for(k=0;k<5;k++){ j=i/4*5+1; i=j; if(j%4==0)  count++; else  break;} i=m; if(count==4) {printf("%d\n",count);  break;}}}【程式81】題目:809*??=800*??+9*??+1 其中??代表的兩位元,8*??的結果為兩位元,9*??的結果為3位元。求??代表的兩位元,及809*??後的結果。1.程式分析:2.程式原始碼:output(long b,long i){ printf("\n%ld/%ld=809*%ld+%ld",b,i,i,b%i);}main(){long int a,b,i;a=809;for(i=10;i<100;i++){b=i*a+1;if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)output(b,i); }}==============================================================【程式82】題目:八進位轉換為十進位1.程式分析:           2.程式原始碼:main(){ char *p,s[6];int n;p=s;gets(p);n=0;while(*(p)!='\0'){n=n*8+*p-'0';p++;}printf("%d",n);}==============================================================【程式83】題目:求0—7所能組成的奇數個數。1.程式分析:2.程式原始碼:main(){long sum=4,s=4;int j;for(j=2;j<=8;j++)/*j is place of number*/{ printf("\n%ld",sum);if(j<=2)s*=7;elses*=8;sum+=s;}printf("\nsum=%ld",sum);}==============================================================【程式84】題目:一個偶數總能表示為兩個素數之和。1.程式分析:2.程式原始碼:#include "stdio.h"#include "math.h"main(){ int a,b,c,d;scanf("%d",&a);for(b=3;b<=a/2;b+=2){ for(c=2;c<=sqrt(b);c++)if(b%c==0) break;if(c>sqrt(b))d=a-b;elsebreak;for(c=2;c<=sqrt(d);c++)if(d%c==0) break;if(c>sqrt(d))printf("%d=%d+%d\n",a,b,d);}}==============================================================【程式85】題目:判斷一個素數能被幾個9整除1.程式分析:2.程式原始碼:main(){ long int m9=9,sum=9;int zi,n1=1,c9=1;scanf("%d",&zi);while(n1!=0){ if(!(sum%zi))n1=0;else{m9=m9*10;sum=sum+m9;c9++;}}printf("%ld,can be divided by %d \"9\"",sum,c9);}==============================================================【程式86】題目:兩個字串串連程式1.程式分析:2.程式原始碼:#include "stdio.h"main(){char a[]="acegikm";char b[]="bdfhjlnpq";char c[80],*p;int i=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if (a[i]{ c[k]=a[i];i++;}elsec[k]=b[j++];k++;}c[k]='\0';if(a[i]=='\0')p=b+j;elsep=a+i;strcat(c,p);puts(c);}==============================================================【程式87】題目:回答結果(結構體變數傳遞)1.程式分析:     2.程式原始碼:#include "stdio.h"struct student{ int x;char c;} a;main(){a.x=3;a.c='a';f(a);printf("%d,%c",a.x,a.c);}f(struct student b){b.x=20;b.c='y';}==============================================================【程式88】題目:讀取7個數(1—50)的整數值,每讀取一個值,程式列印出該值個數的*。1.程式分析:2.程式原始碼:main(){int i,a,n=1;while(n<=7){ do {   scanf("%d",&a);   }while(a<1||a>50);for(i=1;i<=a;i++) printf("*");printf("\n");n++;}getch();}==============================================================【程式89】題目:某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:   每位元字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。1.程式分析:2.程式原始碼:main(){int a,i,aa[4],t;scanf("%d",&a);aa[0]=a%10;aa[1]=a%100/10;aa[2]=a%1000/100;aa[3]=a/1000;for(i=0;i<=3;i++) {aa[i]+=5; aa[i]%=10; }for(i=0;i<=3/2;i++) {t=aa[i]; aa[i]=aa[3-i]; aa[3-i]=t; }for(i=3;i>=0;i--)printf("%d",aa[i]);}==============================================================【程式90】題目:專升本一題,讀結果。1.程式分析:2.程式原始碼:#include "stdio.h"#define m 5main(){int a[m]={1,2,3,4,5};int i,j,t;i=0;j=m-1;while(i{t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i++;j--;}for(i=0;iprintf("%d",*(a+i));}【程式91】題目:時間函數舉例11.程式分析:2.程式原始碼:#include "stdio.h"#include "time.h"void main(){ time_t lt; /*define a longint time varible*/lt=time(null);/*system time and date*/printf(ctime(<)); /*english format output*/printf(asctime(localtime(<)));/*tranfer to tm*/printf(asctime(gmtime(<))); /*tranfer to greenwich time*/}==============================================================【程式92】題目:時間函數舉例21.程式分析:           2.程式原始碼:/*calculate time*/#include "time.h"#include "stdio.h"main(){ time_t start,end;int i;start=time(null);for(i=0;i<3000;i++){ printf("\1\1\1\1\1\1\1\1\1\1\n");}end=time(null);printf("\1: the different is %6.3f\n",difftime(end,start));}==============================================================【程式93】題目:時間函數舉例31.程式分析:2.程式原始碼:/*calculate time*/#include "time.h"#include "stdio.h"main(){ clock_t start,end;int i;double var;start=clock();for(i=0;i<10000;i++){ printf("\1\1\1\1\1\1\1\1\1\1\n");}end=clock();printf("\1: the different is %6.3f\n",(double)(end-start));}==============================================================【程式94】題目:時間函數舉例4,一個猜數遊戲,判斷一個人反應快慢。(版主初學時編的)1.程式分析:2.程式原始碼:#include "time.h"#include "stdlib.h"#include "stdio.h"main(){char c;clock_t start,end;time_t a,b;double var;int i,guess;srand(time(null));printf("do you want to play it.('y' or 'n') \n");loop:while((c=getchar())=='y'){i=rand()%100;printf("\nplease input number you guess:\n");start=clock();a=time(null);scanf("%d",&guess);while(guess!=i){if(guess>i){printf("please input a little smaller.\n");scanf("%d",&guess);}else{printf("please input a little bigger.\n");scanf("%d",&guess);}}end=clock();b=time(null);printf("\1: it took you %6.3f seconds\n",var=(double)(end-start)/18.2);printf("\1: it took you %6.3f seconds\n\n",difftime(b,a));if(var<15)printf("\1\1 you are very clever! \1\1\n\n");else if(var<25)printf("\1\1 you are normal! \1\1\n\n");elseprintf("\1\1 you are stupid! \1\1\n\n");printf("\1\1 congradulations \1\1\n\n");printf("the number you guess is %d",i);}printf("\ndo you want to try it again?(\"yy\".or.\"n\")\n");if((c=getch())=='y')goto loop;}==============================================================【程式95】題目:家庭財務管理小程式1.程式分析:2.程式原始碼:/*money management system*/#include "stdio.h"#include "dos.h"main(){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)<17){ gotoxy(4,6+i);printf(" ");gotoxy(4,6+i);}elseif((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<10){ strncat(chtime,ch,1);j++;}if(ch[0]==8){len=strlen(chtime)-1;if(j>15){ len=len+1; j=11;}strcpy(ch1,"");j=j-2;strncat(ch1,chtime,len);strcpy(chtime,"");strncat(chtime,ch1,len-1);gotoxy(13,7);printf(" ");}gotoxy(13,7);printf("%s",chtime);ch[0]=getch();if(ch[0]==9)goto mm;if(ch[0]==27)exit(1);}gotoxy(3,24);printf(" ");gotoxy(13,10);j=0;ch[0]=getch();while(ch[0]!='\r'){ if (j<14){ strncat(chshop,ch,1);j++;}if(ch[0]==8){ len=strlen(chshop)-1;strcpy(ch1,"");j=j-2;strncat(ch1,chshop,len);strcpy(chshop,"");strncat(chshop,ch1,len-1);gotoxy(13,10);printf(" ");}gotoxy(13,10);printf("%s",chshop);ch[0]=getch();}gotoxy(13,13);j=0;ch[0]=getch();while(ch[0]!='\r'){ if (j<6){ strncat(chmoney,ch,1);j++;}if(ch[0]==8){ len=strlen(chmoney)-1;strcpy(ch1,"");j=j-2;strncat(ch1,chmoney,len);strcpy(chmoney,"");strncat(chmoney,ch1,len-1);gotoxy(13,13);printf(" ");}gotoxy(13,13);printf("%s",chmoney);ch[0]=getch();}if((strlen(chshop)==0)||(strlen(chmoney)==0))continue;if((fp=fopen("home.dat","a+"))!=null);fprintf(fp,"%10s%14s%6s",chtime,chshop,chmoney);fputc('\n',fp);fclose(fp);i++;gotoxy(41,5+i);printf("%10s %-14s %-6s",chtime,chshop,chmoney);}}} ==============================================================【程式96】題目:計算字串中子串出現的次數1.程式分析:2.程式原始碼:#include "string.h"#include "stdio.h"main(){ char str1[20],str2[20],*p1,*p2;int sum=0;printf("please input two strings\n");scanf("%s%s",str1,str2);p1=str1;p2=str2;while(*p1!='\0'){if(*p1==*p2){while(*p1==*p2&&*p2!='\0'){p1++;p2++;}}elsep1++;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]<='z')str[i]=str[i]-32;fputc(str[i],fp);i++;}fclose(fp);fp=fopen("test","r");fgets(str,strlen(str)+1,fp);printf("%s\n",str);fclose(fp);}==============================================================【程式99】題目:有兩個磁碟檔案a和b,各存放一行字母,要求把這兩個檔案中的資訊合并(按字母順序排列),    輸出到一個新檔案c中。1.程式分析:2.程式原始碼:#include "stdio.h"main(){ file *fp;int i,j,n,ni;char c[160],t,ch;if((fp=fopen("a","r"))==null){printf("file a cannot be opened\n");exit(0);}printf("\n a contents are :\n");for(i=0;(ch=fgetc(fp))!=eof;i++){c[i]=ch;putchar(c[i]);}fclose(fp);ni=i;if((fp=fopen("b","r"))==null){printf("file b cannot be opened\n");exit(0);}printf("\n b contents are :\n");for(i=0;(ch=fgetc(fp))!=eof;i++){c[i]=ch;putchar(c[i]);}fclose(fp);n=i;for(i=0;ifor(j=i+1;jif(c[i]>c[j]){t=c[i];c[i]=c[j];c[j]=t;}printf("\n c file is:\n");fp=fopen("c","w");for(i=0;i{ putc(c[i],fp);putchar(c[i]);}fclose(fp);}==============================================================【程式100】題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上資料(包括學生號,姓名,三門課成績),計算出   平均成績,況原有的資料和計算出的平均分數存放在磁碟檔案"stud"中。1.程式分析:2.程式原始碼:#include "stdio.h"struct student{ char num[6];char name[8];int score[3];float avr;} stu[5];main(){int i,j,sum;file *fp;/*input*/for(i=0;i<5;i++){ printf("\n please input no. %d score:\n",i);printf("stuno:");scanf("%s",stu[i].num);printf("name:");scanf("%s",stu[i].name);sum=0;for(j=0;j<3;j++){ printf("score %d.",j+1);scanf("%d",&stu[i].score[j]);sum+=stu[i].score[j];}stu[i].avr=sum/3.0;}fp=fopen("stud","w");for(i=0;i<5;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("file write error\n");fclose(fp);}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.