(1)巩固一下C语言基础知识,谁动手,谁收获。

参加的一个比赛里面的基础性的C语言小程序编写,大家可以练习一下,巩固一下基础知识。不要拷贝别人的代码,自己亲自动手写一下,别管是否简单。

 问题1:
  编程解决如下数学问题:有12升水,怎样利用一个8升和一个5升的容器将水分为两个6升?要求以如下格式打印出分水步骤。(20分)

   a12  b8  c5

   12   0   0

   *    *   *( “*”表示当前状态下每个容器的盛水量)

   ......

   6    6   0


问题2:
编程实现:有二维数组a[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),按行输出新数组。(20分)


问题3:
编程:设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)- cos(x)的最大值,要求使用自定义函数实现f(x)功能。(20分)


问题4:
编写函数fun,通过指针实现将一个字符串反向。要求主函数输入字符串,通过调用函数fun实现输入字符串反向。(20分)


问题5:
 已知学生三门课程基本信息如下。请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。(20分)

   姓名 数学 英语 计算机

   Mary  93   100   88

   Jone   82   90   90

   Peter   91    76   71

   Rose   100  80   92


问题6:
编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如:

   Twinkle twinkle little star 000(回车)

   twinkle  little  star

     2      1     1   (50分)

 

问题1的实现代码:
/*author:宋金时*/
/*date:2011/11/01*/

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

int main(int argc, char *argv[])
{
    int i_w[]= {12,0,0};
    printf("a12 b8 c5\n");
    while(i_w[0]!=6)
    {
        if(i_w[1]==0)
            {
                i_w[1]=8;
                i_w[0]=i_w[0]-8;
                i_w[2]=12-i_w[0]-i_w[1];
            }
        else
        {
            if(i_w[2]<5)
                {
                    if(i_w[1]>(5-i_w[2]))
                        {
                            i_w[1]-=5-i_w[2];
                            i_w[2]=5;
                            i_w[0]=12-i_w[1]-i_w[2];
                        }
                    else
                        {
                            i_w[2]+=i_w[1];
                            i_w[1]=0;
                            i_w[0]=12-i_w[1]-i_w[2];
                        }
                }
            else
                {
                    i_w[0]+=i_w[2];
                    i_w[2]=0;
                    i_w[1]=12-i_w[0]-i_w[2];
                }
            }
    printf("%d %d %d\n",i_w[0],i_w[1],i_w[2]);
    }
  
  system("PAUSE");  
  return 0;
}

问题2实现代码:

/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    float f_arr[][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}};
    float f_temp=0;
    int i,j;
    for(i=0;i<3;i++)
    {
            f_temp=f_arr[i][i];
            for(j=0;j<3;j++)
            {
                    f_arr[i][j]/=f_temp;
                    printf("%f ",f_arr[i][j]);
                    }
                    printf("\n");
            }
  
  system("PAUSE");  
  return 0;
}


问题3实现代码:

/*author:宋金时*/
/*date:2011/11/01*/


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float f(int x)
{
      return (x-sin(x)-cos(x));
}
int main(int argc, char *argv[])
{
  float f_max,f_temp=0;
  int i,pos;
  f_max=f(1);
  for(i=0;i<20;i++)
  {
         f_temp=f(i+1);
         if(f_max<f_temp)
         {
            f_max=f_temp;
            pos=i+1;
         }
  }
  printf("max is %f\npos is %d\n",f_max,pos);
  system("PAUSE");  
  return 0;
}

问题4实现代码:
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>

/*三种实现方法*/

//void fun(char* str)
//{
//     int len = strlen(str);
//     char* s_temp = (char*)malloc(len+1);
//     strcpy(s_temp , str);
//     char* s_p = s_temp+len-1;
//     while(s_p>=s_temp)
//     {
//                       *str++=*s_p--;
//                       }
//                       free(s_temp);
//                       s_temp=NULL;
//     }

