(4)C言語の基礎知識を固めて、誰が手を出して、誰が収穫します.


問題13:プログラミングは以下の問題を解決する:鶏翁一、価値5;鶏母一、値打ち三;雛三、値打ち一.百元で百鶏を買って、鶏翁、鶏母、鶏雛の各幾何学を聞きますか?(20点)
問題14:プログラミング実装:2次元配列a[3][3]={1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}があり,配列aの各行の要素をその行の絶対値が最大の要素で除算し,行ごとに新しい配列を出力する.(20点)
問題15:プログラミング:x,yを区間[1,10]の整数とし,f(x,y)=(3 x-2 y)/(x+y)とし,f(x,y)を最小値とするx 1,y 1を求め,カスタム関数を用いてf(x,y)機能を実現することが要求される.(20点)
問題16:ポインタによる実装を要求する文字列内のすべての数値文字に「*」文字を付ける機能を持つ関数funを記述します.(20点)
問題17:プログラミング:既知の学生記録は学号と学習成績から構成され、N名の学生の記録は構造体配列に格納され、成績が最も低い学生を探し出し、この学生の情報を出力し、既知の学生情報は以下の通りである.(20点)
A01,81;A02,89;A03,66;A04,87;A05,77
A06,90;A07,79;A08,61;A09,80;A10,71
問題13実装コード:
/* author:    */
/* date:2011/11/02 */

#include "Stdio.h"
#include "Conio.h"

#define TOTAL 100
#define GONG 5
#define MU 3
#define XIAO 1/3

int main(void)
{
 /*            */
 int m_i,m_j,m_k;
 puts("GONG MU XIAO");
 for(m_i=1;m_i<TOTAL;m_i++)
 {
    for(m_j=1;m_j<TOTAL;m_j++)
    {
        for(m_k=1;m_k<TOTAL;m_k++)
        {
            if(((m_i+m_j+m_k)==100)&&((m_i*GONG+m_j*MU+m_k*XIAO)==100))
                printf("%d %d %d
",m_i,m_j,m_k); } } } getch(); return 0; }
問題14実装コード:
/* author:    */
/* date:2011/11/02 */

#include "Stdio.h"
#include "Conio.h"
#include "math.h"

int main(void)
{
 /*            */
 float arr_num[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};
 int m_i,m_j,abs_max;
 for(m_i=0;m_i<3;m_i++)
 {
    abs_max = 0;
    for(m_j=0;m_j<3;m_j++)
    {
        if(fabs(arr_num[m_i][m_j])>fabs(arr_num[m_i][abs_max]))
            abs_max = m_j;
    }
    for(m_j=0;m_j<3;m_j++)
    {
        arr_num[m_i][m_j]/=arr_num[m_i][abs_max];
        printf("%f ",arr_num[m_i][m_j]);
    }
    printf("
"); } getch(); return 0; }
問題15実装コード:
/* author:    */
/* date:2011/11/02 */

#include "Stdio.h"
#include "Conio.h"

double f(int x,int y);

int main(void)
{
 double m_min;
 int m_i,m_j,m_x,m_y;
 m_min = f(1,1);
 for(m_i=0;m_i<10;m_i++)
 {
    for(m_j=0;m_j<10;m_j++)
    {
        if(m_min>f(m_i+1,m_j+1))
        {
        m_min = f(m_i+1,m_j+1);
        m_x = m_i+1;
        m_y = m_j+1;
        }
    }
 }
 printf("x=%d y=%d
",m_x,m_y); getch(); return 0; } double f(int x , int y) { return ((double)(3*x-2*y)/(double)(x+y)); }
問題16実装コード:
/* anthor:    */
/* date:2011/11/01 */

#include "Stdio.h"
#include "Conio.h"

#define N 20

int main(void)
{
 /*            */
 char str[N],*s_p,*temp_p,*s_new;
 puts("please input a string:");
 gets(str);
 s_p = str;
 while(*s_p!='\0')
 {
    if((*s_p>='0')&&(*s_p<='9'))
    {
        s_new = (char*)malloc(strlen(s_p)+1);
        strcpy(s_new,s_p);
        *s_p='\0';
        strcat(str,"*");
        s_p++;
        strcat(str,s_new);
        free(s_new);
        s_new = NULL;
    }
    s_p++;
 }
 puts(str);
  getch();
  return 0;
}
問題17実装コード:
/* author:    */
/* date:2011/11/02 */

#include "Stdio.h"
#include "Conio.h"

#define N 10

typedef struct student
{
    char num[20];
    int score;
}stu;

int main(void)
{
 /*            */
  stu arr_stu[N]={{"A01",81},{"A02",89},{"A03",66},\
  {"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},\
  {"A09",80},{"A10",71}};
  int m_i,m_pos=0;
  for(m_i=0;m_i<N;m_i++)
  {
      if(arr_stu[m_i].score<arr_stu[m_pos].score)
      {
        m_pos = m_i;
      }
  }
  puts("number score");
  printf("%s %d
",arr_stu[m_pos].num,arr_stu[m_pos].score); getch(); return 0; }