C语言博客05--指针

1.本章学习总结(2分)

1.1 思惟导图

 

1.2.1 学习体会

 

指针的理解很抽象,对于指针的运用不太熟练,特别是指针不少时候是运用在函数里面,和函数混合起来运用,指针为参数时,就特别的乱,不知道怎么传参到函数,而后函数的传参也没学好。因此致使指针传参时不知道怎么传,传什么东西进去。html

 

1.2.2 代码累计

2.PTA总分(2分)

2.1截图PTA中函数题目集的排名得分

2.2 个人总分:

 100算法

3.PTA实验做业(1分)

3.1 PTA题目1

N个字符串按从小到大排序的冒泡排序法数组

3.1.1 算法分析

char a[100][12];      定义数组长度函数

getchar();         读取下一个字符学习

int b;           定义中间变量 spa

b=strcmp(a[j],a[j+1]);    比较字符串大小长度3d

if(b>0)          a【j】的长度长于a【j+1】指针

a【j】<——>a【j+1】   对换调试

for(i=0;i<n;i++)
puts(a[i]);          输出变换后的数组htm

3.1.2 代码截图

3.1.4 PTA提交列表及说明

 

在devc上调试对了才提交的,后面提交的时候把百度来的一个语句也复制上去了,后面编译错误。首先是定义的时候遇到问题,我一开始想的比较简单,就是把这个题目当作一维数组来处理,我以为行是变量,而后每行有一串字符串,后面发现这样出来的结果乱七八糟,后面去百度找答案,才用了二维数组去作。本身用的输入是scanf(“%s”,a[i])这样的,后面看百度的答案用的是gets(a[i]),了解了gets函数,能够无限读取,不会判断上限,以回车结束读取,我就用上去了。还有后面的输出,我一开始就是用的普通的printf,这样还要本身打回车符。后面用了puts解决了这个问题。有了解到puts(a)==printf("a\n")

4.大做业(5分)

题目:实现小学四则运算

 

1.伪代码介绍函数思路


void mathcaculate 函数
各类int 各类 double
printf                输出选择界面
scanf("%d",level)            读者输入等级选择
if(level!=1&&level!=2&&level!=3)   判断等级选择是否出错
printf(" 你的输入有误,结束计算");  错误输入提示
return 错误输入以后结束计算
printf("\n");
printf(" 偏差容许在0.01以内\n\n");     给予友好提示
CreateExp(level);         调用函数,可是我不太会使用exp参数,因此这里只用了level
scanf("%d",&response)      读者输入答案
if if(s-response<=0.01)       答案符合要求
rightMessage( );         进入正确提示函数
                不然进入错误提示函数
s=0;              初始化系统随机生成的算式的结果
system("pause");
system("cls");           清屏+暂停函数
if(i==n)
break;                当i=n时直接跳出循环
printf(" 1:继续 2:退出 请选择:");      友好提示
printf(" \n ");
scanf("%d",&flag);        输入是否继续
printf("\n");
if(flag==1)           继续
continue;
else
{
printf("系统结束运算\n\n");        系统结束运算
break;
}
}
percent=right*1.00/((right+wrong)*1.00)*100;    正确率计算
printf(" 你的正确率为%.2f\n\n",percent);

2.函数截图

2.函数2

  • 伪代码介绍函数思路
    • void rightMessage( )函数 
      switch ( rand() % 4 )                                     随机生成鼓励语句
      {
      case 0:
      printf( " 你可真是个小机灵鬼!\n" ); break;
      case 1:
      printf( " 你真优秀!\n" );break;
      case 2:
      printf( " 真棒的回答!\n" );break;
      case 3:
      printf( " 这题对了别骄傲,还有下一题!\n" );break;
      void wrongMessage( void )  提示错误语句
      {
      switch ( rand() % 4 )
      {
      case 0:
      printf( "\n 答案是%.2f\n\n 这题错了,继续努力吧!\n" ,s); break;
      case 1:
      printf( "\n 答案是%.2f\n\n 错了,你能再作一题吗?\n",s );break;
      case 2:
      printf( "\n 答案是%.2f\n\n 这题错了别沮丧,还有下一题!\n",s );break;
      case 3:
      printf( "\n 答案是%.2f\n\n 你作错了哦!\n",s );break;
      }
      }

  • 截图函数代码。
  •  

3.函数3

void createExp(int level)函数

各类int定义

switch (level)                判断等级

case 1: m=10;n=4;k=3;break;                                m用于产生随机数

case 2:m=100;n=2;k=5;break;         n用于产生运算符

case 3: m=1000;n=2;k=5;break;         k用于控制循环

而后循环产生随机数放入数组str

y=rand()%n;

switch(y)

{

case 0:printf("+");s=s+str[j-1];break;

case 1:printf("-");s=s+str[j-1];break;

case 2:printf("*");s=str[j-1]*str[j+1];break;

case 3:printf("/");s=str[j-1]/str[j+1];break;

}

 这个有bug。可是不知道怎么改。。

 

4.3 与原有函数代码比较

改造前函数1和改造后的函数1

等级函数,改造前用了三个函数来区分三个等级,改造以后只用了一个函数就包含了三个等级的运算。其余好像没什么变更。。。

4.4 改进大做业总结

上一次的做业主要是卡在各类非法输入上,而后解决了大部分,一些非法输入仍是没解决,这一次是卡在了三个等级封装在一个等级函数上,每次要很少输出了一个运算符,还有就是改动以后呢,运算符是不会多出来,可是算式的随机数每次都出来的是0,并且计算也不太对,以前的话虽然多出来一个运算符,可是结果仍是对的,以前出来的是1+5/=这样的答案是6。改了好屡次bug总算少了一点。

相关文章
相关标签/搜索