• <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>

            姚明,81年,97年開(kāi)始接觸電腦,6年的編程學(xué)習(xí)經(jīng)歷, 曾有4年工作經(jīng)驗(yàn),最終轉(zhuǎn)向基礎(chǔ)理論學(xué)習(xí)和研究, 現(xiàn)華中理工科技大學(xué)在讀,有志于圖形學(xué)領(lǐng)域工作發(fā)展

            EMAIL:alanvincentmail@gmail.com QQ:31547735

            隨筆分類(34)

            文章分類(99)

            相冊(cè)

            收藏夾(6)

            編程技術(shù)網(wǎng)站

            出國(guó)留學(xué)網(wǎng)站

            數(shù)學(xué)資源網(wǎng)站

            圖形學(xué)網(wǎng)站

            • ati
            • ati開(kāi)發(fā)者
            • azure
            • 葉蔚的個(gè)人網(wǎng)站
            • cnblogs
            • 計(jì)算機(jī)圖形學(xué)群
            • directx
            • directx官方網(wǎng)站
            • Eurographics
            • 計(jì)算機(jī)圖形學(xué)年會(huì)
            • gamedev
            • 游戲編程網(wǎng)站
            • nvidia
            • nvidia開(kāi)發(fā)者
            • opengl
            • opengl官方網(wǎng)站
            • opengpu
            • GPU 相關(guān)的圖形學(xué)技術(shù)
            • SCI
            • 圖形學(xué)論文
            • siggraph
            • 世界圖形學(xué)年會(huì)
            • Tim Rowley
            • 收集整理了頂級(jí)年會(huì)的論文合集

            英語(yǔ)資源網(wǎng)站

            自由職業(yè)者

            搜索

            •  

            最新評(píng)論

            /*--------------------------------------------------------------------------------------
            專業(yè):計(jì)算機(jī)原理與應(yīng)用
            姓名:姚明
            學(xué)號(hào):04051
            日期:2007.12.3
            說(shuō)明:C語(yǔ)言上機(jī)實(shí)驗(yàn)1~6程序設(shè)計(jì)
            ---------------------------------------------------------------------------------------*/

             

            //------------------------------------------------------------
            //  
            //   實(shí)驗(yàn)2 基本數(shù)據(jù)類型和運(yùn)算程序設(shè)計(jì)
            //
            //------------------------------------------------------------

            #include <stdio.h>
            #define PI 3.14159;

            void main(void)
            {
             int k,p;       /* for task 1*/
             int c;        /* for task 2*/
             int x,y,z,w;       /* for task 3*/
             float r, s;       /* for task 4*/
             unsigned short i,m,n,_result;     /* for task 5*/
             char a;        /* for task 6*/
             
             /*task 1*/
             /*輸入整數(shù)k、p,將整數(shù)k的高字節(jié)作為結(jié)果的低字節(jié),
             整數(shù)p的高字節(jié)作為結(jié)果的高字節(jié),拼成一個(gè)新的整數(shù),
             然后輸出;*/

             printf("input int k,p:");
             scanf("%x%x",&k,&p);
             int newint = (p&0xff00)|(k&0xff00)>>8;
             printf("new int = %x\n\n",newint);
             getchar();
             
             /*task 2*/
             /*輸入字符c。如果c是大寫(xiě)字母,
             則將c轉(zhuǎn)換成對(duì)應(yīng)的小寫(xiě),否則c的值不變,
             最后輸出c;*/

             printf("input a character:");
             c = getchar();
             c >= 'A' && c <= 'Z'? putchar(c + 'a'- 'A'): putchar(c);
             putchar('\n');
             putchar('\n');
             
             /*task 3*/
             /*輸入整數(shù)x、y、z,輸出其中最小值;*/
             printf("input x, y, z:");
             scanf("%d%d%d", &x, &y, &z);
             w = x < y?x:y;
             w = w < z?w:z;
             printf("min = %d\n\n",w);
             
             /*task 4*/
             /*輸入圓的半徑值r,計(jì)算并輸出圓的面積
             s=∏r2(∏=3.14159);*/

             printf("input the radius r:");
             scanf("%f", &r);
             s = r * r * PI;
             printf("The acreage is %.2f\n\n",s);
             
             /*task 5*/
             /* 輸入無(wú)符號(hào)短整數(shù)
             i,m,n(0 <= m<= 15, 1 <= n<= 16-m),
             取出i從第m位開(kāi)始向左的n位
             (m從右至左編號(hào)為0~15),
             并使其向左端(第15位)靠齊;*/

             printf("input i, m, n(0 <= m <= 15, 1 <= n <= 16 - m):");
             scanf("%hu%hu%hu", &i, &m, &n);
             _result = i << 16 - m - n & ~0xffff >> m + n;
             printf("The result is %hu\n\n", _result);
             getchar();
             
             /*task 6*/
             /*輸入一個(gè)字符,如果是數(shù)字(0~9)
             則輸出該數(shù)字代表的整數(shù)(8位)的反碼,
             否則原樣輸出。(反碼用十六進(jìn)制數(shù)表示,
             例如,整數(shù)0的反碼為0xff,整數(shù)1的反碼為0xfe,
             整數(shù)9的反碼0xf6。)*/

             printf("input a charater:");
             a = getchar();
             a >= '0' && a <= '9'?printf("%hx",~a - '0'):putchar(a);
             printf("\n\n");
             getchar();
            }


            //------------------------------------------------------------
            //  
            //   實(shí)驗(yàn)3 C程序流程控制實(shí)驗(yàn)
            //
            //------------------------------------------------------------
            #include <stdio.h>
            void main()
            {
                int c;    /* 每行的元素值(循環(huán)中生成), 初值為1 */
                int n;    /* 顯示的行數(shù) */
                int i, j; /* 循環(huán)控制 */
             
                /* 輸入行數(shù),顯示13行以內(nèi)為佳 */
                do
                {
                    printf("Input n=");
                    scanf("%d",&n);   
                } while(n <= 0 || n > 13);
                for(i = 0; i < n; i++)
                {

                    for(j = 0; j < n - i; j++) /* 輸入每行前的空格 */
                        printf("%3c", ' ');

                    c=1;                       /* 每行開(kāi)始輸出前都將c重置為1 */

                    for(j = 0; j <= i; j++)
                    {
                        printf("%-3d", c);
                        printf("%-3c", ' ');
                        c = c * (i - j) / (j + 1); /* 核心: 遞推公式 */
                    }
                    printf("\n");
                }
            }

            運(yùn)行結(jié)果(VC):
            =======================================================================
            Input n=10↙
                                          1
                                       1     1
                                    1     2     1
                                 1     3     3     1
                              1     4     6     4     1
                           1     5     10    10    5     1
                        1     6     15    20    15    6     1
                     1     7     21    35    35    21    7     1
                  1     8     28    56    70    56    28    8     1
               1     9     36    84    126   126   84    36    9     1
            =======================================================================


            /* 編寫(xiě)一個(gè)程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。*/
            #include <stdio.h>
            void main()
            {
                int num,_result=0;
             printf("enter number:");
             scanf("%d",&num);
             while(num)
             {
              _result=_result*10;
              _result= num%10+_result;
              num/=10;
             }
             printf("%d\n",_result);
            }

            /* 驗(yàn)證歌德巴赫猜想:任何充分大(>=4)的偶數(shù)都可以用兩個(gè)素?cái)?shù)之和表示,
            將4到100中的所有偶數(shù)分別用兩個(gè)素?cái)?shù)之和的形式表示。(例如:4=2+2,100=3+97)*/


            #include <stdio.h>
            int IsPrime(int n);

            void main()
            {
             for(int i=4;i<=100;i+=2)
             {
              int x=0;

              for(x=2;x<i;x++)
              {
               if(IsPrime(x)&&IsPrime(i-x))
               {
                printf("%d = %d + %d\n",i,x,i-x);
                break;
               }
              }
             }
            }

            int IsPrime(int n)
            {
             int i;
             if (n == 1 || n == 2 || n == 3 || n == 5)
              return 1;
             else if (n % 2)
             {
              for (i = 3; i <= n / 2 + 1; i += 2)
              {
               if (n % i == 0) return 0;
              }
              return 1;
             }
             else
             {
              return 0;
             }
            }


            /*計(jì)算兩個(gè)數(shù)的最大公約數(shù)*/

            #include <stdio.h>
            unsigned int gcd(unsigned int,unsigned int);

            void main()
            {
             int x,y;
             printf("Enter 2 num:");
             scanf("%d%d",&x,&y);
             printf("common divisor:%d\n",gcd(x,y));
            }

            unsigned int gcd(unsigned int x,unsigned int y) // common divisor
            {
             unsigned int i,j,t;
             if(x==0)
              return y;
             if(y==0)
              return x;
             for(i=0;0==(x&1);x>>=1,++i);
             for(j=0;0==(y&1);y>>=1,++j);
             if(j<i)
              i=j;
             for(;;)
             {
              if(x<y)
               t=y,y=x,x=t;
              if(0==(x-=y))
               return y<<i;
              for(;0==(x&1);x>>=1);
             }
            }


            /* 輸出所輸入的正文。輸出時(shí)將連續(xù)的多個(gè)空格字符和橫向制表符縮減為一個(gè)空格字符,
            空行刪去不輸出(空行是指僅由空格字符、橫向制表符和行結(jié)束符組成的行)*/

            #include <stdio.h>
            int main()
            {
               int ch, flag1 =0, flag2 = 0;
                while((ch=getchar())!=EOF)
                switch(ch){
                    case '\n':
                        if(flag2) {
                            flag1=flag2=0;
                            putchar(ch);
                        }
                        break;
                    case ' ':
                    case '\t':
                        flag1=1;
                        break;
                    default:
                        if(flag1){
                            putchar(' ');
                            flag1=0;
                        }
                        putchar(ch);
                        flag2=1;
                        continue;
                }
                return 0;
            }

            //------------------------------------------------------------
            //  
            //   實(shí)驗(yàn)4 C函數(shù)程序設(shè)計(jì)
            //
            //------------------------------------------------------------

            #include <stdio.h>

            int factorial(int n);     //計(jì)算階乘
            double reckon(int n);     //公式函數(shù)

            void main()
            {
             int num;
             printf("Enter num:");
             scanf("%d",&num);
             printf("out:%f\n",reckon(num));
            }

            int factorial(int n)
            {
             long _result;
                if(n>1) 
              _result=factorial(n-1)*n;
                else  _result=1;
                return(_result);
            }

            double reckon(int n)
            {
             double sum=0;
             for(int i=1;i<n;i++)
             {
              double ret = factorial(i);
              sum += 1/ret;
             }
             return sum;
            }


            //------------------------------------------------------------
            //  
            //   實(shí)驗(yàn)5 數(shù)組程序設(shè)計(jì)
            //
            //------------------------------------------------------------

            /* 用rand函數(shù)模擬擲雙骰子,計(jì)算投擲出的兩個(gè)值的和。在程序中把這兩個(gè)骰子各擲3600次,
            用一維數(shù)組記錄每一種可能值的出現(xiàn)次數(shù),以表格格式打印出結(jié)果,判斷算出的和是否合理。*/

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

            void main()
            {
               int rands[13];int num1,num2;int i;
               memset(rands,0,sizeof(int)*13);
              
               /* Seed the random-number generator with current time so that
                * the numbers will be different every time we run.
                */
               srand( (unsigned)time( NULL ) );

               for(i = 1;   i < 3600; i++ )
               {
                num1 = rand()%6;
                num2 = rand()%6;
                num1==0?num1=6:num1;
                num2==0?num2=6:num2;
                rands[num1+num2]++;
               }

               printf("-------------------------------------------------------------------------------\n");
               printf("number:\t");
               for(i=2; i<13; i++)
               {
              printf("%d\t",i);
               }
               printf("\ntimes:\t");
               for(i=2; i<13; i++)
               {
              printf("%d\t",rands[i]);
               }
               printf("\n-------------------------------------------------------------------------------\n");
            }

            /* 定義函數(shù)stncat(s,t,n),從串t中至多取 n個(gè)字符添加到 s的尾部,在主函數(shù)中輸入兩個(gè)字符串和一個(gè)整數(shù)n,
            調(diào)用函數(shù)stncat按要求連接成一個(gè)字符串,輸出連接后的結(jié)果字符串。*/

            #include <stdio.h>

            char * strncat(char*,const char *,int);

            void main()
            {
               char string[80] = "This is the initial string!";
               char suffix[] = " extra text to add to the string...";
               /* Combine strings with no more than 19 characters of suffix: */
               printf( "Before: %s\n", string );
               strncat( string, suffix, 19 );
               printf( "After:  %s\n", string );

            }

            char * strncat(char *dest,const char *source,int count)

            {

               char *p = dest;

               while (*p) p++;

               while (count-- && (*p++ = *source++));

               *p = '\0';

               return(dest);
            }


            /* 找出二維數(shù)組b[3][3]的“鞍點(diǎn)”(即行上為最大,列上為最小的元素)
            及其位置(行、列下標(biāo)),如果不存在鞍點(diǎn)也輸出相應(yīng)信息。*/

            #include<stdio.h>
            #define N 3
            #define M 3

            void main()
            {
             int a[N][M],i,j,k,max=0,xmax,ymax,found=0,flag=1;
             
             printf("Input the array(%d numbers):\n",N*M);
             for( i=0;i<N;i++ )
             {
              for( j=0;j<M;j++ )
              {
               printf("array[%d][%d]=",i,j);
               scanf("%d",&a[i][j]);
              }
             }
             
             for( i=0;i<N;i++ )
             {
              for( j=0;j<M;j++ )
              {
               if( max<a[i][j] )
               {
                max=a[i][j];
               }
              }
              
              for( j=0;j<M;j++ )
              {
               if(max==a[i][j])
               {
                xmax=j;
                
                for( k=0;k<N;k++ )
                {
                 if( max>a[k][xmax] )
                  flag=0;
                }
                if( flag==1 )
                {
                 ymax = i;
                 printf("%d is the andian.\n",max);
                 printf("pt: x=%d\ty=%d\n",xmax+1,ymax+1);
                 found++;
                }
               }
              }
             }
             if( found==0 )
              printf("andian not found!\n");
            }


            /* 八皇后問(wèn)題,在8*8方格國(guó)際象棋盤(pán)上放置8個(gè)皇后,任意兩個(gè)皇后不能位于同一行、
            同一列或同一斜線(正斜線或反斜線)上,輸出所有可能的放法。*/
            #include <stdio.h>
            #include "math.h"

            void paichu(char (*a)[8],int i,int j);

            void main()
            {
             int i,j,k,n;
             char a[8][8];
             for(k=0;k<8;++k)
             {
              n=0; 
              for(i=0;i<8;++i)
               for(j=0;j<8;++j)
                a[i][j]='*';
               for(i=0;i<8;++i)
                for(j=0;j<8;++j)
                {
                 if(i==0 && j<k) continue;
                 else if(a[i][j]=='*' && (fabs(j-k)<i+5))
                 {
                  paichu(a,i,j);
                  a[i][j]='*';
                 }
                }
                for(i=0;i<8;++i)
                 for(j=0;j<8;++j)
                  if(a[i][j]=='*') ++n;
                  if(n!=8) continue; 
                  for(i=0;i<8;++i)
                  {
                   for(j=0;j<8;++j)
                    printf("%c",a[i][j]);
                   printf("\n");
                  }
                  printf("\n");
                  getchar();
             }
            }

            void paichu(char (*a)[8],int i,int j)
            {
             int k,n,i1,i2,j1,j2;
             if(i>j) n=j;
             else n=i;
             for(k=0;k<8;++k)
             {
              *(*(a+k)+j)='o';
              *(*(a+i)+k)='o';
             }
             i1=i-n;
             j1=j-n;
             while(i1<8 && j1<8)
             {
              *(*(a+i1)+j1)='o';
              ++i1;
              ++j1;
             }
             if(i+j<8) i2=0;
                else i2=i-7+j;
             j2=j+i-i2;
             while(i2<8 && j2>=0)
             {
              *(*(a+i2)+j2)='o';
              ++i2;
              --j2;
             }
            }

            //------------------------------------------------------------
            //  
            //   實(shí)驗(yàn)6 指針程序設(shè)計(jì)
            //
            //------------------------------------------------------------

            1.2 運(yùn)行下面的程序之前,先給出你自己認(rèn)為的結(jié)果,再看看運(yùn)行結(jié)果是否和你想的一樣,試著解釋程序輸出的結(jié)果。
            #include <stdio.h>
            #include <stdlib.h>
             
            void f(char s[100])
            {
               printf("s size in function f: %d\n", sizeof(s));
            }

            int main()
            {
               char s[] = "hello";   
               char *p, *mp;
               int n;
               char str[100];
              
               printf("s size: %d\n", sizeof(s));
             
               p = s;
               printf("p size: %d\n", sizeof(p));
             
               printf("n size: %d\n", sizeof(n));
             
               printf("str size: %d\n", sizeof(str));
             
               mp = malloc(100);
               printf("mp size: %d\n", sizeof(mp));
             
               f(str);
             
               return 0;
            }

            sizeof是是長(zhǎng)度運(yùn)算符, 獲得數(shù)據(jù)類型或是變量的長(zhǎng)度,如果是數(shù)據(jù)類型,
            則返回?cái)?shù)據(jù)類型大小,如果是用數(shù)組,則返回?cái)?shù)組所占空間大小

            s size:6  s是自動(dòng)分配的數(shù)組,根據(jù)所給字符串長(zhǎng)度,編譯器自動(dòng)分配空間,(h,e, l, l, o, \0)
            p size:4  p是char*,通常,指針長(zhǎng)度和計(jì)算機(jī)CPU的位數(shù)相等,此計(jì)算機(jī)為32位,即4字節(jié)
            str size:100 返回?cái)?shù)組長(zhǎng)度,str是用戶自定義長(zhǎng)度的數(shù)組
            mp size:4 同上 p size
            s size in function f:4 f函數(shù)屬于傳參操作,即指針傳遞,沒(méi)有開(kāi)辟新空間,函數(shù)對(duì)s做指針處理。

             

            2.判斷與改錯(cuò):
            #include <stdio.h>

            void upper(char *s)
            {
              while (*s != '\0')
              {
                if (*s >= 97 && *s <= 122)
                  *s -= 32;
                s++;
              }
            }

            void lower(char *s)
            {
              while (*s != '\0')
              {
                if (*s >= 65 && *s <= 90)
                  *s += 32;
                s++;
              }
            }

            int main ()
            {
              char str[100];
              char *p, *q;

              printf("Input a string with uppercase, lowercase or digits: \n");
              gets(str);
              printf("Original:  %s\n",str);

              p = str;
              upper(p);
              printf("Uppercase: %s\n",p);

              q = str;
              lower(q);
              printf("Lower:     %s\n",q);

              return 0;
            }

            錯(cuò)誤原因:
            p,q兩個(gè)指針指向了同一個(gè)數(shù)據(jù)源str,對(duì)p,q的操作會(huì)直接改變str的內(nèi)容,
            printf函數(shù)必須在每次數(shù)據(jù)改變時(shí),分別打印到屏幕,否則只能輸出3行同樣的str數(shù)據(jù)。


            /*編寫(xiě)一個(gè)你自己的strlen函數(shù),輸入一個(gè)字符串,返回它的長(zhǎng)度,
            并在一個(gè)完整的程序中驗(yàn)證它。提示:字符串的結(jié)尾為 ‘\0’*/

            void main ()
            {
               char buffer[61] = "How long am I?";
               int  len;
               len = strlen( buffer );
               printf( "'%s' is %d characters long\n", buffer, len );
            }

            int strlen(const char * str) {
                 int length = 0 ;
                 while (*str++ )
                     ++ length;
                 return  length;
             }

            /*指針數(shù)組最頻繁的用處是存放具有不同長(zhǎng)度的字符串。
            試用指針數(shù)組對(duì)輸入的n個(gè)長(zhǎng)度不等的字符串進(jìn)行排序,
            升序。字符串的比較可以用標(biāo)準(zhǔn)庫(kù)中的strcmp函數(shù)。*/
            #include <stdio.h>

            void BubbleSort(char* pt[1024],int count);

            void main()
            {
             char buffer[1024];
             char *pBuffer;
             char *pt[1024];
             int i, ch;
             
             printf( "Do over please input '0'\n" );
             printf( "Before:\n" );
             
             /* Read in single line from "stdin": */
             for( i = 0; (i < 1024) &&  ((ch = getchar()) != EOF)
              && (ch != '0'); i++ )
              buffer[i] = (char)ch;
             
             /* Terminate string with null character: */
             buffer[i] = '\0';
             
             int pl=0;
             pt[pl] = buffer;

             pBuffer = buffer;
             while (*pBuffer++)
             {
              if(*pBuffer == '\n')
              {
               ++pl;
               *pBuffer = '\0';
               pBuffer++;
               pt[pl] = pBuffer;
              }
             }

             BubbleSort(pt,pl);

             printf( "After:\n" );
             for(i=0;i<pl;i++)
             {
              printf( "%s\n", pt[i]);
             }
            }

            void BubbleSort(char* in[1024],int count)
            {
             char* temp;
             for(int y=0;y<count-1;y++)
             {
              for(int x=1;x<count-y;x++)
              {
               if((in[x][0])<(in[x-1][0]))
               {
                temp=in[x-1];
                in[x-1]=in[x];
                in[x]=temp;
               }
              }
             }
            }


            /*編寫(xiě)一個(gè)帶有命令行參數(shù)的程序showletter*/

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

            int main(int argc, char* argv[])
            {

             printf("showletter [start] [end]\nstart\t a~z\nend\t0~99\n");

             int start=0,end=0;

             if(argc == 1)
             {
              start = 'a';
              end   = 'z';
             }
             else if(argc == 2)
             {
              start = (int)argv[1][0];
              end   = 'z';
             }
             else if(argc == 3)
             {
              start = (int)argv[1][0];
              end   =  start+atoi(argv[2]);
             }
             else
             {
              printf("The command parameter error!\n");
             }

              for(int i=start; i<end; i++)
             {
               if(i>'z')
               {
                printf("\n");
                end-=26;
                i='a';
               }
               printf("%c",i);
             }
             printf("\n");
             
             return 0;
            }

            posted on 2007-12-03 13:48 姚明 閱讀(1211) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Win32API

            FeedBack:
            # re: C語(yǔ)言上機(jī)實(shí)驗(yàn)[未登錄](méi) 2007-12-03 21:44 夢(mèng)在天涯
            C 現(xiàn)在用的是什么編譯器哦  回復(fù)  更多評(píng)論
              
            # re: C語(yǔ)言上機(jī)實(shí)驗(yàn) 2007-12-04 23:14 aGAric
            樓主好名字。。

            不過(guò)注釋換成英文,就好啦  回復(fù)  更多評(píng)論
              
            91精品观看91久久久久久| 久久男人中文字幕资源站| 精品久久久久久久国产潘金莲| 91精品国产91久久久久久蜜臀| 久久国产色AV免费观看| 日韩人妻无码一区二区三区久久| 亚洲国产精品综合久久一线| 99久久精品九九亚洲精品| 99久久精品国内| 久久国产亚洲精品麻豆| 久久精品中文字幕久久| 色综合久久中文色婷婷| 久久久久综合网久久| 久久精品国产69国产精品亚洲| 精品久久一区二区| 久久se这里只有精品| 国产偷久久久精品专区 | 久久精品免费一区二区| 久久大香萑太香蕉av| 久久99久国产麻精品66| 嫩草伊人久久精品少妇AV| 精品久久久久久中文字幕人妻最新| 久久久久久国产精品免费无码| 国产精品久久免费| 国产香蕉97碰碰久久人人| 色婷婷噜噜久久国产精品12p | 久久精品中文騷妇女内射| 精品久久久久中文字幕日本| 久久综合九色综合精品| 久久久久久久久久久免费精品| 久久国产精品无| 国产精品久久毛片完整版| 精品人妻伦九区久久AAA片69| 亚洲国产成人精品无码久久久久久综合 | 亚洲精品高清国产一线久久| 久久精品国产精品亚洲下载| 性做久久久久久久久老女人| 国色天香久久久久久久小说 | 久久青草国产精品一区| 久久一本综合| 97久久香蕉国产线看观看|