63、有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位?
退出圈子,問最後留下的是原來第幾號的那位
#include <stdio.h>void main(){ int num[50],n,*p,j,loop,i,m,k; printf("請輸入這一圈人的數量:\n"); scanf("%d",&n); p=num; for (j=0;j<n;j++) { *(p+j)=j+1; } i=0; m=0; k=0; while(m<n-1) { if (*(p+i)!=0) { k++; } if (k==3) { k=0; *(p+i)=0; m++; } i++; if (i==n) { i=0; } } printf("現在剩下的人是:"); for (loop=0;loop<n;loop++) { if (num[loop]!=0) { printf("%2d號\n",num[loop]); } } }64、求一個字符串的長度
#include <stdio.h>#include <stdlib.h>int main(){ int len; char str[20]; printf("請輸入字符串:\n"); scanf("%s",str); len=length(str); printf("字符串有 %d 個字符。",len);}int length(char p[]){int i=0; while(p!='\0')++i; return i;}65、簡單計算
#include <stdlib.h>#include <stdio.h>
int main(){ int i,n; for(i=1;i<5;i++) { n=0; if(i!=1) n=n+1; if(i==3) n=n+1; if(i==4) n=n+1; if(i!=4) n=n+1; if(n==3) printf("%c\n",64+i); }}66、編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數1/1+1/3+...+1/n(利用指針函數)
#include<stdio.h>#include<stdlib.h>double evenumber(int n);double oddnumber(int n);
int main(){ int n; double r; double (*pfunc)(int); printf("請輸入一個數字:"); scanf("%d",&n); if(n%2==0) pfunc=evenumber; else pfunc=oddnumber; r=(*pfunc)(n); printf("%lf\n",r); system("pause"); return 0;}double evenumber(int n){ double s=0,a=0; int i; for(i=2;i<=n;i+=2) { a=(double)1/i; s+=a; } return s;}double oddnumber(int n){ double s=0,a=0; int i; for(i=1;i<=n;i+=2) { a=(double)1/i; s+=a; } return s;}67、填空練習(指向指針的指針)
#include<stdio.h>#include<stdlib.h>int main(){ char *s[]={"man","woman","girl","boy","sister"}; char **q; int k; for(k=0;k<5;k++) { q=&s[k]; printf("%s\n",*q); } return 0;}68、找到年齡最大的人,並輸出。找出程序中有什麼問題
#include<stdio.h>#include<stdlib.h>struct man{ char name[20]; int age;}person[3]={"li",18,"wang",19,"sun",22};int main(){ struct man *q,*p; int i,m=0; p=person; for(i=0;i<3;i++) { if(m<p->age)m=p->age; q=p++; } printf("%s %d\n",q->name,q->age); return 0;}69、問海灘上原來最少有多少個桃子
#include<stdio.h>#include<stdlib.h>int main(){ int x ,i=0,j=1; while(i<5){ x=4*j; for(i=0;i<5;i++) { if(x%4!=0){break;} x=(x/4)*5+1; } j++; } printf("%d\n",x); return 0;}70、809*??=800*??+9*??+1 其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??後的結果
#include<stdio.h>#include<stdlib.h>int main(){ int i; for(i=10;i<100;i++) if(8*i<100&&9*i>99&&9*i<1000) { printf("??代表的兩位數為:%d\n",i); break; } printf("809*%d==800*%d+9*%d+1\n",i,i,i); return 0;}71、八進位轉換為十進位
#include<stdio.h>#include<stdlib.h>int main(){ int n=0,i=0; char s[20]; printf("請輸入一個8進位數:\n"); gets(s); while(s[i]!='\0'){ n=n*8+s[i]-'0'; i++; } printf("剛輸入的8進位數轉化為十進位為\n%d\n",n); return 0;}72、求0—7所能組成的奇數個數
#include<stdio.h>#include<stdlib.h>int factorial(int a,int b);int main(){ int sum=0,i; sum+=4; for(i=2;i<8;i++) sum+=4*(factorial(7,i-1)-factorial(6,i-2)); printf("可以組成%d個奇數\n",sum); return 0;}int factorial(int a,int b){ int i,sum=1; if(b<=0)return 1; for(i=0;i<b;i++) sum*=(a-i); return sum;}73、一個偶數總能表示兩個素數之和
#include<stdio.h>#include<stdlib.h>int Isprimer(unsigned int n);int main(){ unsigned int n,i; do{ printf("請輸入一個偶數:\n"); scanf("%d",&n); }while(n%2!=0); for(i=1;i<n;i++) if(Isprimer(i)&&Isprimer(n-i)) break; printf("偶數%d可以分解成%d和%d兩個素數的和\n",n,i,n-i); return 0;}int Isprimer(unsigned int n){ int i; if(n<4)return 1; else if(n%2==0)return 0; else for(i=3;i<sqrt(n)+1;i++) if(n%i==0)return 0; return 1;}74、判斷一個素數能被幾個9整除
#include<stdio.h>#include<stdlib.h>int main(){ int p,i; long int sum=9; printf("請輸入一個素數:\n"); scanf("%d",&p); for(i=1;;i++) if(sum%p==0)break; else sum=sum*10+9; printf("素數%d能整除%d個9組成的數%ld\n",p,i,sum); return 0;}75、結構體變量傳遞
#include<stdio.h>
struct student{ int x; char c;} a;
int 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';}76、讀取7個數(1-50)的整數值,每讀取一個值,程序列印出該值個數的*
#include<stdio.h>#include<stdlib.h>int main(){ int n,i,j; printf("請輸入數字:\n");i--; for(i=0;i<7;i++) { scanf("%d",&n); if(n>50){ printf("請重新輸入:\n");i--; } else { for(j=0;j<n;j++) printf("*"); } printf("\n"); } return 0;}77、加密算法
#include<stdio.h>#include<stdlib.h>int main(){ int n,i,j; printf("請輸入數字:\n");i--; for(i=0;i<7;i++) { scanf("%d",&n); if(n>50){ printf("請重新輸入:\n");i--; } else { for(j=0;j<n;j++) printf("*"); } printf("\n"); } return 0;}78、讀結果
#include<stdio.h>#include<stdlib.h>
#define M 5int main(){ int a[M]={1,2,3,4,5}; int i,j,t; i=0;j=M-1; while(i<j) { t=*(a+i); *(a+i)=*(a+j); *(a+j)=t; i++;j--; } for(i=0;i<M;i++) { printf("%d\n",*(a+i)); } }79、時間函數舉例1
#include <stdio.h>#include <time.h>
int main (){ time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "當前本地時間為: %s", asctime (timeinfo) ); return 0;}80、時間函數舉例2
#include <stdio.h>#include <time.h>
int main(){ time_t start,end; int i; start=time(NULL); for(i=0;i<300;i++) { printf("\n"); } end=time(NULL); printf("時間間隔為 %6.3f\n",difftime(end,start));}81、時間函數舉例3
#include <stdio.h>#include <stdlib.h>#include <time.h>
int main(){ long i=10000000L; clock_t start,finish; double TheTimes; printf("做%ld次空循環需要的時間為",i); start=clock(); while(i--); finish=clock(); TheTimes=(double)(finish-start)/CLOCKS_PER_SEC; printf("%f秒。\n",TheTimes); return 0;}82、簡單的結構體應用實例
#include <stdio.h>
struct programming{ float constant; char *pointer;};
int main(){ struct programming variable; char string[] = "Jser教程:http://www.jser.com"; variable.constant = 1.23; variable.pointer = string; printf("%f\n", variable.constant); printf("%s\n", variable.pointer); return 0;}