C Primer Plus 第十二章 编程练习 1-8题

第1题
#include<stdio.h>
int critic(void);
int main(void)
{
  int realResult;
  printf("Please Try To Input Any INteger:\n");
  scanf("%d",&realResult); 
  while(realResult != 56)
    realResult = critic();
  printf("You Are Right.\n");

 return 0;
}
int critic(void)
{
  int r;
  printf("Unlcuk,Tyr Again.\n");
  scanf("%d",&r);
  return r;
}


第2题
Mode.h
#ifndef MODE_H__
#define MODE_H__
double Lenght = 0;
double Gas = 0;
int Mode = 0;
#endif


12-2.c
#include<stdio.h>
#include<stdbool.h>
#include"Mode.h"
void SetMode(int m);
void GetInfo();
void ShowInfo();
int main(void)
{
  while(true)
  {
    printf("Please Input The Mode(EU/US)");
    if(scanf("%d",&Mode) != 1)
      break;
    SetMode(Mode);
    GetInfo();
    ShowInfo();
  }

  return 0;
}
    
void SetMode(int m)
{
  Mode = m;
}
void GetInfo()
{
  printf("Please Input The Lenght:");
  scanf("%lf",&Lenght);
  printf("Please Input The Gas That Had Cost:");
  scanf("%lf",&Gas);
}
void ShowInfo()
{
  if(Mode == 0)
    printf("EU : %.2lf",Gas/Lenght);
  if(Mode == 1)
    printf("US : %.2lf",Lenght/Gas);
}


第4题
#include<stdio.h>
const int times = 10;
int showTime(void);
int main(void)
{
  int ts;
  for(int i = 0 ; i < times ; ++i)
    ts = showTime();
  printf("We Take Thie Funtion %d. \n",ts);
 
 return 0;
}
int showTime(void)
{
  static int t = 0;
  return ++t;
}


第5题
myRand.h
#ifndef MYRAND_H__

#define MYRAND_H__

long int myRand(void);
void mySeed(long int newSeed);

#endif

myRand.c
#include"myRand.h"
static long int seed = 1;
long int myRand(void)
{
  seed = 123 + seed*3;
  return (unsigned int)seed%100;
}
void mySeed(long int newSeed)
{
  seed = newSeed;
}


12-5.c
#include<stdio.h>
#include<time.h>
#include"myRand.h"
const int nu = 100;
int main(void)
{
  mySeed((unsigned int)time(0));  //create a seed by time
  int rands[nu];
  for(int i = 0 ; i < nu ; ++i)
    rands[i] = myRand();

  for(int i = 0 ; i < nu ; ++i)   //sort
  {
    for(int j = i ; j < nu ; ++j)
    {
      int mid = rands[i];
      if(mid > rands[j])
      {
        rands[i] = rands[j];
        rands[j] = mid;
      }
    }
  }

  for(int i = 0 ; i < nu ; ++i)  //input
  {
    printf("%4d",rands[i]);
    if((i+1)%10 == 0)
      printf("\n");
  }

 return 0;
}


第6题
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
const int nu = 1000;
int main(void)
{
  srand((unsigned int)time(0));  //create seed;
  int Tens[10] = {0,0,0,0,0,0,0,0,0,0};
  for(int i = 0 ; i < nu ; ++i)
  {
    int mid = rand()%10 + 1;
    switch(mid)
    {
      case 1:Tens[mid-1] += 1;
             break;
      case 2:Tens[mid-1] += 1;
             break;
      case 3:Tens[mid-1] += 1;
             break;
      case 4:Tens[mid-1] += 1;
             break;
      case 5:Tens[mid-1] += 1;
             break;
      case 6:Tens[mid-1] += 1;
             break;
      case 7:Tens[mid-1] += 1;
             break;
      case 8:Tens[mid-1] += 1;
             break;
      case 9:Tens[mid-1] += 1;
             break;
      case 10:Tens[mid-1] += 1;
             break;
    }
  }

for(int i = 0 ; i < 10 ; ++i)
  printf("%3d : %3d\n",i+1,Tens[i]);

 return 0;
}


第8题
#include<stdio.h>
#include<stdlib.h>
int* make_array(int ele , int val);
void show_array(const int* ar , int Len);
int main(void)
{
  int* pa;
  int size;
  int val;
  printf("Enter The number of element:");
  scanf("%d",&size);
  while(size>0)
  {
    printf("Enter the value.");
    scanf("%d",&val);
    pa = make_array(size,val);
    if(pa)
    {
      show_array(pa,size);
      free(pa);
    } 
    printf("Enter The number of element:");
    scanf("%d",&size);
  }

  printf("Done\n");
  
 return 0;
}
int* make_array(int ele , int val)
{
  int* pt =  (int*)malloc(sizeof(int)*ele);
  for(int i =  0 ; i < ele ; ++i)
    *(pt+i) = val;
  return pt;
}
void show_array(const int* ar , int Len)
{
  for(int i = 0 ; i < Len ; ++i)
  {
    printf("%3d",*(ar+i));
    if((i+1)%8 == 0)
      printf("\n");
  }
  printf("\n");
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值