青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天之道

享受編程的樂趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

編寫一個返回循環(huán)鏈表中節(jié)點數(shù)的函數(shù)

實現(xiàn)代碼如下:

#include<stdio.h>
#include<stdlib.h>
typedef struct node *link;
struct node{ int item; link next; };

int node_number(link p,int n)
{
    int count=0,i;
    for(i=0;i<n-1;i++)
    {
        p=p->next;
    }
    while(p->item)
    {
        p->item=0;
        p=p->next;
        count++;
    }
    return count;
}

int main()
{
    
    int i,N;
    link t=(link)malloc(sizeof(node));
    t->item=1;
    t->next=t;
    link x=t;
    for(i=2;i<=10;i++)
    {
        x = (x->next= (link)malloc(sizeof(node)));
        x->item=i;
        x->next=t;
    }
    printf("Please input the order of node: ");
    scanf("%d",&N);
    printf("total number of nodes is: %d\n",node_number(t,N));
    return 0;
}

posted @ 2012-08-17 01:43 hoshelly 閱讀(297) | 評論 (0)編輯 收藏

假設(shè)有N個人決定選出一個領(lǐng)導(dǎo)人,方法如下:所有人排成一個圓圈,按順序數(shù)數(shù),每隔第M個人出局,此時他兩邊的人靠攏重新形成圓圈。問題是找出哪一個人將會是最后剩下的那個人。我們希望打印出所有人的出局順序和最后選出的領(lǐng)導(dǎo)人是哪一位。

這個問題稱為約瑟夫問題,可以利用鏈表解決。

代碼如下:

  //約瑟夫問題
  
  #include<stdio.h>
  #include<stdlib.h>
  typedef struct node *link;
  struct node { int item; link next; }; //定義結(jié)點
  int main()
  {
     int i,N,M;
     printf("Input N and M: "); //N表示共有N個人,M表示每隔第M個人要出局
     scanf("%d%d",&N,&M);
     link t = (link)malloc(sizeof(node)); //新建結(jié)點t
     link x=t; 
     t->item = 1; t->next=t; //創(chuàng)建一個代表1號的單個節(jié)點的循環(huán)鏈表
     for(i=2;i<=N;i++)
     {
         x=(x->next= (link)malloc(sizeof(node)));//將2~N號按序插到之前創(chuàng)建的單個節(jié)點的循環(huán)鏈表中
         x->item=i; x->next=t;
     }
 
     while(x!= x->next) //如果不是最后一個節(jié)點,因為是循環(huán)鏈表,所以x!=x->next
     {
         for(i=1;i<M;i++) //則順著鏈表向前遍歷,數(shù)出M-1個元素
             x=x->next;
         printf("%d ",x->next->item);
         x->next = x->next->next; //刪除第M個元素
         N--; //節(jié)點數(shù)減1
     }
     printf("\n%d\n",x->item); //最后打印出最后一個節(jié)點
     return 0;
 }

posted @ 2012-08-17 00:14 hoshelly 閱讀(1068) | 評論 (0)編輯 收藏

編寫程序,對于N個隨機(jī)產(chǎn)生的單位正方形中的點,統(tǒng)計可以被長度小于d的直線連結(jié)的點對數(shù)。

程序如下:

typedef structfloat x; float y; } point; //定義點的數(shù)據(jù)類型
float distance(point,point); //兩點之間距離函數(shù)
float distance(point a,point b)

   float dx= a.x - b.x, dy= a.y - b.y;
   return sqrt(dx*dx + dy*dy);
}
//以上為頭文件 Point.h 的內(nèi)容



#include<stdio.h> 
#include<stdlib.h>
#include<math.h>
#include "Point.h"
float randFloat()
{  return 1.0*rand()/RAND_MAX; } //產(chǎn)生隨機(jī)數(shù)的函數(shù)
int main()
{
    float d,N;
    int i,j,cnt=0;
    scanf("%f%f",&d,&N); //d為要求兩點之間距離小于的長度,N為測試的點 
    point *a = (point *)malloc(sizeof(point)*N); //動態(tài)生成數(shù)據(jù)類型為point的數(shù)組a
    for(i=0;i<N;i++)
{
a[i].x = randFloat(); a[i].y = randFloat(); 
}
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
            if(distance(a[i],a[j])<d) //如果兩點之間的距離小于d,那么cnt加1
                     cnt++;
    printf("%d edges shorter than %f\n",cnt,d); //輸出有多少條邊的長度小于d
    return 0;
}

