标签:全局变量 str 算法 ima 难度 不为 null 复杂 and
指针是C的灵魂,用C语言却不用指针,就像找个女人开房却聊天一晚上
1.没学指针之前用数组比较多,调用函数时直接把整个数组传过去,但是这样对性能影响比较大,学了指针直接传地址就可以了。
2.指针还可以实现子函数返回多个值;还可以利用指针可以实现动态内存分配。
3.指针直接对内存操作 ,效率高,指针还用于表示和实现各种复杂的结构,从而为编写出更加高质量的程序奠定基础。
4.但是指针编写的程序也更容易隐含各式各样的错误,一不小心就有可能引起程序崩溃。
PTA总分:110 分
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,
其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
void strput(char *str) 定义输出函数
定义静态变量flag=0
定义字符指针temp = strchr(str,‘ ‘) //寻找空格地址
if temp 等于 NULL then
if strlen(str)不为0 then //str长度为零不输出
flag=1; //如果字符串长度不为零 flag=1
输出str
end if
else
strput(temp + 1) //递归
*temp = ‘\0‘ //把空格改为\0
if strlen(str)不为0并且flag等于1 then //如果字符串为0不输出 并根据flag的值选输出方式
输出" str"
else
输出str
end if
end if
主函数
定义字符数组 str[500011]
gets(str) //读取字符数组
strput(str) //调用输出函数
声明全局变量 n //n与难度有关
void CreateExp(int *result)
{
srand(time(NULL)) //随机种子
int ret //中转变量
char tistr[40]={0} //放式子
int num1,num2,num3 //放随机数
char ch1,ch2 //放运算符
随机数num1生成 //第一个数
itoa(num1, tistr, 10)//把num1接到tistr
运算符生成ret
switch(ret)
{
case 0:ch1=‘+‘;break;
case 1:ch1=‘-‘;break;
case 2:ch1=‘*‘;
if(n==1000) ch1=‘+‘; //为了给小学生减少压力,第三级没有乘除
break;
case 3:ch1=‘/‘;
if(n==1000) ch1=‘-‘; //为了给小学生减少压力,第三级没有乘除
break;
}
tistr[strlen(tistr)]=ch1; //放运算符
do
{
num2=rand()%n; //第二个数
if(num2!=0&&ch1==‘/‘&&num1!=0) //对除法做处理
{
if(((num1%num2)!=0||num1<num2))
{
num2=0;
}
}
} while(num2==0);
然后重复生成
*(tistr+strlen(tistr))=‘=‘
*(tistr+strlen(tistr))=0 //式子生成结束
switch(ch1)
{
case ‘+‘:*result=num1+num2;break;
case ‘-‘:*result=num1-num2;break;
case ‘*‘:*result=num1*num2;break;
case ‘/‘:*result=num1/num2;break;
}
switch(ch2) //解决优先级问题 (枚举)
{
case ‘+‘:*result=*result+num3;break;
case ‘-‘:*result=*result-num3;break;
case ‘*‘:
if(ch1==‘+‘) *result=num1+num2*num3;
if(ch1==‘-‘) *result=num1-num2*num3;
if(ch1==‘*‘) *result=*result*num3;
if(ch1==‘/‘) *result=*result*num3;break;
case ‘/‘:
if(ch1==‘+‘) *result=num1+num2/num3;
if(ch1==‘-‘) *result=num1-num2/num3;
if(ch1==‘*‘) *result=*result/num3;
if(ch1==‘/‘) *result=*result/num3;
break;
}
输出tistr
}
//结束函数
1.传的参数少了;
2.处理除数更全面。
1.使用指针传参数就不要return了,更何况有时候要返回几个数。
标签:全局变量 str 算法 ima 难度 不为 null 复杂 and
原文地址:https://www.cnblogs.com/1814-com/p/10107889.html