| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2864 人关注过本帖, 4 人收藏
标题:TC代码与VC的不同之处,自我总结
只看楼主 加入收藏
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
结帖率:100%
收藏(4)
 问题点数:0 回复次数:19 
TC代码与VC的不同之处,自我总结
首先是用while语句求n!TC的是下面这个。   
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i = 0;/* i为计数器 */
    int n;
    int factorial = 1;/* 保存阶乘的结果 */
    puts("*************************************");
    puts("*      The program will compute     *");
    puts("*    the factotial of an integer    *");
    puts("*************************************");
    puts("please input the number n:");
    scanf("%d",&n);
    if(n < 0)/*判断输入的书是否大于或等于0*/
    {
          printf("please input an interger >= 0.\n");
        return 0;
    }
    if(n==0)/* 0的阶乘是1 */
    {
        printf("factorial of 0 is 1.\n");
        return 0;
    }
    i = 1;
    while(i <= n)
    {
        factorial = factorial * i;
        i++;
    }
    printf("factorial of %d is:%d.\n",n,factorial);
    getch();
    return 0;
  
}

搜索更多相关主题的帖子: 代码 
2010-07-02 17:18
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
然而同样的代码在VC中却提示getch();未声明变量。
此时修改代码为:
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
    int i = 0;/* i为计数器 */
    int n;
    int factorial = 1;/* 保存阶乘的结果 */
    puts("*************************************");
    puts("*      The program will compute     *");
    puts("*    the factotial of an integer    *");
    puts("*************************************");
    puts("please input the number n:");
    scanf("%d",&n);
    if(n < 0)/*判断输入的书是否大于或等于0*/
    {
          printf("please input an interger >= 0.\n");
        return 0;
    }
    if(n==0)/* 0的阶乘是1 */
    {
        printf("factorial of 0 is 1.\n");
        return 0;
    }
    i = 1;
    while(i <= n)
    {
        factorial = factorial * i;
        i++;
    }
    printf("factorial of %d is:%d.\n",n,factorial);
    getch();
    return 0;
  
}