posted @ 2012-08-14 21:39 hoshelly 閱讀(327) | 評論 (0)編輯 收藏


//模擬拋硬幣的實驗

#include<stdio.h>
#include<stdlib.h>
int heads()   //返回0或非0值
{
    return rand() <RAND_MAX/2;
}

int main()
{
    int i,j,cnt;
    int N,M;
    scanf("%d%d",&N,&M); //拋一枚硬幣N=32次,如此做M=1000次這樣的實驗
    int *f=(int *)malloc((N+1)*sizeof(int));
    for(j=1;j<=N;j++) //初始化數(shù)組全部為0值
        f[j]=0;
    for(i=1;i<M;i++,f[cnt]++)  //開始拋硬幣,f[cnt]記錄第cnt次拋硬幣出現(xiàn)正面的次數(shù)
        for(cnt=1,j=1;j<=N;j++) //開始第一輪共32次的拋硬幣實驗
            if(heads())    cnt++; //如果出現(xiàn)正面,即heads()返回值為1,則對應(yīng)著f[cnt]++,同時cnt++,此處利用數(shù)組索引統(tǒng)計正面出現(xiàn)次數(shù),負(fù)面數(shù)組值始終為0
            
    for(j=1;j<=N;j++)
    {
        printf("%2d ",j);
        for(i=0;i<f[j];i+=10) printf("*"); //正面每出現(xiàn)十次打印一個星號
        printf("\n");
    }
    return 0;
}

posted @ 2012-08-14 10:37 hoshelly 閱讀(853) | 評論 (0)編輯 收藏

// From < C Programming FAQs > 
找出所有小于10000的素數(shù),算法原理請自行g(shù)oogle 埃拉托色尼篩法

程序代碼:

#define N 10000
#include<stdio.h>
int main()
{
    int i,j,a[N];
    for(i=2;i<N;i++) a[i]=1; //將數(shù)組中的值全部設(shè)為1
    for(i=2;i<N;i++)
        if(a[i])
            for(j=i;i*j<N;j++)   a[i*j]=0; //將索引為2,3,5,的倍數(shù)的數(shù)組元素設(shè)為0,因為這些數(shù)不是素數(shù)
    for(i=2;i<N;i++)
        if(a[i]) printf("4%d\n",i); //遍歷打印出找到的素數(shù)
    printf("\n");
    return 0;
}

posted @ 2012-08-13 22:17 hoshelly 閱讀(592) | 評論 (0)編輯 收藏

輸入10個學(xué)生的成績,編寫一程序?qū)W(xué)生的成績按從高到低輸出,要求用鏈表實現(xiàn)。

#include<stdio.h>
#include<stdlib.h>
struct Stu
{
    int score;
    struct Stu *next;
};
typedef struct Stu Node;
int main()
{
    int i;
    Node *head,*p,*q;
    head=(Node*)malloc(sizeof(Node)); //創(chuàng)建頭結(jié)點
    if(head == NULL)
    {
        printf("Memory is not enough!");
        return 0;
    }
    head->next=NULL;
    for(i=0;i<10;i++)
    {
        p=(Node*)malloc(sizeof(Node)); //創(chuàng)建一個新結(jié)點p
        if(p == NULL)
        {
            printf("no enough memory!");
            return 0;
        }
        printf("Input the %dth student's score: ",i+1);
        scanf("%d",&p->score); //輸入成績
        q=head;
        while(q->next != NULL) //遍歷鏈表
        {
            if(q->next->score < p->score) //如果發(fā)現(xiàn)鏈表中的某個成績比當(dāng)前輸入成績小,就跳出循環(huán),在其前面插入當(dāng)前輸入成績
                break;
            q=q->next; //繼續(xù)遍歷直到遍歷的成績比當(dāng)前輸入的成績小
        }
        p->next=q->next; //這是當(dāng)前成績插入到鏈表中比其小的成績前面的代碼
        q->next=p;

    }
    p=head->next;
    while(p !=NULL)  
    {
        printf("%d ",p->score);
        p=p->next;
    }

p=head;
while(p->next !=NULL)
{
    q=p->next;
    p->next=q->next;
    free(q);
}
free(head);

return 0;
}

