指针的理解很抽象,对于指针的运用不太熟练,特别是指针不少时候是运用在函数里面,和函数混合起来运用,指针为参数时,就特别的乱,不知道怎么传参到函数,而后函数的传参也没学好。因此致使指针传参时不知道怎么传,传什么东西进去。html
100算法
将N个字符串按从小到大排序的冒泡排序法数组
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
在devc上调试对了才提交的,后面提交的时候把百度来的一个语句也复制上去了,后面编译错误。首先是定义的时候遇到问题,我一开始想的比较简单,就是把这个题目当作一维数组来处理,我以为行是变量,而后每行有一串字符串,后面发现这样出来的结果乱七八糟,后面去百度找答案,才用了二维数组去作。本身用的输入是scanf(“%s”,a[i])这样的,后面看百度的答案用的是gets(a[i]),了解了gets函数,能够无限读取,不会判断上限,以回车结束读取,我就用上去了。还有后面的输出,我一开始就是用的普通的printf,这样还要本身打回车符。后面用了puts解决了这个问题。有了解到puts(a)==printf("a\n")
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.函数截图
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;
}
}
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。可是不知道怎么改。。
改造前函数1和改造后的函数1
等级函数,改造前用了三个函数来区分三个等级,改造以后只用了一个函数就包含了三个等级的运算。其余好像没什么变更。。。
上一次的做业主要是卡在各类非法输入上,而后解决了大部分,一些非法输入仍是没解决,这一次是卡在了三个等级封装在一个等级函数上,每次要很少输出了一个运算符,还有就是改动以后呢,运算符是不会多出来,可是算式的随机数每次都出来的是0,并且计算也不太对,以前的话虽然多出来一个运算符,可是结果仍是对的,以前出来的是1+5/=这样的答案是6。改了好屡次bug总算少了一点。