//void fun(char *str)
//{
//     char* s_p = str + strlen(str)-1;
//     while(s_p>=str)
//     {
//                    printf("%c",*s_p);
//                    s_p--;
//                    }
//     }
char* fun(char* str)
{
      char* ret = str;
      char* s_p = str+strlen(str)-1;
      while(s_p>str)
      {
                    *str^=*s_p;
                    *s_p^=*str;
                    *str^=*s_p;
                    s_p--;
                    str++;
                    }
                    return ret;
      }

int main(int argc, char *argv[])
{
  char str[20];
  printf("please input a string:");
  scanf("%s",str);
  printf("%s\n",fun(str)); 
  system("PAUSE");  
  return 0;
}

问题5实现代码:
/*author:宋金时*/
/*date:2011/11/01*/

#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
        char name[20];
        float f_math,f_english,f_compute,f_ave;
        }stu;
stu g_arr[4]={{"Mary",93,100,88},{"Jone",82,90,90},{"Peter",91,76,71},{"Rose",100,100,92}};
void c_ave(stu s_arr[],int i_n)
{
     int i;
     for(i=0;i<i_n;i++)
     {
                     s_arr[i].f_ave = (s_arr[i].f_math+s_arr[i].f_english+s_arr[i].f_compute)/3;
                     }
     }
void sort(stu s_arr[],int i_n)
{
     stu* s_p[i_n],*s_temp;
     int i,j,i_num;
     float f_temp;
     for(i=0;i<i_n;i++)
     {
                     s_p[i]=&s_arr[i];
                     }
     for(i=0;i<i_n;i++)
     {
                       i_num = i;
                       for(j=i+1;j<i_n;j++)
                       {
                               if(s_p[i_num]->f_ave<s_p[j]->f_ave)
                               {
                                                                    i_num = j;
                                                                    }          
                                         }
                               if(i_num!=i)
                               {
                                           s_temp = s_p[i];
                                           s_p[i] = s_p[i_num];
                                           s_p[i_num] = s_temp;
                                           }
                                         printf("%s %f %f %f %f\n",s_p[i]->name\
                                         ,s_p[i]->f_math,s_p[i]->f_english\
                                         ,s_p[i]->f_compute,s_p[i]->f_ave);
                       }    
     }
int main(int argc, char *argv[])
{
c_ave(g_arr,4);
printf("姓名 数学 英语 计算机\n");
sort(g_arr,4); 
  system("PAUSE");  
  return 0;
}

问题6实现代码:
/*author:宋金时*/
/*date:2011/11/01*/

#include <stdio.h>
#include <stdlib.h>
#define N 10

void tongji(char string[],char str[][20],int num[]);

int main(int argc, char *argv[])
{
  char string[N*20];
  char str[N][20];
  int num[N]={0};
  printf("please input a string:");
  gets(string);
  printf("%s\n======================================================\n",string);
  tongji(string,str,num);
  system("PAUSE");  
  return 0;
}


void tongji(char string[],char str[][20],int num[])
{
     char* s_p = string;
     char (*s_pp)[20] = str;
     char temp[20];
     char* p_temp = temp;
     int i,len=0;
     int* i_temp = num;
     for(i=0;string[i]!=0;i++)
     string[i]=tolower(string[i]);
     while(*s_p!='\0'&&*s_p!='0')
     {
                  p_temp = temp;
              while(*s_p!=' '&&*s_p!='\0')
              {
                           *p_temp++=*s_p++;
                           }
                           *p_temp='\0';
                           for(i=0;i<10;i++)
                           {
                                            if(!strcmp(temp,*(str+i)))
                                            {
                                                                         num[i]++;
                                                                         break;
                                                                         }
                                            }
                                            if(i==10)
                                            {
                                                     strcpy(*s_pp,temp);
                                                    (*i_temp)+=1;
                                                    i_temp++;
                                                     s_pp++;
                                                     len++;
                                                     }
                           if(*s_p==' ')
                                      s_p++;
                    }
              for(i=0;i<len;i++)
              {
                                printf("%s ",*(str+i));
                                }
                                printf("\n");
              for(i=0;i<len;i++)
              {
                                printf("%d ",num[i]);
                                }
                                printf("\n");
     }



你可能感兴趣的:(c,Date,String,System,语言,float)