(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");
     }
时间: 2024-07-28 16:55:57

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

c语言基础问题-小白求解c语言基础知识

问题描述 小白求解c语言基础知识 为什么点编译没出现错误,点建立出现错误 解决方案 建议百度二级c语言加油站,下载里面的vc++6.0完整版就不会出现你这样的问题了 解决方案二: include 中间的空格去掉 解决方案三: 我记得code::blocks是需要编译之后再点一次运行才可以 解决方案四: 这个应该是没有问题的,在编译一次,实在不行,卸掉vc,重新装一次

《数据驱动的网络分析》——6.2 R语言基础知识

6.2 R语言基础知识 本节是R语言的速成教程.R是一种特性丰富的语言,我也只是略懂一二.但是,在本节结束时,你就能够编写简单的R程序,在命令行上运行,并将其保存为一个库. 6.2.1 R提示符 启动R,将会显示一个窗口和命令提示符.图6-1展示了一个R控制台的例子.如图所示,控制台主要是一个大的文本窗口,顶部的一系列按钮提供了辅助功能.注意按钮栏下的两个文本框,第一个显示当前工作目录,第二个是帮助功能.R有很好的文档,所以一定要习惯使用帮助框. 在图6-1中,我输入了几条简单的命令: > s<

IOS开发之路--C语言基础知识_IOS

概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift 这么看下去还有大量的内容需要持续补充,但是今天我们从最基础的C语言开始,C语言部分我将分成几个章节去说,今天我们简单看一下C的一些基础知识,更高级的内容我将放到后面的文章中. 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): Hello World 运行过程 数据类型 运算符 常用

VBScript语言 基础知识

vbscript 一.VBScript语言概述 我们都希望制作出的网页既精致美观又生动活泼而且功能强大,用VBScript语言可以实现这一愿望. VBScript是Microsoft Visual Basic的简化版本. VBScript是特意为在浏览器中进行工作而设计的. 编程方法和Visual Basic基本相同 . VBScript只有一种数据类型,即,Variant类型. VBScript不支持Visual Basic中传统的I/O功能,即不能通过Open语句和函数在客户机上读写文件,这

第二讲 Java语言基础知识

概述: [课前思考] 1. Java中的标识符是由哪些字符组成的? 2. Java中有哪些保留字?简单数据类型包含哪几种?各种数据类型变量的定义方法和常量的表示方法及取值范围. 3. Java 中各简单数据类型间的优先次序和自动转换规则是什么? 各数据类型间在什么情况下,进行自动转换,在什么情况下使用强制转换? 4. Java中有哪些运算符?这些运算符的优先关系是怎样的? 5. Java 中有哪些控制语句?你了解每一种控制语句的语法规则吗? 6. Java 中的一维数组和多维数组在数组动态初始化

OC语言基础知识

一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的划分中,一般采取的

Go语言基础知识总结(语法、变量、数值类型、表达式、控制结构等)_Golang

一.语法结构 golang源码采用UTF-8编码.空格包括:空白,tab,换行,回车. - 标识符由字母和数字组成(外加'_'),字母和数字都是Unicode编码. - 注释: 复制代码 代码如下: /* This is a comment; no nesting */ // So is this. 二.字面值(literals)类似C语言中的字面值,但数值不需要符号以及大小标志: 复制代码 代码如下: 23 0x0FF 1.234e7类似C中的字符串,但字符串是Unicode/UTF-8编码的

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

问题12: 编写一个简单的通讯录管理系统.通讯录包括:姓名.通讯地址.邮编.联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入.显示.查找,通讯录保存到一个文件中.(50分) (提示:可能用到以下库函数: malloc(),功能:分配size字节的存储区, 用法:(类型 *)malloc(size *sizeof(你要定义的类型)):包含于<stdlib.h>库中 feof(),功能:检测文件是否结束 用法: int feof(fp) FILE *fp:包含于<stdio.h>

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

问题23:  编程解决如下问题(50  分)  .  有一个数学等式:ABCD*E=  DCBA,式中的一个字母代表一位数字,试找出所有符合上述  要求的乘积式并打印输出.   问题24: 编程解决如下问题(50  分)  .  请在整数  n=92081346718538  中删除  10个数字,  使得余下的数字按原次序组成的新数最 大.要求如下:  (1)整数  n和删除数字的个数"10"在源程序中完成赋值,程序直接输出运行结果: (2)程序结果输出先后被删除的数字(之间以逗号分