posted @ 2012-08-12 22:23 hoshelly 閱讀(2040) | 評論 (0)編輯 收藏

編寫一個函數(shù)totsubstrnum(char *str, char *substr) ,它的功能是:統(tǒng)計子字符串substr在字符串str中出現(xiàn)的次數(shù)。

思想:len2為子串的長度,設(shè)置變量 i =0, 利用strncmp函數(shù)將str+i 開始的len2個字符與子串substr進(jìn)行比較,如果相等,則count加1,此時 i 加 len2,如果不等,則 i 加1,繼續(xù)尋找。

代碼測試通過:

#include<stdio.h>
#include<string.h>
int totsubstrnum(char *str, char *substr);
int main()
{
    char str[80],substr[80];
    printf("Input string: ");
    gets(str);
    printf("Input substring: ");
    gets(substr);
    printf("count = %d\n",totsubstrnum(str,substr));

    return 0;
}

int totsubstrnum(char *str, char *substr)
{
    int i=0,count=0,len1,len2;
    len1=strlen(str);
    len2=strlen(substr);
    while(i <= len1-len2)
    {
        if(strncmp(str+i,substr,len2) == 0)
        {
            count++;
            i +=len2;
        }
        else
            i++;
    }
    return (count);
}

posted @ 2012-08-12 16:05 hoshelly 閱讀(1656) | 評論 (0)編輯 收藏

編寫一函數(shù)strlshif(char *s, int n),其功能是把字符串s中的所有字符左移n個位置,字符串中的前n個字符移到最后。

代碼測試通過:


#include<stdio.h>
#include<string.h>
void strlshif(char *s, int n);
void main()
{
    char str[]="0123456789";
    strlshif(str,3);
    printf("%s\n",str);
}

void strlshif(char *s, int n)
{
    int i,len;
    char ch;
    len=strlen(s);
    for(i=0;i<n;i++)
    {
        ch=s[0];
        strncpy(s,s+1,len-1);
        s[len-1]=ch;
    }
}

那么若是不用strncpy函數(shù)功能,如何使指定的字符串左移n位?
代碼測試通過,如下:

#include<stdio.h>
#include<string.h>
int main()
{
    char str[]="0123456789";
    char sstr[80]={0}; //使用一數(shù)組儲存移動后的字符串
    char *p;
    int c,j;
    static int i,n;
    p=&str[0];
    printf("input the number: \n");
    scanf("%d",&n); //輸入要左移的前n個字符,即將這n個字符移動到最后面
    c=n;
    while( c-- && p++ ); //找到?jīng)]有移動過的剩下的全部字符,把它們儲存在數(shù)組sstr 中

        for(i=0;i<strlen(str)-n;i++)
        {
            sstr[i]= *p;
            p++;
        }
        p=&str[0];  //指針指向第一個字符
        for(j=i;j<strlen(str);j++) //將要移動的字符一個一個地“接”到數(shù)組sstr后面
        {
            sstr[j]= *p;
            p++;
        }
        sstr[j]='\0'; //最后字符串結(jié)尾用'\0'
        printf("%s",sstr);  
        return 0;
}



        

posted @ 2012-08-12 14:14 hoshelly 閱讀(944) | 評論 (0)編輯 收藏

// s 是字符串 startloc 是開始取的位置   len表示取得子串長度
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void substr(char *s, int startloc,int len)
{
    if((startloc < 0) || (startloc >= strlen(s)) || (len<0))
    {
        printf("input error!");
        exit(0);
    }
    int i,c=0;
    char sstr[80];
    while(*s !='\0')
    {
        if(c!=startloc)
        {
            ++c;
            s++;
        }
        else
        {
            for(i=0;i<len;i++)
            {
                sstr[i]= *s;
                s++;
            }
            sstr[i]='\0';
            break;
        }
    }
    printf("%s",sstr);
}

int main()
{
    char str[80];
    int s,l;
    printf("Input string: ");
    gets(str);
    printf("Start Location: ");
    scanf("%d",&s);
    printf("Substring length: ");
    scanf("%d",&l);
    substr(str,s,l);
    return 0;
}

    

posted @ 2012-08-12 11:45 hoshelly 閱讀(245) | 評論 (0)編輯 收藏

類似C語言中的strcat()函數(shù),編程實現(xiàn)mystrcat( char *str, char * destr)的功能并測試 。


代碼測試通過:

#include<stdio.h>
void mystrcat( char *str,char *destr)
{
    while(*str !='\0')
        str++;
    while(*destr !='\0')
    {
        *str = *destr;
        str++;
        destr++;
    }

    *str = '\0';
}

int main()
{
    char str[30],destr[30];
    printf("input string and substring: ");
    scanf("%s%s",str,destr);
    mystrcat(str,destr);
    printf("%s",str);
    return 0;
}

posted @ 2012-08-12 10:16 hoshelly 閱讀(352) | 評論 (0)編輯 收藏

僅列出標(biāo)題
共12頁: First 2 3 4 5 6 7 8 9 10 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久国产精品厨房| 久久久久一区二区| 欧美69wwwcom| 欧美精品一区二区三区在线看午夜 | 国产精品第十页| 国产女精品视频网站免费| 伊人成人在线| 亚洲图片自拍偷拍| 久久午夜精品| 日韩午夜激情| 久久久午夜精品| 亚洲精品一区二区三区福利| 久久精品国产99国产精品| 亚洲欧洲日产国产网站| 亚洲欧美日韩视频二区| 欧美成人自拍| 午夜宅男久久久| 欧美特黄视频| 亚洲人成精品久久久久| 久久久精品一区二区三区| 一区二区三区欧美在线| 欧美成人激情在线| 1000精品久久久久久久久| 亚洲精品一区二区三区福利| 亚洲视频一区二区在线观看| 亚洲欧美日韩精品| 欧美乱大交xxxxx| 午夜精品视频一区| 99国产精品国产精品久久| 欧美国产日韩精品免费观看| 在线播放一区| 中日韩美女免费视频网站在线观看| 欧美黄色一级视频| 欧美一区二区视频免费观看| 制服诱惑一区二区| 在线免费精品视频| 亚洲欧美日韩精品一区二区| 99爱精品视频| 亚洲欧洲精品成人久久奇米网| 国产日韩一区| 久久xxxx精品视频| 欧美一区永久视频免费观看| 欧美日韩一区二区三区免费 | 亚洲午夜久久久久久久久电影网| 欧美精品亚洲二区| 亚洲图中文字幕| 老妇喷水一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 欧美国产日本高清在线| 免费不卡欧美自拍视频| 一本久道久久综合中文字幕 | 欧美亚洲综合久久| 久久精品视频在线| 亚洲久色影视| 亚洲一区二区三区精品视频| 国产日韩一区二区| 亚洲欧美日韩在线不卡| 欧美在线视频一区二区| 国产精品美女久久久久久久| 久久婷婷人人澡人人喊人人爽| 久久精品女人的天堂av| 欧美一区二区大片| 国产精品自在线| 欧美fxxxxxx另类| 欧美日韩免费观看一区三区 | 亚洲免费在线观看| 欧美午夜无遮挡| 久久嫩草精品久久久精品| 欧美国产一区在线| 亚洲国产欧美在线| 国产欧美日韩一区二区三区在线观看| 亚洲图片欧洲图片av| 欧美伊人久久久久久午夜久久久久| 国产伦精品免费视频| 午夜视频在线观看一区二区| 久久男女视频| 亚洲美女中文字幕| 欧美日韩亚洲激情| 午夜久久福利| 国产婷婷色一区二区三区四区| 一级成人国产| 欧美专区在线| 亚洲成人自拍视频| 欧美日韩国产123| 久久一区视频| 亚洲精品欧美一区二区三区| 欧美日韩精品三区| 亚洲欧美在线aaa| 麻豆成人精品| 国产农村妇女毛片精品久久麻豆 | 欧美主播一区二区三区| 国内一区二区三区| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲国产日韩在线一区模特| 亚洲日本免费| 国产精品日韩在线播放| 91久久国产综合久久蜜月精品| 亚洲一级高清| 欧美国产国产综合| 亚洲在线一区二区| 亚洲精品你懂的| 国产欧美日韩亚洲精品| 欧美v日韩v国产v| 亚洲一区二区视频在线观看| 欧美国产乱视频| 欧美一区久久| 一区二区三区日韩精品| 欧美成人资源| 小辣椒精品导航| 亚洲美女黄色| 亚洲图片欧美午夜| 伊人久久婷婷| 国产日韩欧美电影在线观看| 欧美日韩美女一区二区| 美女露胸一区二区三区| 麻豆国产va免费精品高清在线| 国产综合色产在线精品| 亚洲欧美另类综合偷拍| 亚洲高清不卡一区| 91久久久久久久久| 国模叶桐国产精品一区| 国产精品久久二区二区| 欧美日韩国产另类不卡| 久久影院午夜片一区| 欧美在线视频在线播放完整版免费观看| 亚洲精品美女在线| 欧美一区二区视频在线观看2020| 亚洲精品国产无天堂网2021| 亚洲国产精品黑人久久久| 欧美成人一区二区三区| 久久视频免费观看| 久久免费视频在线| 久久午夜精品一区二区| 久久午夜电影| 美女尤物久久精品| 免费人成精品欧美精品| 牛夜精品久久久久久久99黑人| 久久久久www| 久久久99免费视频| 久久婷婷激情| 欧美成人亚洲成人日韩成人| 欧美第一黄色网| 欧美福利网址| 欧美另类久久久品| 欧美日韩黄色大片| 欧美日一区二区在线观看| 欧美午夜精品理论片a级按摩 | 久久成人精品一区二区三区| 亚洲国产欧美日韩精品| 欧美激情一区二区| 91久久综合亚洲鲁鲁五月天| 亚洲国产一区二区三区青草影视 | 欧美寡妇偷汉性猛交| 亚洲国产欧美国产综合一区| 亚洲免费精品| 亚洲欧美日韩国产一区| 久久久久一区二区三区| 欧美激情va永久在线播放| 欧美三级电影网| 国产欧美一区二区三区沐欲| 又紧又大又爽精品一区二区| 日韩午夜剧场| 欧美一区观看| 欧美激情一区二区三级高清视频| 亚洲精品人人| 性久久久久久久久| 欧美成人精品在线播放| 国产精品理论片在线观看| 国外成人性视频| 99视频+国产日韩欧美| 性高湖久久久久久久久| 欧美第一黄色网| 这里只有精品视频在线| 久久久久综合| 国产精品毛片a∨一区二区三区| 精品成人一区二区三区| 国产日韩免费| 亚洲六月丁香色婷婷综合久久| 欧美亚洲在线观看| 最新国产拍偷乱拍精品| 性欧美精品高清| 欧美日韩一区二区三区四区在线观看| 国产日韩综合| 夜夜夜久久久| 欧美二区在线观看| 午夜一区在线| 欧美色视频一区| 亚洲激情第一区| 久久久91精品| 亚洲一区二区精品在线| 欧美精品一区视频| 在线精品国产成人综合| 午夜久久tv| 亚洲作爱视频| 欧美精品在线一区| 亚洲国产精品专区久久| 六月婷婷久久| 欧美亚洲综合另类| 另类欧美日韩国产在线| 韩国三级电影一区二区|