2010-07-02 17:19
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
下面是一个简单计算器的TC代码:
程序代码:
#include <stdio.h>
char token;
/*定义程序要使用到的一些函数*/
void match( char expectedToken ) /*对当前的标志进行匹配*/
{
    if( token == expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/
    else
    {     
        printf("cannot match\n");
        exit(1); /*匹配不成功,退出程序*/
    }
}
int low( void )/*用于计算表达式中级别最低的运算*/
{
    int result = mid(); /*计算比加减运算优先级别高的部分*/
    while(( token == '+' ) || ( token == '-' ))
        if ( token == '+')
        {
            match('+');     /*进行加法运算*/
            result += mid();
            break;
        }
        else if ( token == '-')
        {
            match('-');    /*进行减法运算*/
            result -= mid();
            break;
        }
    return result;
}
int mid( void )/*用于计算表达式中级别较高的运算*/
{
    int div; /*除数*/
    int result = high();   /*计算比乘除运算优先级别高的部分*/
    while(( token == '*' ) || ( token == '/' ))
        if ( token == '*')
        {
            match('*');  /*进行乘法运算*/
            result *= high();
            break;  
        }
        else if (token == '/')
        {
            match('/');   /*进行除法运算*/
            div = high();
            if( div == 0 ) /*需要判断除数是否为0*/
            {
                printf( "除数为0.\n" );
                  exit(1);
            }
            result /= div;
            break;
        }
    return result;
}
int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/
{
    int result;
    if( token == '(' ) /*带有括号的运算*/
    {
        match( '(' );
        result = low();/*递归计算表达式*/
        match(')');
    }
    else if ( token>= '0'&&token<='9' ) /*实际的数字*/
    {
        ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/
        scanf( "%d", &result ); /*读出数字*/
        token = getchar();  /*读出当前的标志*/
    }
    else
    {
         printf("The input has unexpected char\n"); /*不是括号也不是数字*/
         exit(1);
    }
    return result;
}

main()
{ 
    int result;  /*运算的结果*/                 
    printf("*****************************************\n");
    printf("**Welcome to use this simple calculator**\n");
    printf("**Please input a multinomial like      **\n");
    printf("**                    6-3*(5-1)/2+14/7 **\n");
    printf("*****************************************\n");
    token = getchar(); /*载入第一个符号*/
  
    result = low(); /*进行计算*/
    if( token == '\n' ) /* 是否一行结束 */
        printf( "The answer is : %d\n", result );
    else
    {
        printf( "Unexpected char!");
        exit(1); /* 出现了例外的字符 */
    }
    scanf("%d",result);--------------------Configuration: 简单计算器 - Win32 Debug--------------------
Compiling...
简单计算器.cpp
c:\documents and settings\administrator\简单计算器.cpp(11) : error C2065: 'exit' : undeclared identifier
c:\documents and settings\administrator\简单计算器.cpp(17) : error C2065: 'mid' : undeclared identifier
c:\documents and settings\administrator\简单计算器.cpp(35) : error C2373: 'mid' : redefinition; different type modifiers
c:\documents and settings\administrator\简单计算器.cpp(37) : error C2065: 'high' : undeclared identifier
c:\documents and settings\administrator\简单计算器.cpp(61) : error C2373: 'high' : redefinition; different type modifiers
执行 cl.exe 时出错.

    return 0;
}然而在VC中提示错误。此时修改代码为:
程序代码:
#include <stdio.h>
#include <math.h>
#include <process.h>
#include <ctype.h>
char token;
/*定义程序要使用到的一些函数*/
void match( char expectedToken ) /*对当前的标志进行匹配*/
{
    if( token == expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/
    else
    {     
        printf("cannot match\n");
        exit(1); /*匹配不成功,退出程序*/
    }
}
int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/
{
    int result;
    if( token == '(' ) /*带有括号的运算*/
    {
        match( '(' );
        result;/*递归计算表达式*/
        match(')');
    }
    else if ( token>= '0'&&token<='9' ) /*实际的数字*/
    {
        ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/
        scanf( "%d", &result ); /*读出数字*/
        token = getchar();  /*读出当前的标志*/
    }
    else
    {
         printf("The input has unexpected char\n"); /*不是括号也不是数字*/
         exit(1);
    }
    return result;
}
int mid( void )/*用于计算表达式中级别较高的运算*/
{
    int div; /*除数*/
    int result = high();   /*计算比乘除运算优先级别高的部分*/
    while(( token == '*' ) || ( token == '/' ))
        if ( token == '*')
        {
            match('*');  /*进行乘法运算*/
            result *= high();
            break;  
        }
        else if (token == '/')
        {
            match('/');   /*进行除法运算*/
            div = high();
            if( div == 0 ) /*需要判断除数是否为0*/
            {
                printf( "除数为0.\n" );
                  exit(1);
            }
            result /= div;
            break;
        }
    return result;
}
int low( void )/*用于计算表达式中级别最低的运算*/
{
    int result = mid(); /*计算比加减运算优先级别高的部分*/
    while(( token == '+' ) || ( token == '-' ))
        if ( token == '+')
        {
            match('+');     /*进行加法运算*/
            result += mid();
            break;
        }
        else if ( token == '-')
        {
            match('-');    /*进行减法运算*/
            result -= mid();
            break;
        }
    return result;
}


main()
{ 
    int result;  /*运算的结果*/                 
    printf("*****************************************\n");
    printf("**Welcome to use this simple calculator**\n");
    printf("**Please input a multinomial like      **\n");
    printf("**                    6-3*(5-1)/2+14/7 **\n");
    printf("*****************************************\n");
    token = getchar(); /*载入第一个符号*/
  
    result = low(); /*进行计算*/
    if( token == '\n' ) /* 是否一行结束 */
        printf( "The answer is : %d\n", result );
    else
    {
        printf( "Unexpected char!");
        exit(1); /* 出现了例外的字符 */
    }
    scanf("%d",result);
    return 0;
}

结构上的函数声明。我取消了HIGH中的一个递归。
测试通过。




2010-07-02 18:17
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
不过下面一个简单求和的代码却完全一样。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define BUFFERSIZE 1024  /*允许处理的最长行有1024个字符*/
int main()
{
    int a,b,sum;         /*将输入的两个数分别存储在变量a和b中,sum=a+b*/
    char buffer[BUFFERSIZE];
    printf("***********************************\n");
    printf("*  Welcome to use our counter     *\n");
    printf("*  Input two integers in one line *\n");
    printf("*  The sum will be printed        *\n");
    printf("*  Input the char '#' to quit     *\n");
    printf("***********************************\n");
    /*从标准输入(stdin)读取输入的数据,存储在buffer中.
    如果读取的第一个字符是'#'则推出程序*/
    while((fgets(buffer,BUFFERSIZE,stdin)!=NULL)&&(buffer[0]!='#'))
    {
        if(sscanf(buffer,"%d %d",&a,&b)!=2)              /*处理存储在buffer中的一行数据*/
            {
                printf("The input is skipped:%s",buffer);/*如果输入的数字不是两个则报错*/
                continue;                               /*继续读取下一组数据*/          
            }
        sum=a+b;                                         /*计算a与b的和*/
        printf("The sum of %d and %d is %d\n",a,b,sum);  /*输出计算结果*/
    }
    return 0;
}
2010-07-02 19:54
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
下面是一个bebug的简单应用。在TC中的代码
程序代码:
#include<stdio.h>
void simpleDebug(int i,char ch,float fl,char a_char[],int a_int[],int size,int option)
{
    int j;
    switch(option)
    {
        case 1:/*整型数*/
            printf("The int value is %d\n",i);
            break;
        case 2:/*字符型*/
            printf("The char is %c\n",ch);
            break;
        case 3:/*浮点型*/
            printf("The float value is %f\n",fl);
            break;
        case 4: /*字符型数组*/
        {
            printf("The char array is\n");
            for(j=0;j<size;++j)
                printf(" %c",a_char[j]);
            printf("\n");
            break;
        }
        case 5: /*整型数组*/
        {
            printf("The integer array is:\n");
            for(i=0;j<size;++j)
                printf(" %d",a_int[j]);
            printf("\n");
            break;
        }
        default:
            printf("Option Error!\n");
            break;
    }
    printf(" Please press any key to continue:\n");
    getch();
}
void main()
{
       int i,j,a_int[8];
    char ch,a_char[8];
    float fl;
    char *string="I love china";
    for(i=0;i<8;i++)
    {
        a_int[i]=i+1;
    }
    for(j=0;j<8;j++)
    {
        a_char[j]=(char)(j+65);
    }
    ch='x';
    fl=6.5;
    clrscr();
    simpleDebug(i,0,0,0,0,0,1); /*输出整型i的值*/
    simpleDebug(0,ch,0,0,0,0,2);/*输出字符型ch的值*/
    simpleDebug(0,0,fl,0,0,0,3);/*输出字符型ch的值*/
    simpleDebug(0,0,0,a_char,0,8,4);/*输出字符型数组a_char中各元素的值*/
    simpleDebug(0,0,0,string,0,13,4);/*输出字符串string的值*/
    simpleDebug(0,0,0,0,a_int,8,3);/*输出整形数组a_int中各元素的值*/
    simpleDebug(0,0,0,0,0,0,10);/*出错*/
}

然而在VC中式没有  clrscr();的
所以修改代码为:
程序代码:
#include<stdio.h>
#include<conio.h>
#include <process.h>
void simpleDebug(int i,char ch,float fl,char a_char[],int a_int[],int size,int option)
{
    int j;
    switch(option)
    {
        case 1:/*整型数*/
            printf("The int value is %d\n",i);
            break;
        case 2:/*字符型*/
            printf("The char is %c\n",ch);
            break;
        case 3:/*浮点型*/
            printf("The float value is %f\n",fl);
            break;
        case 4: /*字符型数组*/
        {
            printf("The char array is\n");
            for(j=0;j<size;++j)
                printf(" %c",a_char[j]);
            printf("\n");
            break;
        }
        case 5: /*整型数组*/
        {
            printf("The integer array is:\n");
            for(i=0;j<size;++j)
                printf(" %d",a_int[j]);
            printf("\n");
            break;
        }
        default:
            printf("Option Error!\n");
            break;
    }
    printf(" Please press any key to continue:\n");
    getch();
}
void main()
{
       int i,j,a_int[8];
    char ch,a_char[8];
    float fl;
    char *string="I love china";
    for(i=0;i<8;i++)
    {
        a_int[i]=i+1;
    }
    for(j=0;j<8;j++)
    {
        a_char[j]=(char)(j+65);
    }
    ch='x';
    fl=6.5;
    system("cls");
    simpleDebug(i,0,0,0,0,0,1); /*输出整型i的值*/
    simpleDebug(0,ch,0,0,0,0,2);/*输出字符型ch的值*/
    simpleDebug(0,0,fl,0,0,0,3);/*输出字符型ch的值*/
    simpleDebug(0,0,0,a_char,0,8,4);/*输出字符型数组a_char中各元素的值*/
    simpleDebug(0,0,0,string,0,13,4);/*输出字符串string的值*/
    simpleDebug(0,0,0,0,a_int,8,3);/*输出整形数组a_int中各元素的值*/
    simpleDebug(0,0,0,0,0,0,10);/*出错*/
}
如上。




2010-07-02 20:12
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
下面是一个温度转换的代码TC的。
程序代码:
#include<stdio.h>
int main()
{
    char cmd;
    float temperature;
    while(1)
    {
        printf("\n*****************************************\n");
        printf("\n|   Please select one of convertions:   |\n");
          printf("|    c:  Convert Celsius to Fahrenheit  |\n");
            printf("|    f:  Convert Fahrenheit to Celsius  |\n");
            printf("|    q:  Quit                           |\n");
        printf("\n*****************************************\n");
        scanf("%c",&cmd);
        switch (cmd)
        {
            case 'c':
            {
                printf("\n*****************************************\n");
                printf("\n|   Please input Celsius temperature:   |\n");
                scanf("%f",&temperature);
                printf("\n|  The Fahrenheit temperature is:%6.3f|\n",temperature*1.8+32);
                printf("\n*****************************************\n");
                break;
            }
            case 'f':
            {
                printf("\n*****************************************\n");
                printf("\n  Please input Fahrenheit temperature:  |\n");
                scanf("%f",&temperature);
                printf("\n  The Celsius temperature is : %6.3f  |\n",5*(temperature-32)/9);
                printf("\n*****************************************\n");
                break;
            }
            case 'q':
            {
                break;
            }
            default:
            {
                printf("Your Command Error!temperatureut Again\n");
            }
        }  
        getchar();
        if(cmd=='q')
            break;
        printf("\n   Please input any key to use again:   \n");
        getchar();
        clrscr();
    }
    return 0;
}

然而问题同上一个代码VC中没有 clrscr();
所以修改为如下代码:
程序代码:
#include<stdio.h>
#include <process.h>
int main()
{
    char cmd;
    float temperature;
    while(1)
    {
        printf("\n*****************************************\n");
        printf("\n|   Please select one of convertions:   |\n");
          printf("|    c:  Convert Celsius to Fahrenheit  |\n");
            printf("|    f:  Convert Fahrenheit to Celsius  |\n");
            printf("|    q:  Quit                           |\n");
        printf("\n*****************************************\n");
        scanf("%c",&cmd);
        switch (cmd)
        {
            case 'c':
            {
                printf("\n*****************************************\n");
                printf("\n|   Please input Celsius temperature:   |\n");
                scanf("%f",&temperature);
                printf("\n|  The Fahrenheit temperature is:%6.3f|\n",temperature*1.8+32);
                printf("\n*****************************************\n");
                break;
            }
            case 'f':
            {
                printf("\n*****************************************\n");
                printf("\n  Please input Fahrenheit temperature:  |\n");
                scanf("%f",&temperature);
                printf("\n  The Celsius temperature is : %6.3f  |\n",5*(temperature-32)/9);
                printf("\n*****************************************\n");
                break;
            }
            case 'q':
            {
                break;
            }
            default:
            {
                printf("Your Command Error!temperatureut Again\n");
            }
        }  
        getchar();
        if(cmd=='q')
            break;
        printf("\n   Please input any key to use again:   \n");
        getchar();
        system("cls");
    }
    return 0;
}

如上

2010-07-02 20:19
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
这个模拟银行打印的代码却完全一样:
程序代码:
#include<stdio.h>
char *p[10]={"","","","","","","","","",""};
void PrintInterger(char a[], int len);/*输出整数部分 */
void PrintDecimal(char a[],int len);/*输出小数部分 */
int main(void)
{
   char Number[128];/* 用来存放用户输入的数字 */
   char Interger[64], Decimal[64];/* 分别存放输入数的整数和小数部分 */
   int lenI,lenD;/* 分别记录整数和小数部分的长度 */
   int i,j;
   puts("*************************************");
   puts("*      This is a print program      *");
   puts("*           used in a bank          *");
   puts("*************************************");
   puts("please input the money:");
   gets(Number);
   i=0;j=0;
   /* 处理输入的数的整数部分 */
   while((Number[i]!= '/0') && (Number[i]!= '.' )&& (Number[i] >= '0') && (Number[i] <= '9'))
   {
          Interger[i]=Number[i];
          i++;
   }
   lenI = i;
   if(Number[i]== '.')
   {
          i++;
          /*处理输入的数的小数部分*/
          while(Number[i]!= '/0' && Number[i] >= '0' && Number[i] <= '9')
          {
                 Decimal[j++]=Number[i++];
          }
          /* 精确到小数点后4位数 */
          if((j >= 4 )&& (Decimal[4] > '5'))
          {  
                 Decimal[3]+=1;/* 进行4舍五入操作 */
                 Decimal[4] = '/0';
          }
   }
   if(j >= 4)
     lenD = 4;
   else
     lenD = j;
   PrintInterger(Interger, lenI);
   PrintDecimal(Decimal,lenD);
   printf("\n");
   return 0;
}
void PrintInterger(char a[], int len)
{
   int i, j, tag1, tag2, tag3;
   tag1=(a[len-6]=='0' && a[len-7]=='0' && a[len-8]=='0');
   tag2=(a[len-14]=='0' && a[len-15]=='0' && a[len-16]=='0');
   tag3=(a[len-22]=='0' && a[len-23]=='0' && a[len-24]=='0');
   printf("您的钱数是:\n");
   for(i=0,j=len; i<len && j>0; i++,j--)
   {
      if(a[i] == '0' && i != len-1)
      {
         if((j == 5 && tag1) || (j == 13 && tag2) || (j == 21 && tag3 ))
          ;
         else if((j == 21 && ! tag3 )||(j == 5 && ! tag1)||(j == 13 && ! tag2))
          printf("");      
         else if(j == 9 || j == 17 )
          printf("亿");
       else if(a[i+1] == '0' && i != len-1)
          ;
         else if(a[i+1] != '0' && i != len-1)
          printf("");
         else
          ;
      } 
      else if(a[i] == '0' && i == len-1)
       ;
      else if(a[i] != '0')
      {
         /*阿拉伯数字向汉字的转换*/
         switch(a[i])
         {
            case '1': printf("%s",p[1]); break;
            case '2': printf("%s",p[2]); break;
            case '3': printf("%s",p[3]); break;
            case '4': printf("%s",p[4]); break;
            case '5': printf("%s",p[5]); break;
            case '6': printf("%s",p[6]); break;
            case '7': printf("%s",p[7]); break;
            case '8': printf("%s",p[8]); break;
            case '9': printf("%s",p[9]); break;
            default:  printf("error"); ; break;
         }
         /*输出相应的单位*/
         switch(j)
         {
            case 2:
            case 6:
            case 10:
            case 14:
            case 18:
            case 22: printf("%s","");  break;
            case 3:
            case 7:
            case 11:
            case 15:
            case 19:
            case 23: printf("%s",""); break;
            case 4:
            case 8:
            case 12:
            case 16:
            case 20:
            case 24: printf("%s",""); break;
            case 5:
            case 13:
            case 21: printf("%s","");  break;
            case 9:
            case 17: printf("%s","亿"); break;
            default:  printf("%s","");  break;
         }
      }   
    }
    printf("%s","");
}  

void PrintDecimal(char a[],int len)
{
   int i;
   for(i=0; i<len; i++)
   {
         /*阿拉伯数字向汉字的转换*/
      switch(a[i])
      {
         case '0': printf("%s",p[0]); break;
         case '1': printf("%s",p[1]); break;
         case '2': printf("%s",p[2]); break;
         case '3': printf("%s",p[3]); break;
         case '4': printf("%s",p[4]); break;
         case '5': printf("%s",p[5]); break;
         case '6': printf("%s",p[6]); break;
         case '7': printf("%s",p[7]); break;
         case '8': printf("%s",p[8]); break;
         case '9': printf("%s",p[9]); break;
         default:  printf("%s",p[0]); ; break;
      }
      /*输出对应的单位*/
      switch(i)
      {
         case 0: printf("%s",""); break;
         case 1: printf("%s",""); break;
         case 2: printf("%s",""); break;
         case 3: printf("%s",""); break;
         default:; break;
      } 
   } 
}     
2010-07-02 20:26
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
下面是一个2维数组的应用
tc代码为:
程序代码:
# include <stdio.h>
/*定义一个求每门课平均成绩的函数AverageCourse
    它的形参一个是二维数组,用来传递学生成绩;
    一个是指针变量(数组名),存放每门课的平均成绩*/
void AverageCourse(float score[][4],float *avg)
{
    int i,j;
    float sum;
    for(i=0;i<4;i++)
    {
        sum=0;
        for(j=0;j<4;j++)
            sum+=score[j][i];
        avg[i]=sum/4;
    }
}
/*定义一个求总平均成绩的函数AverageAll
    它的形参一个是指针变量(数组名),传递一个首地址
    n是要计算的成绩个数*/
float AverageAll(float *score, int n)
{
    int i=0;
    float sum = 0;
    while(i<n)
    {
        sum+=score[i];
        i++;
    }
    return sum/n;
}
/*定义一个查询学生成绩的函数AStudentScore
    它的形参一个是指向数组的指针,n是要计算的学生号*/
void StudentScore(float(*score)[4], int n)
{
    int i;
    for(i=0; i<4; i++)
        printf("%4.2f ", *(*(score+n)+i));
    printf("\n");
}
int main()
{
    int num,i;
    /* 定义一个数组aveCourse来存储每门课的平均成绩,
        定义变量aveAll来存储总的平均成绩*/
    float aveAll,aveCourse[4];
    /* 定义一个数组score来存储每个学生每门课的成绩,并赋初值*/
    float score[4][4] = {{67, 78, 45, 88}, {76, 54, 90, 69},
                         {99, 45, 88, 99}, {98, 69, 77, 87}};
    clrscr();
    /* 调用函数AverageAll求16个分数的平均分 */
    aveAll=AverageAll(&score[0][0],16);
    printf("The average of all courses is:\n  %f\n\n",aveAll); 
    /* 调用函数AverageCourse求4门客的平均分 */
    AverageCourse(score,aveCourse);
    for(i=0;i<4;i++)
        printf("The average of %dth course is:\n %f\n",i,aveCourse[i]);
    /* 求出序号是num的学生的成绩 */
    printf("\nPlease input the num of student(0-3):\n");
    scanf("%d", &num);
    printf("The score of the %dth student is:\n",num);
    StudentScore(score,num);
    getch();
    return 0;
}
在VC中修改为:
程序代码:
# include <stdio.h>
#include <process.h>
#include <conio.h>
/*定义一个求每门课平均成绩的函数AverageCourse
    它的形参一个是二维数组,用来传递学生成绩;
    一个是指针变量(数组名),存放每门课的平均成绩*/
void AverageCourse(float score[][4],float *avg)
{
    int i,j;
    float sum;
    for(i=0;i<4;i++)
    {
        sum=0;
        for(j=0;j<4;j++)
            sum+=score[j][i];
        avg[i]=sum/4;
    }
}
/*定义一个求总平均成绩的函数AverageAll
    它的形参一个是指针变量(数组名),传递一个首地址
    n是要计算的成绩个数*/
float AverageAll(float *score, int n)
{
    int i=0;
    float sum = 0;
    while(i<n)
    {
        sum+=score[i];
        i++;
    }
    return sum/n;
}
/*定义一个查询学生成绩的函数AStudentScore
    它的形参一个是指向数组的指针,n是要计算的学生号*/
void StudentScore(float(*score)[4], int n)
{
    int i;
    for(i=0; i<4; i++)
        printf("%4.2f ", *(*(score+n)+i));
    printf("\n");
}
int main()
{
    int num,i;
    /* 定义一个数组aveCourse来存储每门课的平均成绩,
        定义变量aveAll来存储总的平均成绩*/
    float aveAll,aveCourse[4];
    /* 定义一个数组score来存储每个学生每门课的成绩,并赋初值*/
    float score[4][4] = {{67, 78, 45, 88}, {76, 54, 90, 69},
                         {99, 45, 88, 99}, {98, 69, 77, 87}};
    system("cls");
    /* 调用函数AverageAll求16个分数的平均分 */
    aveAll=AverageAll(&score[0][0],16);
    printf("The average of all courses is:\n  %f\n\n",aveAll); 
    /* 调用函数AverageCourse求4门客的平均分 */
    AverageCourse(score,aveCourse);
    for(i=0;i<4;i++)
        printf("The average of %dth course is:\n %f\n",i,aveCourse[i]);
    /* 求出序号是num的学生的成绩 */
    printf("\nPlease input the num of student(0-3):\n");
    scanf("%d", &num);
    printf("The score of the %dth student is:\n",num);
    StudentScore(score,num);
    getch();
    return 0;
}


测试通过

2010-07-02 22:12
malpower
Rank: 1
等 级:新手上路
帖 子:26
专家分:9
注 册:2010-7-2
收藏
得分:0 
.............
TC是16位dos平台的编译器。可以做出dos header
VB自1.5(记不请了,好象是)以后就是32位windows平台编译器,做出NE header后来就改成了PE header
可以说其二存在十分大区别,根本没有可比性,不同时代的产物啊。
2010-07-03 00:53
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
vc的函数库中只保存了16个c的库函数

南国利剑
2010-07-03 03:27
快速回复:TC代码与VC的不同之处,自我总结
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043548 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved